发布
社区首页 >问答首页 >使用ansible剧本处理目标环境(dev/prod/systest)的YUM包安装部署

使用ansible剧本处理目标环境(dev/prod/systest)的YUM包安装部署
EN

Stack Overflow用户
提问于 2020-09-21 02:03:24
回答 1查看 35关注 0票数 0

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-21 04:23:21

正如您所发现的,这种分离可以通过使用group_varshost_vars来实现。这些文件是根据库存文件的路径加载的。

下面这样的简单示例任务将在、dev、prod环境中安装不同的版本,如下所述。

示例playbook1.yml

代码语言:javascript
代码运行次数:0
复制
- 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 }}'

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

代码语言:javascript
代码运行次数:0
复制
dev/hosts
prod/hosts
systest/hosts

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

开发环境:

示例dev/hosts

代码语言:javascript
代码运行次数:0
复制
[appservers]
appserver1.dev
appserver2.dev

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

代码语言:javascript
代码运行次数:0
复制
---
app_a_version: 1.1
app_b_version: 5.5

将在运行时以下列方式安装app-a-1.1app-b-5.5

代码语言:javascript
代码运行次数:0
复制
ansible-playbook playbook1.yml -i dev/hosts

产品环境:

示例prod/hosts

代码语言:javascript
代码运行次数:0
复制
[appservers]
appserver1.prod
appserver2.prod

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

代码语言:javascript
代码运行次数:0
复制
app_a_version: 1.0
app_b_version: 5.0

但是在prod中,它将在运行时安装app-a-1.0app-b-5.0,如下所示:

代码语言:javascript
代码运行次数:0
复制
ansible-playbook playbook1.yml -i prod/hosts

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63985294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档