如何忽略解密存储文件的失败?

She*_*ter 10 ansible ansible-playbook ansible-vault

我有两个角色,其中一个有一个group_vars拱形文件,另一个没有.我想运行不需要任何存储信息的角色,但是ansible提示我输入保险库密码:

$ tree
??? deploy-home-secure.yml
??? deploy-home.yml
??? group_vars
?   ??? home
?   ?   ??? unvaulted
?   ??? home-secure
?       ??? unvaulted
?       ??? vaulted
??? hosts
??? roles
    ??? home
    ?   ??? tasks
    ?       ??? main.yaml
    ??? home-secure
        ??? tasks
            ??? main.yaml

$ ansible-playbook --version
ansible-playbook 1.8.2
  configured module search path = None

$ ansible-playbook -i hosts deploy-home.yml
ERROR: A vault password must be specified to decrypt vaulttest/group_vars/home-secure/vaulted

$ ansible-playbook --vault-password-file=/dev/null -i hosts deploy-home.yml
ERROR: Decryption failed
Run Code Online (Sandbox Code Playgroud)

Fra*_*uis 11

我有类似的东西来解决这类问题(我的角色不同,但主机不同,但我认为同样的原则适用):

这是简化的文件结构:

group_vars
  development_vars
  staging_vars 
vaulted_vars
  production_vars
Run Code Online (Sandbox Code Playgroud)

这允许您在没有Ansible请求解密production_vars的情况下部署开发或暂存.

然后,制作剧本如下:

hosts: production
roles:
  - role...
vars_files:
  - vaulted_vars/production_vars
Run Code Online (Sandbox Code Playgroud)

指定存储var的路径的vars_files行是键.


Ale*_*ski 6

Ansible将尝试为您在广告资源中遇到的任何群组加载group_vars文件.如果您将库存文件(主机)拆分为一个用于家庭组,另一个用于家庭安全,那么它将不会尝试解密它不应该的变量.

$ ansible-playbook -i hosts-home deploy-home.yml

$ ansible-playbook --ask-vault-password -i hosts-home-secure deploy-home-secure.yml
Run Code Online (Sandbox Code Playgroud)