我正在运行ansible-playbook
,其中列出了许多任务。所有这些都用来逐个运行,但是我想在特定任务之后pause
播放本,询问用户是否要继续运行其余任务或退出。我已经看到了pause module
的ansible,但看不到任何询问用户是或否的示例,而这些示例依次继续或退出ansible-playbook。
答案 0 :(得分:28)
pause
模块实际上就是这样做的。但它没有为您提供回答yes
或no
的选项。相反,它希望用户按 Ctrl + C 然后 a 进行中止。要继续,用户只需按 Enter 。
由于这对用户来说并不是很明显,因此您可以在prompt
参数中对其进行描述。
- name: Exterminate mankind
pause: prompt='Please confirm you want to exterminate mankind! Press return to continue. Press Ctrl+c and then "a" to abort'
答案 1 :(得分:4)
我需要重新引导所有主机,但是我不能冒险让用户只需按Enter键就可以重新引导。
要想在剧本的中间确定是/否,我搜索了很长时间才找到this post。 Ansible文档中没有对如何做到这一点进行很好的描述,但是下面是代码:
- name: Confirm important file deletion
pause:
prompt: "Are you sure you want to delete backup.db? (yes/no)"
register: confirm_delete
- name: Delete backup file
file:
path: /home/admin/backup.db
state: absent
when: confirm_delete.user_input | bool
答案 2 :(得分:0)
在不修改剧本本身的情况下获得每个任务提示的一种好方法是使用--step
命令的ansible-playbook
选项。
这样,您可以在运行每个步骤之前对其进行确认。您可以在此处选择(N)o/(y)es/(c)ontinue
。 N
跳过此步骤,y
运行该步骤,c
继续剧本的其余部分,而无需进一步提示(在调试时有用,并且经过麻烦的地方。)
请注意,使用--check
选项也可以正常工作。
Ansible官方文档在这里:https://docs.ansible.com/ansible/latest/user_guide/playbooks_startnstep.html#step