2016-05-06 12 views
0

を置換するために必要ヘッダ(mville):Ansibleは変数でJSON形式のリストは、私は、このJSONファイルを持っている

[mville] 
swarm000 ansible_host=192.168.100.11 
swarm001 ansible_host=192.168.100.12 
swarm002 ansible_host=192.168.100.14 

[000servers] 
swarm000 ansible_host=192.168.100.11 

[001servers] 
swarm001 ansible_host=192.168.100.12 

[002-00xservers] 
swarm002 ansible_host=192.168.100.14 

ので、ここでこの行:

"retry_join": ["192.168.100.11","192.168.100.12","192.168.100.14"], 

はFILを取得する必要があります私はどれくらいのホストがあるのか​​分からないので、正しい場所にカンマを置く必要があります。

私はansibleにこのようなループのために行う方法を知っている:

{% for host in groups['000servers'] %} 
*.info;mail.none;authpriv.none;cron.none @{{ hostvars[host]['ansible_host'] }} 
{% endfor %} 

私はそれを適用することができますか?

ありがとうございます!

+0

(私は不完全なカットアンドペーストの後にそれを入力しているjsonの上にある中括弧が一致していません。私の問題の原因ではありません) – DarthShiznit

+0

この正確な問題を試したことはありますか?あなたは期待された成果の代わりに何を得ましたか?あるいは、別のものではあるが、あなたが実演したホストをループすることで何が欠けていますか? – ydaetskcoR

答えて

4

filters available in Ansibleをご覧ください。特にto_jsonフィルタ

{{ some_variable | to_json }} 

またはjoinフィルタ

{{ list | join(" ") }} 

あなたは正しくこれらの値をテンプレート助けることができるはずです。

+0

私は正しい軌道に乗ってくれてありがとうございました。これは私を閉じてくれました: {%set allhosts = []%} {グループのホスト[%mobile]] ansible_host%} {%set _ = allhosts.appendホスト)%} {%ENDFOR%} { "retry_join":[{{ '\ "' + allhostsは|加入( '\ " \"' + '\"')}}]、 しかし、私はそのサイトにDNSを持っていないので、二重引用符を持つ必要があったので、私はansible_hostからIPアドレスを取得する必要がありました。 – DarthShiznit

1

私は領事を建てるときに同じ問題がありました。 1つのこと(話題は少しありますが、共有する価値があります)私はあなたにお勧めします:小さなテンプレートを作成します。あなたは領事サーバー用のテンプレートと結合リストのテンプレートを1つ持っているとします。それはあなたの人生を楽にしてくれるでしょうし、少し柔軟です。領事はアルファベット順にファイルを含める。

ここにあなたの質問に答えるためには、私がやったことだ:

// Join local DC agents 
{ 
    "start_join": [ {%for host in groups.dc1 %} {% if hostvars[host]['inventory_hostname'] != inventory_hostname %} "{{hostvars[host]['inventory_hostname']}}" {% if not loop.last %}, {%endif%}{%endif%}{%endfor%}] 
} 

注意が、私はホスト名を使用しますが、あなたは単にあなたが私を望むなら、私に知らせて、助けansible_host

希望で​​を変更することができますより具体的なものにすること。

+0

お元気ですか。私はこれを永遠に働いた。FWIWこれは私のために何をしたのですか: { "retry_join":{{ホストのgroups.mville%} "{{hostvars [host] ['ansible_host']}}" {%if not loop 。%%endif%}、 ' 私の評判が低すぎますが、これは私のためにできました。 – DarthShiznit

+0

これはあなたを助けてくれてうれしいです。 upvoteできない場合でも答えを受け入れることができるはずです! – shaps

関連する問題