我需要确定某人在执行其剧本时是否使用过--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
。
答案 0 :(得分:1)
以下内容未检测到--ask-vaul-pass
选项,但仍然可以满足您的要求。无论如何,请注意仅检测到此选项不足以满足您的需要,因为您可以通过不同的方式提供保险库密码(--vault-passwork-file
选项,环境变量...)
基本上,我正在测试一个我知道已编码的变量,如果我们无法解码,则会使剧本失败。我以测试为目标针对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
这能在您遇到的情况中解决这个问题吗?