【问题标题】:ansible playbook on multiple servers with different vars具有不同变量的多台服务器上的 ansible playbook
【发布时间】:2017-09-24 01:55:06
【问题描述】:

我正在使用主机文件的主机列表上运行 ansible playbook:

[consul]
${HOST1} ansible_ssh_host=${HOST1} ansible_ssh_user=devops ansible_ssh_pass=blabla
${HOST2} ansible_ssh_host=${HOST2} ansible_ssh_user=devops ansible_ssh_pass=blabla
.......so on...

问题是我需要为每个主机传递不同的变量。 我知道标志-e 允许我使用ansible-playbook 命令发送变量,但它不适用于每个主机。

我正在运行这个剧本:

ansible-playbook -vvvv site.yml

如何为每个主机传递不同的 var?

谢谢!

注意:我使用的是 ansible 1.7.1

【问题讨论】:

  • 那是什么变量(值)?您可以在某处的 var 中构建映射,使用 host_vars (group_vars),查询清单以发现有关其他主机的事实等。
  • 既然您明确表示要“为每个主机传递不同的变量”,您应该查看 1.7 版本中可用的 host_vars:docs.ansible.com/ansible/intro_inventory.html

标签: ansible


【解决方案1】:

您应该可以通过两种方式做到这一点:

1) 在宿主文件中包含变量:

[consul]
${HOST1} ansible_ssh_host=${HOST1} .... myvar=x
${HOST2} ansible_ssh_host=${HOST2} .... myvar=y

2) 或者使用 include_vars 任务根据主机名加载文件

include_vars: "{{ ansible_ssh_host }}.yml"

如果您要为主机加载大量变量,则第二种方法很好。

对于更复杂的情况,查找模块可能会有所帮助: http://docs.ansible.com/ansible/playbooks_lookups.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-27
    • 2022-12-19
    • 1970-01-01
    • 2021-06-21
    • 2015-08-27
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多