检查Ansible include中的多个条件

检查Ansible include中的多个条件,ansible,ansible-role,Ansible,Ansible Role,我的主要职责是.yml more tasks/main.yml --- - include: ssl_pull.yml when: ACTION == 'renewal' - include: ssl_gen.yml when: ACTION == 'generate' - include: ssl_push.yml when: ACTION == 'install' - include: ssl_install.yml when: ACTION == 'install' 我

我的主要职责是.yml

more tasks/main.yml
---

- include: ssl_pull.yml
  when: ACTION == 'renewal'
- include: ssl_gen.yml
  when: ACTION == 'generate'
- include: ssl_push.yml
  when: ACTION == 'install'
- include: ssl_install.yml
  when: ACTION == 'install'
我想让用户能够通过多种操作,如续订和安装,因此它包括

- include: ssl_pull.yml
- include: ssl_push.yml
- include: ssl_install.yml
我知道如何为ACTION变量传递一个值,如下所示

ansible-playbook -v -i  /web/hosts.txt site.yml -e "ACTION=renewal"
如何传递一个或多个值并基于传递的值包含文件

您能建议我需要对命令/yml进行哪些更改吗?

是您想要的吗

您可以将任务标记为:

- include: ssl_pull.yml
  tags: renewal

- include: ssl_push.yml
  tags: install

- include: ssl_install.yml
  tags: install
然后使用
-t
参数指定标记:

ansible-playbook -v -i  /web/hosts.txt site.yml -t "renewal,generate"

如果由于某些原因不能使用标记,我们也可以对vars执行类似的操作

将变量指定为逗号分隔的值:

ansible-playbook -v -i  /web/hosts.txt site.yml -e "ACTIONS=renewal,generate"
并更新条件以按逗号拆分变量:

- include: ssl_pull.yml
  when: "'renewal' in ACTIONS.split(',')"
你在找什么

您可以将任务标记为:

- include: ssl_pull.yml
  tags: renewal

- include: ssl_push.yml
  tags: install

- include: ssl_install.yml
  tags: install
然后使用
-t
参数指定标记:

ansible-playbook -v -i  /web/hosts.txt site.yml -t "renewal,generate"

如果由于某些原因不能使用标记,我们也可以对vars执行类似的操作

将变量指定为逗号分隔的值:

ansible-playbook -v -i  /web/hosts.txt site.yml -e "ACTIONS=renewal,generate"
并更新条件以按逗号拆分变量:

- include: ssl_pull.yml
  when: "'renewal' in ACTIONS.split(',')"
设计用于执行此类任务选择


如果你真的不想使用标签,你可以在额外的变量中传递一个JSON对象:

ansible-playbook --inventory-file /web/hosts.txt site.yml \
                 --extra-vars '{"ACTIONS": ["renewal", "install"]}'
然后针对阵列进行测试:

- include: ssl_pull.yml
  when: "'renewal' in ACTIONS"
设计用于执行此类任务选择


如果你真的不想使用标签,你可以在额外的变量中传递一个JSON对象:

ansible-playbook --inventory-file /web/hosts.txt site.yml \
                 --extra-vars '{"ACTIONS": ["renewal", "install"]}'
然后针对阵列进行测试:

- include: ssl_pull.yml
  when: "'renewal' in ACTIONS"

这不是实现标记的目的吗?这不是实现标记的目的吗?My site.yml没有包含。它有三个角色,每个角色都是main.yml有include语句。没关系。你太棒了。。感谢您访问tipMy站点。yml没有包含。它有三个角色,每个角色都是main.yml有include语句。没关系。你太棒了。。谢谢你的提示