Ansible 我可以根据基本机器运行剧本吗

Ansible 我可以根据基本机器运行剧本吗,ansible,Ansible,假设我有Ubuntu和CentOS机器的Nagios安装剧本。如何根据基本机器调用剧本 当它是一台ubuntu机器时,我想加载nagios_ubuntuplaybook,而nagios_centosplaybook for centos。您可以这样做: include: ubuntu.yml when: ansible_distribution == "Debian" include: centos.yml when: ansible_distribution == "Centos"

假设我有Ubuntu和CentOS机器的Nagios安装剧本。如何根据基本机器调用剧本


当它是一台ubuntu机器时,我想加载
nagios_ubuntu
playbook,而
nagios_centos
playbook for centos。

您可以这样做:

 include: ubuntu.yml
 when: ansible_distribution == "Debian"

 include: centos.yml
 when: ansible_distribution == "Centos"
请注意: 关于这一点:

首先,您不能为主机添加playbook。剧本中定义了
主机
指令。看

因此,您可以为不同的操作系统设置包含的任务,在这种情况下,您可能希望在playbook中使用dynamic include语句:

- include_tasks: "nagios_{{ ansible_os_family | lower }}.yml"
---
- hosts: all
  tasks:
     - group_by:
         key: nagios_{{ ansible_os_family | lower }}

- import_playbook: nagios_centos.yml

- import_playbook: nagios_ubuntu.yml

您可以使用
group\u by
一节中描述的示例

您仍然需要修改剧本本身,以包含适当的
hosts
声明,例如:

nagios_centos.yml

---
- hosts: nagios_centos
# ... the rest of the play
---
- hosts: nagios_ubuntu
# ... the rest of the play
nagios_ubuntu.yml

---
- hosts: nagios_centos
# ... the rest of the play
---
- hosts: nagios_ubuntu
# ... the rest of the play
主要剧本:

- include_tasks: "nagios_{{ ansible_os_family | lower }}.yml"
---
- hosts: all
  tasks:
     - group_by:
         key: nagios_{{ ansible_os_family | lower }}

- import_playbook: nagios_centos.yml

- import_playbook: nagios_ubuntu.yml

由于
hosts
定义,只有一个剧本可以有效运行。

在ansible的上下文中,“加载”对您意味着什么?在ansible 2.4中,您希望
import\u剧本:
而不是
include: