ansible - Ansible 清单文件可以包含属于不同操作系统的主机吗?
问题描述
Ansible 清单文件可以包含属于不同操作系统的主机吗?
假设我们想在多台机器(一组机器)上部署 Java Web 应用程序,其中每台机器的操作系统与其他机器不同。我们能否编写一个单独的剧本来在每台机器上设置 Java Web 应用程序?
方法会如下吗?1. 在 playbook 中,检查操作系统类型(if 条件),然后在每个 if 块中,相应地执行安装步骤(应用程序设置步骤)。如果有任何常见的安装步骤,则在操作系统类型检查条件(如果条件)之外执行这些任务。
解决方案
是的,您可以在库存中拥有混合操作系统实例。您可以通过为每个任务添加“何时”条件来处理剧本中的部署,例如:
- 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"
推荐阅读
- python - 没有 $DISPLAY 环境变量
- string - (MASM32) 使用调用 ReadString 读取以空格分隔的整数值时,有没有办法将它们视为单独的整数?
- php - 不同的htaccess目录和子目录重定向
- c - 字符位图有一些标准吗?
- flutter - 我不明白 Flutter 中 Theme 类的意义
- javascript - 基于条件和对象值的对象的Javascript数组计数
- python - 从任务中引发忽略不会确认消息
- java - 检查 BigInteger 是否为完美正方形的复杂性
- android - 片段未与片段管理器关联。(对话片段)
- java - 我想写一个代码来回答一个无限系列,它有交替加减运算。我看不到错误,在我的代码中