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

是的,这是最好的办法。我只是为它创建了一个环境变量,并在构建过程中注入了它。谢谢你的提示! –