对于目标环境(dev/prod/systest),需要使用ansible剧本处理不同版本/包的YUM包安装部署过程。注意:我已经了解了groups_var和hosts_var的概念,但不明白是否可以根据输入在多个环境中处理不同版本的多个包。
发布于 2020-09-21 04:23:21
正如您所发现的,这种分离可以通过使用group_vars
和host_vars
来实现。这些文件是根据库存文件的路径加载的。
下面这样的简单示例任务将在、dev、和prod环境中安装不同的版本,如下所述。
示例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.1
和app-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.0
和app-b-5.0
,如下所示:
ansible-playbook playbook1.yml -i prod/hosts
host_vars
以类似的方式工作,并且可以用于提供特定于库存的每个主机的变量,而不是清单中的组。
https://stackoverflow.com/questions/63985294
复制相似问题