首页 > 解决方案 > 使用 ansible playbook 处理目标环境(dev/prod/systest)的 YUM 包安装部署

问题描述

需要使用 ansible playbook 为目标环境(dev/prod/systest)处理不同版本/包的 YUM 包安装部署过程。注意:我已经了解了 groups_var 和 hosts_var 的概念,但不明白是否可以根据输入处理具有不同版本的多个包以在多个环境中部署

标签: linuxdeploymentansible

解决方案


正如您所发现的,这种分离可以通过使用group_varsand来实现host_vars。这些是相对于库存文件的路径加载的。

如下所示的简单示例任务将在开发生产环境中安装不同的版本,如下所述。

示例playbook1.yml

- hosts: appservers

  tasks:
  - name: install app-a
    yum:
      name: 'app-a-{{ app_a_version }}'
  - name: install app-b
    yum:
      name: 'app-b-{{ app_b_version }}'

考虑分隔每个环境的清单的示例目录结构:

dev/hosts
prod/hosts
systest/hosts

每个清单文件将包含该环境的主机/组。

开发环境:

示例dev/hosts

[appservers]
appserver1.dev
appserver2.dev

然后我们可以在以下环境中拥有特定于该环境的变量dev/group_vars/appservers.yml

---
app_a_version: 1.1
app_b_version: 5.5

将安装app-a-1.1app-b-5.5运行时:

ansible-playbook playbook1.yml -i dev/hosts

生产环境:

示例prod/hosts

[appservers]
appserver1.prod
appserver2.prod

和变量定义在prod/group_vars/appservers.yml

app_a_version: 1.0
app_b_version: 5.0

但在 prod 中,它将安装app-a-1.0app-b-5.0运行时:

ansible-playbook playbook1.yml -i prod/hosts

host_vars以类似的方式工作,并且可用于提供特定于清单的每个主机而不是清单中的组的变量。


推荐阅读