在 我以前的问题 ,我发现我可以把选项放到本地 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.
这似乎是错误的行为。
为什么不是我的命令行选项(提示输入密码或选择不同的密码文件)覆盖配置文件选项以使用特定的预定义密码文件?难道我做错了什么?或者像这样回答,没有重写配置文件变量?
这个错误对我来说似乎很清楚。您只能分配一个用于加密的有效ID。你在哪里分配了保险库ID?
—
Ramhound
该错误清楚地表明这是故意的。您正在申请新功能/更改,您应该在GitHub上执行,而不是在SuperUser上执行。
—
techraf
@techraf所以这是一个标准的ansible事情,一旦在ansible.cfg中定义了一个设置,它就不能被命令行选项覆盖?
—
hymie
抛出该错误是因为
—
Mincă Daniel Andrei
/tmp/foo
应该是不是可执行的bash脚本 echo ${VAULT_PASS}
@MincăDanielAndrei你错了。 docs.ansible.com/ansible/2.5/user_guide/... 清楚地说“要在文本文件中指定保管库密码,请使用--vault-password-file选项”,ansible-vault --help的帮助文本也是如此。
—
hymie