关于ansible在使用playbook对一台host上的多个应用进行批量管理的问题

发布于 2022-09-05 06:20:30 字数 1530 浏览 31 评论 0

下面是我的inventory数据

{
  "cmdb.4.source.1": {
    "hosts": [
      "192.168.2.22"
    ],
  },
  "cmdb.4.source.2": {
    "hosts": [
      "192.168.2.22"
    ],
  },
  "_meta": {
    "hostvars": {
      "192.168.2.22": {
        "other_ip": [],
        "app_meta": {
          "cmdb.4.source.1": {
            "process": {
                "attribute": {
                  "fold": "cmdb_4_source_1",
                  },
              },
          },
          "cmdb.4.source.2": {
            "process": {
                "attribute": {
                  "fold": "cmdb_4_source_2",
                  },
              },
          },
        },
      },
    },
  },
}

playbook的内容如下:

- hosts: "{{host}}"
  gather_facts: no
  tasks:
    - name:
      shell: echo “{{app_meta['process']['attribute']['fold']}}” >> /tmp/test.txt
  

我是通过正则的匹配方式去执行2个应用主机,实现往test.txt文件写入每个主机的inventory名字
我的正则使用是“~cmdb.5.Config.[0-9]”或者“~cmdb.5.Config.*”
但是我当我执行的时候发现只能匹配到一台应用host,也就是test文件只是被写入了一次,也就是说如果2个应用,指定到同一个host主机,会被ansible默认给去重掉,不知道有没有别的办法解决这问题

下面是执行的结果,找到了正确的host,但是只是执行了一次,我要结果是有2次被执行

PLAY [~cmdb.5.Config.[0-9]] ****************************************************

TASK [command] *****************************************************************
changed: [192.168.2.28]

PLAY RECAP *********************************************************************
192.168.2.28               : ok=1    changed=1    unreachable=0    failed=0   

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文