2016-06-15 10 views
0

クライアントのsqliteに初期値をAnsibleで挿入したいのですが、値はすべてのホストごとに異なります。Ansible:ホスト固有の変数値をホスト名で取得する方法

私はmyRoleの/ VARS/main.ymlを作成しました:

hostname1: 
    id: id_1 
    value: value_1 
hostname2: 
    id: id_2 
    value: value_2 

私は{{ {{ inventory_hostname }}.id }}ことによってそれを取得し、.SQLのテンプレートを挿入したいが、それは動作しません。

答えて

1

あなたはこのようなあなたの変数を変更することによって達成することができます:

clients: 
    hostname1: 
    id: id_1 
    value: value_1 
    hostname2: 
    id: id_2 
    value: value_2 

次に、あなたのテンプレートで:

​​はあなたを助ける hostname1hostname2など

希望になります

{{ clients[inventory_hostname].id }} 

1

役割にはホスト固有の構成を含めるべきではありません。代わりに、ホスト固有の構成をホストvarsに保管します。 host_varsディレクトリに、プレイブックを基準にしたすべてのホストのファイルを作成します。コンテンツ

id: id_1 
value: value_1 

このファイルとhost_vars/hostname1は自動的にAnsibleによってロードされると、あなたはすぐにVARS idvalueを使用することができます。

あなたは他のホストからローカルまたはタスクから変数にアクセスする必要がある場合は、グローバルhostvars辞書を介してそれらにアクセスすることができます。

hostvars[inventory_hostname].id 
関連する問題