2016-09-13 29 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

這聽起來有點複雜,我有一種感覺,如果你退後一步,你可能會想到更好的解決方案。然而,根據所提供的信息,我會說將邏輯移入一個變量,然後使用該變量作爲目的地。

所以你有一些瓦爾文件(如角色違約或環境組瓦爾,甚至是包括瓦爾文件)是這樣的:

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

然後就在你的任務如下:

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

是的,這是最好的辦法。我只是爲它創建了一個環境變量,並在構建過程中注入了它。謝謝你的提示! –