覆盖 ansible 配置中的选项

覆盖 ansible 配置中的选项

我之前的问题,我发现我可以将选项放入本地ansible.cfg文件中。但我可以覆盖它们吗?

我有一个ansible.cfg包含

[defaults]
vault_password_file = /home/hymie/ansible/foo

我可以自动使用这个文件:

$ echo "hi there" |  ansible-vault encrypt_string
Reading plaintext input from stdin. (ctrl-d to end input)
!vault |
          $ANSIBLE_VAULT;1.1;AES256
          64386133613865366565336365333166623538613239636464303931646330323061376239363639
          3136376163613132613130306630626365643133366664310a353030303434346336396233616363
          62323464313737663135303636646264373737393930326132386231363561653865646436313439
          3231353132643364340a316431626332626633646135613064353133633038356434323537326633
          3035
Encryption successful

但现在,我无法使用/选择其他密码:

$ echo "hi there" |  ansible-vault encrypt_string --ask-vault-pass
New Vault password:
Confirm New Vault password:
ERROR! Only one --vault-id can be used for encryption. This includes passwords from configuration and cli.

$ echo "hi there" |  ansible-vault encrypt_string --vault-password-file=/tmp/foo
ERROR! Only one --vault-id can be used for encryption. This includes passwords from configuration and cli.

$ echo "hi there" |  ansible-vault encrypt_string --vault-id=@prompt
New vault password (default):
Confirm vew vault password (default):
ERROR! Only one --vault-id can be used for encryption. This includes passwords from configuration and cli.

这看起来像是错误的行为。

为什么我的命令行选项(提示输入密码或选择其他密码文件)没有覆盖配置文件选项以使用特定的预定义密码文件?我做错了什么吗?还是 ansible 就是这样,没有覆盖配置文件变量?

答案1

我昨天遇到了类似的问题,抛出了同样的错误和您的配置。

显然,抛出该错误是因为我ansible.cfg的 CWD 指向了 a vault_password_file,并且我还在--vault-password-fileCLI 中传递了 a 作为参数,因此两次引用 Vault 密码文件会抛出该错误:ERROR! Only one --vault-id can be used for encryption. This includes passwords from configuration and cli.

错误信息准确无误,事实上您以不同的方式传递了该参数两次。

因此,解决此问题的一种方法是vault_password_file=从中删除引用ansible.cfg并仅将其传递给 cli --vault-password-file,或者将其保留在 中,ansible.cfg从而避免--vault-password-file再次输入 cli,这取决于您。

相关内容