Ansible:如何 运行 Vagrant 中的特定主机?
Ansible: How to run particular host in Vagrant?
我有一个复杂的 Ansible 设置,我的组文件中有多个主机。像这样。
# hosts/groups
[local]
127.0.0.1
[server1]
server1.domain.com
[server2]
server2.domain.com
[group1]
local
server1
[group2]
local
server2
这样,我可以 运行 两个组都反对 localhost:2222 这是我的 Vagrant 盒子,但是,它们都会被执行。对于测试,我非常愿意选择我想测试的设置。我已经尝试过 --extra-vars 参数和条件,这非常难看。有没有办法在主机配置中使用 extra_vars 参数。使用像 ...
这样的命令
ansible-playbook playbook.yml -i hosts -l 127.0.0.1:2222 --extra-vars "vhost=server1.domain.com"
或者我完全错了。
我认为没有一种简单的方法可以通过改变 Ansible 的执行方式来做到这一点。
我能想到的最佳选择是重新组织您的剧本。如果您创建 group1.yaml
和 group2.yaml
,每个都包含设置 group1
和 group2
所需的语句,那么您可以 运行 类似 [=18] =]
[$]> ansible-playbook -l 127.0.0.1:2222 group1.yaml
仅 运行 针对您的开发实例的 group1
配置。
如果您仍然想要一种方便的方式来 运行 所有任务,请更改您的 playbook.yaml
以包含其他剧本:
- include: group1.yaml
- include: group2.yaml
我有一个复杂的 Ansible 设置,我的组文件中有多个主机。像这样。
# hosts/groups
[local]
127.0.0.1
[server1]
server1.domain.com
[server2]
server2.domain.com
[group1]
local
server1
[group2]
local
server2
这样,我可以 运行 两个组都反对 localhost:2222 这是我的 Vagrant 盒子,但是,它们都会被执行。对于测试,我非常愿意选择我想测试的设置。我已经尝试过 --extra-vars 参数和条件,这非常难看。有没有办法在主机配置中使用 extra_vars 参数。使用像 ...
这样的命令ansible-playbook playbook.yml -i hosts -l 127.0.0.1:2222 --extra-vars "vhost=server1.domain.com"
或者我完全错了。
我认为没有一种简单的方法可以通过改变 Ansible 的执行方式来做到这一点。
我能想到的最佳选择是重新组织您的剧本。如果您创建 group1.yaml
和 group2.yaml
,每个都包含设置 group1
和 group2
所需的语句,那么您可以 运行 类似 [=18] =]
[$]> ansible-playbook -l 127.0.0.1:2222 group1.yaml
仅 运行 针对您的开发实例的 group1
配置。
如果您仍然想要一种方便的方式来 运行 所有任务,请更改您的 playbook.yaml
以包含其他剧本:
- include: group1.yaml
- include: group2.yaml