2017-12-07 5 views
1

私は何をしようとしているのかをよく理解できません。 だから、僕はまっすぐにジャンプします を私はhostsファイルがあります。可能な配列からすべての名前付き値を抽出する

[jvbservers] 
jvb0 ansible_host=serverA 
jvb1 ansible_host=serverB 

等...

をそして、私はjvbserversグループ内のサーバーのリストが欲しいです。私が今までに思いついたのは、少しOTTだと感じています。私がしたいように

set_fact: 
    jvb_names: "{{ jvb_names|default([]) + [ hostvars[groups.jvbservers[item|int]].ansible_host ] }}" 
    with_sequence: start=0 end="{{groups.jvbservers|length-1}}" 

は私に結果を与える:

ok: [localhost] => { 
    "jvb_names": [ 
     "serverA", 
     "serverB" 
    ] 
} 

はこの賢明ですか?

hostvars[groups.jvbservers[*]].ansible_host 

答えて

-1

(「*」すべての有効なオプションをパターンマッチングだろうどこObvsその特定の構文は存在しません。!)があります:ような何かを行うには滑らかな印象の方法があるはずのようにそれは感じていますあなたはこれを試してみました?:

- name: show all the hosts matching jvbservers 
    debug: 
    msg: "{{ item }}" 
    with_inventory_hostnames: 
    - all: jvbservers 

https://docs.ansible.com/ansible/devel/plugins/lookup/inventory_hostnames.html

+0

インベントリ名と 'ansible_host'は2つの異なるものです。 –

+0

私はあなたが何を言っているのか見ています。 –

+0

これはまさにこの問題です。インベントリ名またはansible_hostは必ずしも実際のホスト名である必要はありません。スプリットホライゾンDNSとローカルホストファイルなどでは、 "正しい"値を見つけるのは難しいです。 この例はちょっと工夫されていますが、実際には、セットアップボックスからFQDNを取得する必要があります。 –

1

をあなたはextractフィルタをチェックすることもできます。

{{ groups['jvbservers'] | map('extract', hostvars, 'ansible_host') | list }} 
関連する問題