如何在 group_vars 中使用模板变量

如何在 group_vars 中使用模板变量

在中group_vars/,我有三个与库存组名称相对应的文件:

  • all.yml
  • windows.yml
  • linux.yml

windows.yml“我”定义中bot-os-user: MYDOMAIN\domainuser

linux.yml“我”定义中bot-os-user: somelinuxuser

all.yml“我”定义中ansible_user: {{ bot-os-user }}

问题是,如果这样指定,Ansible 会告诉我{{ ... }}应该用双引号引起来。而使用双引号,{{ bot-os-user }}永远不会展开,也就是说,它实际上保持{{ bot-os-user }},而预期结果是具有变量ansible_user的值。bot-os-user

我是否遗漏了什么?我该如何让它工作?

PS 这实际上是关于重用变量来定义其他变量的值而不是其他东西。

答案1

有很多问题。请参阅下面的注释。除此之外,这里的问题是变量的定义,因此我重命名了 ansible_用户从问题到我的 ansible_用户

  • 变量的扩展必须用引号引起来并且变量bot_os_用户一定存在。

    my_ansible_user:“{{ bot_os_user }}”

  • 多变的bot_os_用户如果有文件或两个文件存在窗口,linux.yml 包含在一个 play 中

  • 文件窗口, 或者linux.yml如果运行该剧的主持人是该组的成员,则将包含来自目录 group_vars/ 的内容视窗, 或者Linux的

例如:

> cat group_vars/linux.yml
bot_os_user: "linux-user"

> cat group_vars/all.yml
my_ansible_user: "{{ bot_os_user }}"

> cat hosts
---
linux:
  hosts:
    test_01:
    test_02:
    test_03:

下面的剧情

> cat test1.yml
---
- hosts: test_01
  tasks:
    - debug: var=bot_os_user
    - debug: var=my_ansible_user

给出:

ok: [test_01] => {
"bot_os_user": "linux-user"
ok: [test_01] => {
"my_ansible_user": "linux-user"
}

笔记:

  • “-” 不是变量名称中的有效字符
  • 目录的正确名称是组变量
  • 尽可能避免在文本中使用转义字符“\”

相关内容