首页 > 解决方案 > Ansible 清单文件可以包含属于不同操作系统的主机吗?

问题描述

Ansible 清单文件可以包含属于不同操作系统的主机吗?

假设我们想在多台机器(一组机器)上部署 Java Web 应用程序,其中每台机器的操作系统与其他机器不同。我们能否编写一个单独的剧本来在每台机器上设置 Java Web 应用程序?

方法会如下吗?1. 在 playbook 中,检查操作系统类型(if 条件),然后在每个 if 块中,相应地执行安装步骤(应用程序设置步骤)。如果有任何常见的安装步骤,则在操作系统类型检查条件(如果条件)之外执行这些任务。

标签: ansibleansible-inventory

解决方案


是的,您可以在库存中拥有混合操作系统实例。您可以通过为每个任务添加“何时”条件来处理剧本中的部署,例如:

- name: "Install the Python bindings for SELinux, for Ansible."
  yum: name=libselinux-python state=present
  when: ansible_os_family == "RedHat"

或者在您角色的任务文件夹中为每个操作系统创建不同的文件,在主字段中您可以使用如下内容:

- include: Debian.yml
  when: ansible_os_family == "Debian"

- include: RedHat.yml
  when: ansible_os_family == "RedHat"

- include: Windows.yml
  when: ansible_os_family == "Windows"

推荐阅读