【问题标题】:How can i optimize ansible's playbook我如何优化ansible的剧本
【发布时间】:2020-01-18 09:54:39
【问题描述】:

此时我的剧本是这样的:

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

我可以迭代项目吗? 需求:

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

谢谢

【问题讨论】:

    标签: loops variables ansible roles


    【解决方案1】:

    参考:Roles doc page

    你不能用经典的调用角色的方式来做到这一点(就像你上面的例子)。但是,从 ansible 2.4 开始,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
    

    同时,修改您的角色以直接接受要安装的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多