2016-09-01 12 views
1

ホスト名に基づいてそのファイルにない場合は、行を追加する必要があります。不可能 - ライン入力ファイルモジュールで三項関数を使用する方法は?

それは意味:

  • をホスト名がabcであるならば、ライン"ABC"/etc/app.conf
  • に行くそうでないライン"XYZ"/etc/app.confファイルになります。

これにはどのようなアプローチが適していますか?
jinja2テンプレートを使用するのか、またはプレイブックにロジックを定義しますか?
両方ともお勧めします。

+0

これは、StackOverflowの仕組みではありません。私たちはあなたのためのコードを書いていませんが、特定の技術的問題を解決することをお手伝いします。これまでに試したことを私たちに見せて、どこに問題があるのか​​を明確にしてください。エラーはありますか?ドキュメントの一部が不明瞭ですか? – larsks

+0

ありがとうlarsks、私はlineinfileモジュールで三項フィルタを使いたいが、それを作ることができず、構文に関連する問題がある。 – Ben

答えて

3

これは本当に好みの問題で、出力にログインする必要があります。

- name: Ensure line ABC is configured for host ABC 
    lineinfile: 
    dest: /etc/abc.conf 
    line: "ABC" 
    when: inventory_hostname == "abc" 

- name: Ensure line XYZ is configured for hosts other than ABC 
    lineinfile: 
    dest: /etc/abc.conf 
    line: "XYZ" 
    when: inventory_hostname != "abc" 

または1つのタスクで三フィルタを使用します:私は、最も簡単になり、以下を使用して、このような簡単な作業のために推測

- lineinfile: 
    dest: /etc/abc.conf 
    line: "{{ (inventory_hostname == 'abc') | ternary ('ABC','XYZ') }}" 

場合は必要な設定ファイルより変更またはあなたがしたいと思います設定があなたが望むのとまったく同じであることを確認するには、テンプレートファイルが適しています。

+0

thnaks techrf、lineinfileで3進フィルタを使用する方法はありますか? – Ben

+0

@Benはい、更新された回答をご覧ください。 – techraf

+0

ありがとう@techraf – Ben

関連する問題