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

- hosts: all
  roles:
    - common
    - install_nginx


我想在触发剧本时添加确认消息。我尝试了这个但没有用

- 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


在这种情况下,如何在不修改每个vars_prompt的情况下使用role

最佳答案

如果查看使用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

关于ansible - 角色的Ansible vars_prompt,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34504663/

10-11 22:56
查看更多