在我的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。
有没有办法从剧本中提示凭据,然后在附带的剧本中检查它们?
答案 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
我希望这在某些方面有所帮助。我试着评论,但它不会让我。