暂停ansible playbook以进行用户确认,是否运行休息任务

时间:2015-12-15 13:28:10

标签: ansible ansible-playbook

我正在运行ansible-playbook,其中列出了许多任务。所有这些都用来逐个运行,但是我想在特定任务之后pause播放本,询问用户是否要继续运行其余任务或退出。我已经看到了pause module的ansible,但看不到任何询问用户是或否的示例,而这些示例依次继续或退出ansible-playbook。

3 个答案:

答案 0 :(得分:28)

pause模块实际上就是这样做的。但它没有为您提供回答yesno的选项。相反,它希望用户按 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)ontinueN跳过此步骤,y运行该步骤,c继续剧本的其余部分,而无需进一步提示(在调试时有用,并且经过麻烦的地方。) 请注意,使用--check选项也可以正常工作。

Ansible官方文档在这里:https://docs.ansible.com/ansible/latest/user_guide/playbooks_startnstep.html#step