2017-12-21 4 views
1

with_items:Ansibleホストの繰り返しIPをサポートしていません在庫YMLは、次の

store_controller: 
    hosts: 
     SERVER: 
     ansible_host: "{{ STORE_CTL }}" 
     mgmt_ip: "{{ ansible_host }}" 
    global_mgmt: 
    hosts: 
     SERVER: 
     ansible_host: "{{ NOMAD_SERVER }}" 
     mgmt_ip: "{{ ansible_host }}" 
    node_exporter: ##if comment the part from here to end, it's ok#### 
    hosts: 
     "{{ item }}": 
     ansible_host: "{{ item }}" 
     mgmt_ip: "{{ ansible_host }}" 
    with_items: 
     - "172.7.7.1" 
     - "172.7.7.9" 
     - "172.7.7.12" 

をしかしAnsibleは私が使用できません 'ここwith_items' を。それは、ホスト上のイテレータをサポートしていないようです。

私の3つのIPのグループnode_exporterでホストアレイを定義するにはどうすればよいですか?

+0

私の.ymlファイルにいくつかの類似したホストを定義したいだけです。それぞれには、 'ansible_host'に等しいvar 'mgmt_ip'があります。 – cavan

+0

私は既にこの部分の前に 'ansible_host'を使用しています(この部分がない場合は大丈夫です)。 – cavan

+0

node_exporterから "{{item}}"というansible_hostを削除した場合、それは問題ありません。 – cavan

答えて

1

あなたが定義する必要があるのはこれです:

node_exporter: 
    hosts: 
    172.7.7.1: 
    172.7.7.9: 
    172.7.7.12: 
    vars: 
    mgmt_ip: "{{ inventory_hostname }}" 

説明

mgmt_ipは、それが使用されている時に解決される唯一のテンプレート(文字列値)を定義します。

ターゲットマシンごとに​​(したがってmgmt_ip)は、現在実行中のホストのIPアドレスに解決されます。

ansible_hostを使用してインベントリホスト名と同じ値を割り当てると、空の動作になるため、その必要はありません。

私はそれがコードに価値/明快さをもたらすとは思っていませんが、それはあなたのために働いていたとコメントして以来、それは複数のホストでそれを達成する方法です。エイリアスmgmt_ip〜​​を作成するだけです。質問の前提に関する


:YAMLのため

with_items:は、辞書のキー名(文字列値)です。それを使用するかどうかは、Ansibleです。

タスクで指定されている場合は意味を持ちます。

それ以外の場合は無視します(このキーを使用しない)か、エラーを報告します。

-1

コードをすばやく見て、インデントの問題があります。 "{{item}}"の前に2スペースを追加してください:

関連する問題