【问题标题】: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_role 和 include_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