【问题标题】:Check to see if an Ansible Prompt Variable exists检查是否存在 Ansible 提示变量
【发布时间】:2017-04-16 13:11:03
【问题描述】:

在我的 site.yml 中,我运行了一些常见任务,然后包含 3 个其他剧本。 然后,这 3 个剧本各自发挥作用。 我这样做是为了运行完整的 site.yml 安装,或者我可以运行一个较小的 playbook。

我想在 site.yml 中提示输入用户名和密码,我可以这样做。 然后在其他 3 个剧本/角色中,我想检查用户名和密码是否已经创建,如果没有,则提示输入。

我不想多次提示输入凭据。

site.yml

---
- hosts: all

  vars_prompt:
    - name: "username"
    - prompt" "enter username"

- include: 1.yml

1.yml

---
- name: install one
  hosts: all

  # If username has not been defined - This is 
  # where I am confused how to check if it was defined in site.yml
  vars_prompt:
    - name: "userame"
      prompt: "enter username"
  roles:
    - 1role

如果我运行 site.yml,它将获取用户名,然后运行 ​​1.yml,我不希望它提示输入用户名,因为它是在 site.yml 中提示的。

如果我只运行 1.yml,我希望它提示输入用户名,因为在这种情况下我没有运行 site.yml。

有没有办法从剧本提示输入凭据,然后在随附的剧本中检查它们?

【问题讨论】:

标签: if-statement ansible prompt exists


【解决方案1】:

您应该在主机上创建一个 ansible 写入的文件,然后 ansible 可以检查这些凭据是否已填写,或者您可以使用 register (可能是最好的选择)然后使用 when 来检查(when is like if 语句)

例如:

site.yml

- name: "username"
- prompt" "enter username"  
  register: username_check

1.yml

- name: "userame"
  prompt: "enter username"  
  when: username_check is not defined  

我希望这在某些方面有所帮助。我试图发表评论,但它不允许我。

【讨论】:

  • 使用注册无效。在 site.yml 中提示我,然后在 1.yml 中再次提示。我会尝试先检查,写一个文件,然后检查文件。我不喜欢那种方法。
  • 我想注册不起作用是有道理的,因为它们是不同的剧本。如果有更简单的方法可以将变量传递为真或假(这就是我对文件方法的想法)。
猜你喜欢
  • 1970-01-01
  • 2014-09-08
  • 2015-02-04
  • 2016-12-28
  • 1970-01-01
  • 2013-11-13
  • 2014-06-23
  • 2017-08-05
相关资源
最近更新 更多