如果我将此文本放入 Inventory 文件夹中的文件中
[vyos:vars]
ansible_connection=network_cli
ansible_network_os=vyos
ansible_user=my_vyos_user
ansible_ssh_pass= !vault |
$ANSIBLE_VAULT;1.2;AES256;my_user
66386134653765386232383236303063623663343437643766386435663632343266393064373933
3661666132363339303639353538316662616638356631650a316338316663666439383138353032
63393934343937373637306162366265383461316334383132626462656463363630613832313562
3837646266663835640a313164343535316666653031353763613037656362613535633538386539
65656439626166666363323435613131643066353762333232326232323565376635
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息
[警告]:* 使用 ini 插件解析 /home/myuser/Ansible/Inventory/pwdtest 失败:/home/cristi/Ansible/Inventory/pwdtest:9:预期的 key=value,得到:$ANSIBLE_VAULT;1.2;AES256;my_user
我认为问题归结为将多行字符串分配给 INI 文件中的变量
有人知道我如何使用它吗?我可以在 YAML 文件格式中使用上述内容,但我想保持一致性并在任何地方使用 YAML
如何在 INI 文件中使用加密变量 (ansible_ssh_pass)?
你不能。
首先,输出中的!vault标签和|字符ansible-vault属于 YAML 语法,它们无法在 INI 格式的清单中工作。
看来,AnsibleVaultEncryptedUnicode解密值的函数也只能从 YAML parser 调用,因此无法修改 INI 格式清单中的值(如单行,无标签)。
您可以:
如果您使用目录并将库存拆分为多个文件,则在 YAML 中写入您的库存,全部或部分
group_vars在与库存文件相同的目录中创建一个目录,并vyos.yml在其中放置一个包含以下内容的文件:
ansible_connection: network_cli
ansible_network_os: vyos
ansible_user: my_vyos_user
ansible_ssh_pass: !vault |
$ANSIBLE_VAULT;1.2;AES256;my_user
66386134653765386232383236303063623663343437643766386435663632343266393064373933
3661666132363339303639353538316662616638356631650a316338316663666439383138353032
63393934343937373637306162366265383461316334383132626462656463363630613832313562
3837646266663835640a313164343535316666653031353763613037656362613535633538386539
65656439626166666363323435613131643066353762333232326232323565376635
Run Code Online (Sandbox Code Playgroud)