一台主机包含多个组的变量

时间:2019-07-10 09:48:17

标签: ansible ansible-inventory

我有一个库存文件,如下所示:

all:
  children:
    win:

      children:
        hi:
          hosts:
            10.50.127.18:
            10.50.127.19:

        bye:
          hosts:
            10.50.127.18:
            10.50.127.19:
    linux:
      children:
        hi:
          hosts:
            10.50.127.20:
        bye:
          hosts:
            10.50.127.20:  

在组vars文件夹中,我有此代码 hi.yml

services:
  - ls
  - pwd

bye.yml

services:
  - pwd

然后在剧本中我有这个:

- hosts: linux
  gather_facts: no
  tasks:
  - name: lalaland
    command: "{{ item }}"
    loop: "{{services}}"

但我遇到类似以下错误:

fatal: [10.50.127.18]: FAILED! => {"msg": "Unexpected failure in finding the lookup named '{{services}}' in the available lookup plugins"}

你能告诉我我在做什么错吗? 您还知道我是否已经越过变量含义,例如在这种情况下([ls]和[ls,pwd]),我是否会获得vars [ls,ls,pwd]或[ls,pwd]的结果列表? / p>

1 个答案:

答案 0 :(得分:0)

  

但我遇到类似以下错误:

我通过复制粘贴您问题中的内容来制作相同的文件,并且在Ansible 2.8上可以正常运行。

  

您还知道我是否已经越过了变量的含义,例如在这种情况下([ls]和[ls,pwd]),我是否会得到vars [ls,ls,pwd]或[ls,pwd]的结果列表]?

在分析清单时,组变量将应用于主机。并且具有相同名称的变量将被替换。因此,由于在您的清单中,按字母顺序排列的最后一组是“ hi”,因此您的主机将具有service = [ls, pwd]