【发布时间】:2023-03-04 08:14:05
【问题描述】:
当组位于不同的清单中时,我正在寻找一种方法来将多个组指定为 Ansible 剧本中的主机(这类似于 this question,但不同,因为该问题假设一个清单)。
假设我有一本名为 change_things.yml 的剧本。有时我想更改development,有时qa,有时production等中的内容:
ansible-playbook -i development -i production change_things.yml.
假设有单独的清单大致如下所示:
# development inventory
[development]
10.0.0.1
10.0.0.2
如果未明确指定 hosts,上述 playbook 将无法运行。
我有几个问题:
- 使用
hosts: all似乎有害。如果用户忘记显式声明清单,我会想象 Ansible 继承自/etc/ansible/hosts中的任何内容。 - 硬编码主机组 (
hosts: development:production) 是不可取的,因为我将来可能想运行类似ansible-playbook -i development -i qa change_things.yml的东西。
我正在寻找一种方法来维护单独的主机清单,但要以这样的方式创建剧本,以便它们可以针对主机组的多个组合执行。我不知道如何告诉 Ansible“使用这些清单中的这些组”。
【问题讨论】:
-
隔离开发和生产。身体上!通过版本系统共享通用工件(剧本、角色、库存、变量...)。
-
@VladimirBotka 这只是一个人为的例子来说明我绝对想强制执行这种隔离 - 你可以将它们视为
red服务器和green服务器。我不想维护多个具有不同默认主机但内容完全相同的剧本。 Ansible 的版本系统是什么?
标签: ansible