问题描述
这是我正在使用的剧本片段(server.yml
):
This is a fragment of a playbook that I'm using (server.yml
):
- name: Determine Remote User
hosts: web
gather_facts: false
roles:
- { role: remote-user, tags: [remote-user, always] }
我的主机文件有不同的服务器组,例如
My hosts file has different groups of servers, e.g.
[web]
x.x.x.x
[droplets]
x.x.x.x
现在我想执行 ansible-playbook -i hosts/;server.yml
并从 server.yml
覆盖 hosts: web
为 [droplets]
运行这个剧本.
Now I want to execute ansible-playbook -i hosts/<env> server.yml
and override hosts: web
from server.yml
to run this playbook for [droplets]
.
我可以不直接编辑 server.yml
而是一次性覆盖吗?
Can I just override as a one time off thing, without editing server.yml
directly?
谢谢.
推荐答案
我认为 Ansible 没有提供这个功能,它应该提供.您可以执行以下操作:
I don't think Ansible provides this feature, which it should. Here's something that you can do:
hosts: "{{ variable_host | default('web') }}"
并且您可以从命令行或 vars 文件传递 variable_host
,例如:
and you can pass variable_host
from either command-line or from a vars file, e.g.:
ansible-playbook server.yml --extra-vars "variable_host=newtarget(s)"
这篇关于从命令行覆盖 Ansible playbook 的 hosts 变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!