检查是否存在Ansible Prompt Variable

时间:2016-12-01 18:59:52

标签: if-statement ansible prompt exists

在我的site.yml中,我运行一些常见任务,然后包含其他3个剧本。 然后这3个剧本各自扮演一个角色。 我这样做,所以我可以运行一个完整的site.yml安装,或者我可以运行一个较小的剧本。

我想在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。

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

1 个答案:

答案 0 :(得分:0)

你应该创建一个ansible在主机和ansible上写入的文件,然后可以检查这些凭据是否已经填写,或者你可以使用register(可能是最好的选项),然后使用何时检查(何时就像一个if语句)

例如:

<强> site.yml

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

<强> 1.yml

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

我希望这在某些方面有所帮助。我试着评论,但它不会让我。