2016-08-17 82 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'。 –