linux - 使用 ansible playbook 处理目标环境(dev/prod/systest)的 YUM 包安装部署
问题描述
需要使用 ansible playbook 为目标环境(dev/prod/systest)处理不同版本/包的 YUM 包安装部署过程。注意:我已经了解了 groups_var 和 hosts_var 的概念,但不明白是否可以根据输入处理具有不同版本的多个包以在多个环境中部署
解决方案
正如您所发现的,这种分离可以通过使用group_vars
and来实现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.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
以类似的方式工作,并且可用于提供特定于清单的每个主机而不是清单中的组的变量。
推荐阅读
- php - 如何使用 Vue.js 和 PHP 在 docker 环境中设置基于令牌的身份验证
- python - Pytorch - 处理序列到序列多维 LSTM 层的就地操作
- neo4j - 有没有办法在 neo4j 中的数据库启动时重新创建图形目录?
- python - 如何使用python在子页面下附加文件
- javascript - Javascript image width is 0 on load
- python - AttributeError:模块“正则表达式”没有属性“模式”
- node.js - 无法获得与 nodejs 的 mongodb 连接
- r - 在 R 中,如何提取矩阵维度名称(或标签)并在另一个向量中列出这些名称?
- django - Django中基于条件的不同URL
- amazon-web-services - AWS lambda 容器 /bin/sh 错误:运行时已退出而未提供原因”