Ansible 如果条件为true,则运行一些include yml文件

Ansible 如果条件为true,则运行一些include yml文件,ansible,Ansible,我有一些ubuntu和centos的playbook,我想用main.yml检查什么时候:ansible_os_family=='RedHat'或ansible_distribution=='centos',运行playbooks(就像一些ans many:-)) 当我跑步时: -include: centos-xxx.yml -include: centos-xaa.yml -include: centos-xsss.yml 它将运行所有这些 基本上我想,剧本将运行,如果满足条件 我没有找到

我有一些ubuntu和centos的playbook,我想用
main.yml
检查
什么时候:ansible_os_family=='RedHat'或ansible_distribution=='centos'
,运行playbooks(就像一些ans many:-))

当我跑步时:

-include: centos-xxx.yml
-include: centos-xaa.yml
-include: centos-xsss.yml
它将运行所有这些

基本上我想,剧本将运行,如果满足条件

我没有找到任何说明如何运行include:的文档,如果可能的话,我会尽量不让每个include都包含一个任务。

您可以使用来包含文件。事实上,这有点普遍

- include: centos-xxx.yml
  when: ansible_os_family == 'RedHat' or ansible_distribution == 'Centos'
- include: debian-xxx.yml
  when: ansible_distribution == 'Debian'
根据您的评论-如果您想按顺序运行它们,您有两个选项。下面是直截了当的答案:

- include: centos-a.yml
  when: ansible_os_family == 'RedHat' or ansible_distribution == 'Centos'
- include: centos-b.yml
  when: ansible_os_family == 'RedHat' or ansible_distribution == 'Centos'
- include: centos-c.yml
  when: ansible_os_family == 'RedHat' or ansible_distribution == 'Centos'
- include: centos-d.yml
  when: ansible_os_family == 'RedHat' or ansible_distribution == 'Centos'
或者,您可以这样做:

- include: centos.yml
  when: ansible_os_family == 'RedHat' or ansible_distribution == 'Centos'
和内部
centos.yml

- include: centos-a.yml
- include: centos-b.yml
- include: centos-c.yml
- include: centos-d.yml

您好,谢谢您的回答,但我的意图是这样的-姓名:检查centos-包括:centos-A.yml-包括:centos-b.yml-包括:centos-c.yml-包括:centos-d.yml-包括:centos-e.yml当:ansible_os_family=='RedHat'或ansible_distribution=='centos'时,我希望所有这些包括都将在EI的订单A添加了一些示例,@NoamGreenberg。看来您在Ansible 2.0中无法再这样做了任何替代方案?1.9.4中至少有一个问题是,即使条件失败,文件和模块也包括在内。因此,如果问题在于导入例如
yum
模块,但计算机没有安装yum,则无论如何都会失败。注意:上面的所有内容都将包括在内。上面的机制是将
when:…
追加到每个
include:…
行中的每个任务。