Ansible 我可以根据基本机器运行剧本吗
假设我有Ubuntu和CentOS机器的Nagios安装剧本。如何根据基本机器调用剧本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机器时,我想加载
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: