在中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"
}
笔记:
- “-” 不是变量名称中的有效字符
- 目录的正确名称是组变量
- 尽可能避免在文本中使用转义字符“\”