简体   繁体   English

我如何优化Ansible的剧本

[英]How can i optimize ansible's playbook

At this time my playbook looks like this: 这时我的剧本看起来像这样:

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

Can I iterate with item? 我可以迭代项目吗? Desiderata: Desiderata:

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

Thanks 谢谢

Ref: Roles doc page 参考:“ 角色”文档页面

You cannot do it with the classic way of calling role (like in you above example). 您不能使用经典的角色调用方式来做到这一点(就像上面的示例一样)。 But this would be possible with import_role and include_role available since ansible 2.4. 但是从ansible 2.4 import_role ,可以使用import_roleinclude_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

Meanwhile, it might be easier and even more effective to modify your role to directly accept a list of jdks to install so the loop takes place directly in the relevant tasks. 同时,修改角色以直接接受要安装的jdks列表可能更容易甚至更有效 ,因此循环直接发生在相关任务中。 You could then call it with something like: 然后,您可以使用类似以下内容的名称进行调用:

- name: playbook to install java
  hosts: my_hosts

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM