Loops 如何优化ansible';s剧本

Loops 如何优化ansible';s剧本,loops,variables,ansible,roles,Loops,Variables,Ansible,Roles,此时,我的剧本如下所示: - role: co_java vars: co_java_version: jdk1.6.0_45 - role: co_java vars: co_java_version: jdk1.8.0_161 我可以用item进行迭代吗? 德西德拉塔: - role: co_java vars: co_java_version: {{ item }} w

此时,我的剧本如下所示:

    - role: co_java
      vars:
        co_java_version: jdk1.6.0_45
    - role: co_java
      vars:
        co_java_version: jdk1.8.0_161
我可以用item进行迭代吗? 德西德拉塔:

    - role: co_java
      vars:
        co_java_version: {{ item }}
      with_items: 
         - jdk1.6.0_45
         - jdk1.8.0_161
谢谢

参考:

您无法使用调用角色的经典方式(如上面的示例中所示)完成此操作。但这在ansible 2.4提供的
import\u role
include\u role
中是可能的

- name: playbook to install java
  hosts: my_hosts

  tasks:
    - name: Include role to install java versions
      include_role:
        name: co_java
      vars:
        co_java_version: "{{ item }}"
      loop:
        - jdk1.6.0_45
        - jdk1.8.0_161
同时,修改您的角色以直接接受要安装的JDK列表可能更容易、更有效,以便直接在相关任务中进行循环。然后,你可以用以下方式来称呼它:

- name: playbook to install java
  hosts: my_hosts

  roles:
    - role: co_java
      vars:
        co_java_version:
          - jdk1.6.0_45
          - jdk1.8.0_161
参考:

您无法使用调用角色的经典方式(如上面的示例中所示)完成此操作。但这在ansible 2.4提供的
import\u role
include\u role
中是可能的

- name: playbook to install java
  hosts: my_hosts

  tasks:
    - name: Include role to install java versions
      include_role:
        name: co_java
      vars:
        co_java_version: "{{ item }}"
      loop:
        - jdk1.6.0_45
        - jdk1.8.0_161
同时,修改您的角色以直接接受要安装的JDK列表可能更容易、更有效,以便直接在相关任务中进行循环。然后,你可以用以下方式来称呼它:

- name: playbook to install java
  hosts: my_hosts

  roles:
    - role: co_java
      vars:
        co_java_version:
          - jdk1.6.0_45
          - jdk1.8.0_161