【问题标题】:Ansible: Can we have custom names for host_vars filesAnsible:我们可以为 host_vars 文件自定义名称吗
【发布时间】:2020-04-27 07:42:16
【问题描述】:

什么是有效的

我的 ansible 库存组织如下:

../project1
  |- group_vars
  |- host_vars
    |- 10.20.30.1.yml
       {{content like remote-endpoint="x.x.x.x", ... a very big var map... ,}}
    |- 10.20.30.2.yml
       {{content like remote-endpoint="y.y.y.y", ... a very big var map... ,}}
  inventory

我的库存文件内容如下:

10.20.30.1  hvar="host1"
10.20.30.2  hvar="host2"

上述工作按预期工作,我能够访问特定主机的所有主机级变量。

我想做什么?

我希望 host_vars/*files* 的名称基于标签(可能),例如 - host1、host2 等,而不是“inventory_hostsname”ansible 变量的值。这将使我能够给出一些特定于函数的名称,例如 master、slave 等,在后一种情况下,即使主机更改,文件的名称也可以保持不变。

【问题讨论】:

    标签: variables ansible ansible-inventory inventory


    【解决方案1】:

    Ansible 提供了根据需要提供名称的选项。实际上,这也是首选方式。您可以像这样在 ansible hosts(not /etc/hosts) 文件中定义所有主机。

    allgrouphost1
    allrouphost2
    
    [master]
    host1
    
    [slave]
    host2
    host3
    host4
    

    然后您可以在host_vars/host1.ymlhost_vars/host2.yml 等中定义变量。

    您可以在hosts 文件或其特定的主机变量文件中使用ansible_host 变量定义主机IP 地址。

    带有hosts文件

    host1 ansible_host=192.0.2.98 ansible_user=deploy
    

    使用host_vars/host1.yml 文件

    ansible_host: 192.0.2.98
    ansible_user: deploy
    

    括号中的标题是组名([master][slave]),用于对主机进行分类,并决定您在什么时间和出于什么目的控制哪些主机。

    您可以按组名运行 playbook,以便仅在属于该组的主机上执行这些操作。您也可以在group_vars文件中定义公共变量。

    有关更多详细信息和用例,请参阅documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 2023-01-01
      相关资源
      最近更新 更多