首页 > 解决方案 > 在 ansible 清单中共享相同的主机变量

问题描述

我正在寻找一种正确的方法来构建库存以共享相同的 var。

这是我的库存

{
    "groupA": {
        "hosts": [
            "192.168.1.1"
        ]
    },
    "groupB": {
        "hosts": [
            "192.168.1.2"
        ]
    },
    "vars": {
        "ansible_ssh_user": "admin",
        "ansible_ssh_private_key_file": "/admin.pem",
        "ansible_become": "yes",
        "ansible_become_method": "sudo"
    }
}

我希望groupAgroupB都使用声明的相同 var。

此外,如何在剧本中指定同时运行groupAgroupB。以下一个似乎不起作用

hosts: groupA, groupB

[更新] 下面是得到Konstantin Suvorov支持后的正确结构。

{
    "groupA": {
        "hosts": [
            "192.168.1.1"
        ]
    },
    "groupB":{
        "hosts":[
            "192.168.1.2"
        ]
    },
    "root":{
        "children":[
            "groupA",
            "groupB"
        ],
        "vars": {
            "ansible_ssh_user": "admin"
        }
    }
}

标签: ansibleansible-inventory

解决方案


将您的 vars 放入某个虚拟组中,该组是两个组的父组:

  "root": {
    "children": ["groupA", "groupB"],
    "vars": {
        "ansible_ssh_user": "admin"
    }
  },

正确的模式是hosts: groupA:groupBhosts: group[AB]


推荐阅读