[英]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_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
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.