我需要确定是否有人在执行行动手册时使用了--ask-vault-pass选项。如果他们没有将ansible-playbook命令与--ask-vault-pass一起发出,则使其失败。
如果某人像这样运行,则通过:
ansible-playbook -i myinv.ini test.yml --ask-vault-pass如果有人像这样运行,则会失败:
ansible-playbook -i myinv.ini test.yml请注意,这不是我可以验证的extra-vars。
发布于 2019-09-27 03:57:39
下面的代码没有检测到--ask-vaul-pass选项,但仍然可以满足您的要求。请注意,检测此选项本身并不足以满足您的需要,因为您可以通过不同的方式提供存储库密码(--vault-passwork-file选项、环境变量...)
基本上,我正在测试其中一个我知道是编码的var,如果我们不能解码,就会很好地使剧本失败。出于测试的目的,我以localhost为目标,但您可以针对任何组。这就是我在测试任务中使用run_once的原因,以确保我们只对游戏中的所有主机测试一次。我还使用了no_log来确保我们不会在屏幕上泄露任何敏感数据。
- hosts: localhost
gather_facts: false
vars:
test_var: !vault |
$ANSIBLE_VAULT;1.1;AES256
<encrypted data goes here>
pre_tasks:
- block:
- name: verify we can decode vault
debug:
var: test_var
no_log: true
run_once: true
rescue:
- name: fail playbook if decode failed
fail:
msg: You did not provide a vault pass or it is not recognized
tasks:
- name: a task
debug:
msg: I'll be played if pre_tasks are ok这会在你的情况下发挥作用吗?
https://stackoverflow.com/questions/58122183
复制相似问题