2016-08-17 39 views
4

我有一个剧本与包括:Ansible多个包括“块”

- include: include1.yml 
    when: doinclude | default('true') 
- include: include2.yml 
    when: doinclude | default('true') 

是否有可能不重复的条件?我试过块,但看起来块不能在这种情况下使用:

- block: 
    - include: include1.yml 
    - include: include2.yml 
    when: doinclude | default('true') 

有没有什么办法做到这一点?我也尝试过类似

- name: test 
    hosts: all 
    tasks: 
    - block: 
     - include: include1.yml 
     - include: include2.yml 
    when: doinclude | default('true') 

这也不起作用

回答

6

该语法同样适用于ansible 2.1.1精(精确缩进):

--- 
- hosts: localhost 
    tasks: 
    - block: 
     - include: include1.yml 
     - include: include2.yml 
     when: doinclude | default('true') 
+0

我也试过这个语法,但我然后得到'错误!在任务中未检测到任何操作https://groups.google.com/forum/#!msg/ansible-project/BjycVAVlUpI/qVdiWycuAgAJ 我正在使用2.1.0,并且由于另一个问题无法升级到2.1.1。 – user140547

+0

@ user140547你是否包含任务或播放? –

+0

以及我也包括戏剧。其实,我没有写那个剧本。所以,经过一番搜索,我不应该包括剧本? (然后,整个剧本的结构将是错误的,但它似乎仍然在大多数情况下工作) – user140547

0

“包括”很快被折旧也是如此。最新的和最好的(> 2.4我认为)是“import_task”

- name: create/update security group, ec2, and elb 
    block: 
    - import_tasks: security_group.yaml 
    - import_tasks: ec2.yaml 
    - import_tasks: elb.yaml 
    when: STATE == 'present' 
+0

在这种情况下,您可能想要使用'include_tasks'而不是'import_tasks'。 –