在我之前的问题,我发现我可以将选项放入本地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-file
CLI 中传递了 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,这取决于您。