Ansible vars_prompt用于角色

neo*_*eo0 6 ansible

我有一套Ansible剧本,主要的yml文件是这样的

- hosts: all 
  roles:
    - common
    - install_nginx
Run Code Online (Sandbox Code Playgroud)

我想在触发剧本时添加确认消息.我试过这个并没有用

- hosts: all
  vars_prompt:
    - name: CONFIRM
      prompt: Just to confirm you will install stuff
  tasks:
    - fail: no deployment this time
      when: CONFIRM != 'yes'
  roles:
    - common
    - install_nginx
Run Code Online (Sandbox Code Playgroud)

如何vars_prompt在没有修改的情况下使用role

yda*_*coR 6

如果您查看使用 运行 playbook 的输出,vars_prompt您将看到该fail任务在其他角色之后运行。Ansible docs for playbooks and roles也提到了这一点

如果该剧仍有“任务”部分,则在应用角色后执行这些任务。

正如上面的文档还提到,如果您想强制任务在任何角色之前运行,那么您可以使用pre_tasks.

因此,要让您的确认风格提示您可以简单地执行以下操作:

- hosts: all
  vars_prompt:
    - name: CONFIRM
      prompt: Just to confirm you will install stuff
  pre_tasks:
    - fail: no deployment this time
      when: CONFIRM != 'yes'
  roles:
    - common
    - install_nginx
Run Code Online (Sandbox Code Playgroud)