gpt4 book ai didi

ansible - 如何区分暂存/生产与动态库存?

转载 作者:行者123 更新时间:2023-12-04 14:56:45 25 4
gpt4 key购买 nike

我被困住了。在网上用谷歌搜索,找不到答案。

我多年来一直在使用 Ansible,但总是使用静态 list 。为了区分暂存和生产等不同环境,我使用了不同的静态 list 文件 stagingproduction , 分别。当我需要配置登台服务器时,我会这样做:

ansible-playbook site.yml -i staging

当我想为生产做同样的事情时,我会这样做:
ansible-playbook site.yml -i production

暂存和生产都需要具有不同值的变量,所以我有 group_vars/staginggroup_vars/production .一切都很好,并且根据最佳实践。

现在,我需要在 AWS 中预置 EC2 实例。我正在使用 this AWS guide .我有一本包含两部戏剧的剧本。第一个是针对 localhost ,在 AWS 中创建/查找所需的 EC2 实例,并使用 add_host 填充组.第二场比赛使用该组运行在第一场比赛中发现的 EC2 实例。一切都按照那个指南。

除了一件事,这一切都很好。我不知道如何指定要配置的环境,因此未从 group_vars/(staging|production) 加载所需的变量.基本上,我想要的是类似于 -i (staging|production)这些年来我一直使用静态库存,但似乎使用 -i现在没有意义,因为库存是动态的。我想要一种能够从 group_vars/staging 加载变量的方法或 group_vars/production基于我传递给 ansible-playbook 的参数当我运行它时。

我怎么做?最佳做法是什么?

最佳答案

虽然我不确定如何使用 ansible EC2 模块,因为我们不使用它从 ansible 级别构建盒子,但有一种简单的方法可以通过 ec2 external inventory script 获得您想要的东西。 inventories/main 中的简单设置.您需要做的是设置 ec2.pyec2.ini在你的inventories所以它将被用作实例的来源。确保取消注释 group_by_tag_keys = True ec2.ini 内部.

下一步是区分哪个实例去哪里。虽然 ec2.py 中有许多选择方法可用,我更喜欢相应地专门标记每个实例。所以我所有的实例都有一个名为 environment 的标签相应地填充(在您的情况下,它将是分期或生产)。然后剩下的就是在你的inventories/main里面处理它。 ,这里有一个小例子。

首先,您必须为要使用的标签定义空组:

[tag_environment_staging]

[tag_environment_production]

所以我们以后可以引用它们。之后,剩下要做的就是将这些组指定为适当阶段的子组。因此,之后我们的最小文件将如下所示:
[tag_environment_staging]

[tag_environment_production]

[staging:children]
tag_environment_staging

[production:children]
tag_environment_production

你去吧。从现在开始,通过环境标签附带的动态 list 脚本从 ec2 中提取的每个实例都将匹配到 group_vars 中的适当配置.您必须记住,在处理动态库存时,您需要您的 -i指向 inventories目录而不是特定文件才能正常工作。

关于ansible - 如何区分暂存/生产与动态库存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35778501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com