这里的目标是从一个可用的变量文件动态地构建一个菜单
在此示例中,我使用ansible.builtin.pause
模块,但我不确定这是最好的方法
变量文件:vars.yml
---
menu:
ansible:
main:
- option: 1
name: "Add..."
- option: 2
name: "Delete..."
- option: 3
name: "Empty..."
add:
- option: 1
name: "Add something..."
- option: 2
name: "Add something to..."
delete:
empty:
ssh:
main:
剧本:test.yml
- name: "PLAY: > TEST"
hosts: localhost
gather_facts: no
vars_files: vars.yml
pre_tasks:
- name: Dynamicaly construct menu
pause:
prompt:
"\n
Ansible options:\n
=====================================\n
{{item.option}}- {{item.name}}"
register: result
loop: "{{menu.ansible.main}}"
- debug:
msg: "Option 1 was selected"
when: result.user_input == '1'
输出:
PLAY [PLAY: > TEST] *******************************************************************************************************************************************************************************************************************************************************
TASK [Dynamicaly construct menu] ******************************************************************************************************************************************************************************************************************************************
[Dynamicaly construct menu]
Ansible options:
=====================================
1- Add...:
如您所见,它仅显示主要部分,而不是全部。
问题:
如何一次显示所有可用选项并保存用户选择,以便根据条件运行下一个任务?
我很确定必须先生成菜单并将其保存在一个变量下,然后再发送到,ansible.builtin.pause
但我不确定如何实现。
感谢帮助
在这种情况下,直接在内联的 jinja2 模板中包含循环几乎是不可避免的(因此是可以接受的):
该固定任务的结果: