覆盖ansible配置中的选项


3

我以前的问题 ,我发现我可以把选项放到本地 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

抛出该错误是因为 /tmp/foo 应该是不是可执行的bash脚本 echo ${VAULT_PASS}
Mincă Daniel Andrei

@MincăDanielAndrei你错了。 docs.ansible.com/ansible/2.5/user_guide/... 清楚地说“要在文本文件中指定保管库密码,请使用--vault-password-file选项”,ansible-vault --help的帮助文本也是如此。
hymie

Answers:


0

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

显然,错误被抛出,因为我的 ansible.cfg 来自CWD指的是一个 vault_password_file 我也是在路过 --vault-password-file 在CLI中作为参数,因此引用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再次,这取决于你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.