首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ansible playbook中确定命令行选项

如何从ansible playbook中确定命令行选项
EN

Stack Overflow用户
提问于 2019-09-27 01:48:11
回答 1查看 261关注 0票数 1

我需要确定是否有人在执行行动手册时使用了--ask-vault-pass选项。如果他们没有将ansible-playbook命令与--ask-vault-pass一起发出,则使其失败。

如果某人像这样运行,则通过:

代码语言:javascript
复制
ansible-playbook -i myinv.ini test.yml --ask-vault-pass

如果有人像这样运行,则会失败:

代码语言:javascript
复制
ansible-playbook -i myinv.ini test.yml

请注意,这不是我可以验证的extra-vars

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-27 03:57:39

下面的代码没有检测到--ask-vaul-pass选项,但仍然可以满足您的要求。请注意,检测此选项本身并不足以满足您的需要,因为您可以通过不同的方式提供存储库密码(--vault-passwork-file选项、环境变量...)

基本上,我正在测试其中一个我知道是编码的var,如果我们不能解码,就会很好地使剧本失败。出于测试的目的,我以localhost为目标,但您可以针对任何组。这就是我在测试任务中使用run_once的原因,以确保我们只对游戏中的所有主机测试一次。我还使用了no_log来确保我们不会在屏幕上泄露任何敏感数据。

代码语言:javascript
复制
- 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

这会在你的情况下发挥作用吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58122183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档