用Ansible Playbook禁用保险库是否可能?

5

为了自动化测试的目的,我想在执行ansible-playbook时禁用保险库(vault),这样测试中的加密变量会被覆盖。

我已经看到了 --ask-vault-pass,但没有相反的选项,例如--no-vault-pass或类似选项。

Ansible设置没有指定环境变量来实现此功能。


1
我认为没有这样的选项,但是您可以使用“--vault-id”选项传递固定变量以进行测试。 - error404
是的,然后Ansible正在搜索密码文件;如果无法解密保险库文件,则会失败。 - Bruno Thomas
2
你可以使用一个特殊的配置文件进行测试,其中包含故意排除的保险库信息。 - dgw
2个回答

3
也许您正在寻找通过环境进行结构分离的方法,类似于这样:
├── ansible.cfg               # check below.
├── inventories               # directory to group all hosts and variables.
│   ├── production            # "environment" directory as we discussed before.
│   │   ├── group_vars
│   │   │   ├── appserver
│   │   │   │   ├── vars.yml
│   │   │   │   └── vault.yml # encrypted sensitive data.
│   │   │   └── proxyserver
│   │   │       ├── vars.yml
│   │   │       └── vault.yml
│   │   └── inventory
│   ├── staging
│   │   ├── group_vars
│   │   │   ├── appserver
│   │   │   │   ├── vars.yml
│   │   │   │   └── vault.yml # encrypted sensitive data.
│   │   │   └── proxyserver
│   │   │       ├── vars.yml
│   │   │       └── vault.yml
│   │   └── inventory
│   └── development
│       ├── group_vars
│       │   ├── appserver
│       │   │   └── vars.yml  # no need to encrypt for local development.
│       │   └── proxyserver
│       │       └── vars.yml
│       └── inventory
├── site.yml
├── books                     # group all the playbooks under same directory.
│   ├── appserver.yml
│   └── proxyserver.yml
├── roles
│   └── app
└── roles.galaxy              # separate contributed roles
    └── author.proxy

继续阅读: https://steyeu.co/posts/ansible-project-layout-for-multistage-environments-based-on-best-practice/#the-suggested-way

注:本段为链接,无需翻译。

1
是的,这有点像我们用测试目录和测试清单所做的事情。 - Bruno Thomas

1
你可以为测试创建一个特殊的配置文件,在其中故意排除保险库信息,并告诉Ansible在运行测试playbook时使用此配置文件:
ANSIBLE_CONFIG=/my/special.cfg ansible-playbook testplaybook.yml

感谢您的建议。我们所做的是创建一个名为test的目录(包含所有测试内容),并从此处运行测试(ansible.cfg位于根目录),使用shunit2进行测试。 - Bruno Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接