Ansible - 如何将上一个提示的答案包含到下一个提示中
Ansible - How to include answer from previous prompt into next prompt
我正在编写剧本,我从控制台获取变量值。我试图在第二个问题的提示中使用第一个问题的答案。但这是行不通的。可以这样做吗?
这是我试过的。
vars_prompt:
- name: acl_username
prompt: "User name for ACL"
private: no
- name: acl_password
prompt: "Password for "
# prompt: "Password for {{ acl_username }}"
private: yes
我确实知道在我的初始测试中,密码会被显示,但一旦我开始工作,我会搜索如何不输出任务详细信息。
谢谢
您需要在任务中提示用户输入,而不是在 vars_prompt
部分; vars_prompt
中的变量在 收集完所有数据后才可用。
您可以使用命名不当的 pause
模块来提示用户在任务中输入。例如:
- hosts: localhost
gather_facts: false
tasks:
- name: get username
pause:
prompt: "User name for ACL"
echo: true
register: acl_username
- name: get password
pause:
prompt: "Password for {{ acl_username.user_input }}"
echo: false
register: acl_password
- debug:
msg:
- "{{ acl_username.user_input }}"
- "{{ acl_password.user_input }}"
运行 这看起来像:
PLAY [localhost] *****************************************************************************************************************************************************************************
TASK [get username] **************************************************************************************************************************************************************************
[get username]
User name for ACL:
ok: [localhost]
TASK [get password] **************************************************************************************************************************************************************************
[get password]
Password for alice (output is hidden):
ok: [localhost]
TASK [debug] *********************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": [
"alice",
"secret"
]
}
PLAY RECAP ***********************************************************************************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
我正在编写剧本,我从控制台获取变量值。我试图在第二个问题的提示中使用第一个问题的答案。但这是行不通的。可以这样做吗?
这是我试过的。
vars_prompt:
- name: acl_username
prompt: "User name for ACL"
private: no
- name: acl_password
prompt: "Password for "
# prompt: "Password for {{ acl_username }}"
private: yes
我确实知道在我的初始测试中,密码会被显示,但一旦我开始工作,我会搜索如何不输出任务详细信息。
谢谢
您需要在任务中提示用户输入,而不是在 vars_prompt
部分; vars_prompt
中的变量在 收集完所有数据后才可用。
您可以使用命名不当的 pause
模块来提示用户在任务中输入。例如:
- hosts: localhost
gather_facts: false
tasks:
- name: get username
pause:
prompt: "User name for ACL"
echo: true
register: acl_username
- name: get password
pause:
prompt: "Password for {{ acl_username.user_input }}"
echo: false
register: acl_password
- debug:
msg:
- "{{ acl_username.user_input }}"
- "{{ acl_password.user_input }}"
运行 这看起来像:
PLAY [localhost] *****************************************************************************************************************************************************************************
TASK [get username] **************************************************************************************************************************************************************************
[get username]
User name for ACL:
ok: [localhost]
TASK [get password] **************************************************************************************************************************************************************************
[get password]
Password for alice (output is hidden):
ok: [localhost]
TASK [debug] *********************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": [
"alice",
"secret"
]
}
PLAY RECAP ***********************************************************************************************************************************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0