2016-09-13 8 views
0

私は理想的にはファイル内のブロックを更新する演劇を書いていますが、目的地のファイルは何らかの条件に基づいて20個のファイルがあります。条件付きの慣用的な目的地/目的地

- name: update files 
    hosts: localhost 
    user: myself 
    tasks: 
    - blockinfile: 
     dest: /home/me/file1 
     when: {{ condition }} == True 
     dest: /home/me/file2 
     when: {{ condition2 }} == True 

     ... 

     block: | 
     data 
     data 

     ... 

これを行うための慣用的または適切な方法があります:これは間違いなく間違っているが、私がしたいことのようなものがありますか?

答えて

1

これはちょっと畳み込まれていると思いますが、私があなたが問題から後退すれば、おそらくよりよい解決策を考えることができると感じています。しかし、提供された情報では、ロジックを変数に移動し、その変数をデスティネーションとして使用するといいでしょう。

だから、あなたには、いくつかのVARSファイル(そのような役割のデフォルトや環境グループなども含まVARSファイルをvarsのか)があるだろう。このような:

rolename_blockinfile_dest: '{% if condition %}/home/me/file1{% elif condition2 %}/home/me/file2{% endif %}' 

そしてちょうどあなたのタスクでは、以下の項目を

... 
    tasks: 
    - blockinfile: 
     dest: '{{ rolename_blockinfile_dest }}' 
... 
+0

ええ、それはそれを行うためのスマートな方法だった。私はちょうどそれのための環境変数を作成し、ビルドプロセス中にそれを注入する。ヒントをありがとう! –

関連する問題