Ansible清单文件是否可以具有属于不同操作系统的主机?
让我们说,我们想在多台机器(一组机器)上部署Java Web应用程序,其中每台机器的操作系统都不同于其余机器。我们可以写一本可以在每台机器上设置Java Web应用程序的剧本吗?
方法是否如下? 1.在剧本中,检查操作系统类型(如果条件),然后在每个if块中,相应地执行安装步骤(应用程序设置步骤)。如果有任何常见的安装步骤,则将那些任务放在OS类型检查条件之外(如果有)。
答案 0 :(得分:1)
是的,您可以在清单中混合使用OS实例。 您可以通过为每个任务添加“何时”条件来处理剧本中的部署,例如:
- name: "Install the Python bindings for SELinux, for Ansible."
yum: name=libselinux-python state=present
when: ansible_os_family == "RedHat"
或者在您角色的task文件夹中,为每个操作系统创建不同的文件,并且在主字段中,您可以使用类似以下内容的文件:
- include: Debian.yml
when: ansible_os_family == "Debian"
- include: RedHat.yml
when: ansible_os_family == "RedHat"
- include: Windows.yml
when: ansible_os_family == "Windows"