如何在 INI 文件中使用加密变量 (ansible_ssh_pass)?



我正在阅读此页面,如果我将以下文本放在清单文件夹中的文件中:

[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

我收到此错误消息

[WARNING]:  * Failed to parse /home/myuser/Ansible/Inventory/pwdtest
with ini plugin: /home/cristi/Ansible/Inventory/pwdtest:9: Expected
key=value, got: $ANSIBLE_VAULT;1.2;AES256;my_user

我认为问题归结为将多行字符串分配给 INI 文件中的变量

有人知道我如何使用它吗? 我可以以 YAML 文件格式使用上述内容,但我想保持一致性并在任何地方使用 YAML

如何在 INI 文件中使用加密变量 (ansible_ssh_pass(?

你不能。

您链接到的文档页面似乎明显错误。

首先,ansible-vault输出中的!vault标记和|字符属于 YAML 语法,它们不可能在 INI 格式的清单中工作。

似乎还有,解密值的函数 AnsibleVaultEncryptedUnicode 仅从 YAML 解析器调用,因此无法修改 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
    

最新更新