可靠的剧本文件选择任务



这可能违反了最佳实践,但使用Ansible剧本,是否可以从一个任务中获取文件列表,然后向用户提示选择要传递到变量中的文件之一?

例如:

Choose file to select:
1. file1.txt
2. file2.txt
3. file3.txt
> 1

理论上,剧本会暂停等待用户输入,然后将结果文件选择传递到一个变量中,以便在未来的任务中使用。

非常感谢。

使用暂停。例如,给定文件

shell> tree files
files
├── file1.txt
├── file2.txt
└── file3.txt
0 directories, 3 files

下面的剧本

shell> cat playbook.yml
- hosts: localhost
tasks:
- find:
path: files
register: result
- set_fact:
my_files: "{{ result.files|map(attribute='path')|list|sort }}"
- pause:
prompt: |
Choose file to select:
{% for file in my_files %}
{{ loop.index }} {{ file }}
{% endfor %}
register: result
- debug:
msg: "selected file: {{ my_files[result.user_input|int - 1] }}"

给出(当选择第二个文件并键入"2<ENTER"时(

shell> ansible-playbook playbook.yml 
PLAY [localhost] ****
TASK [find] ****
ok: [localhost]
TASK [set_fact] ****
ok: [localhost]
TASK [pause] ****
[pause]
Choose file to select:
1 files/file1.txt
2 files/file2.txt
3 files/file3.txt
:
ok: [localhost]
TASK [debug] ****
ok: [localhost] => {
"msg": "selected file: files/file2.txt"
}
PLAY RECAP ****
localhost: ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

最新更新