本文介绍了从命令行覆盖 Ansible playbook 的 hosts 变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我正在使用的剧本片段(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 变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-18 23:44