如何在ansible角色之间暂停

How to put pause between ansible roles

这是我的剧本:

---
- hosts: "mms"
  user: wladmin

  roles:
    - { role: App1 }
    - { role: App2 }
    - { role: App3 }
    - { role: App4 }

我希望在这些 ansible 角色之间暂停 30 秒。

我尝试了下面的方法,但它给我语法错误:

  roles:
    - { role: App1 }
  pause:
    seconds: 30
    - { role: App2 }
  pause:
    seconds: 30
    - { role: App3 }

我也试过了

  roles:
    - { role: App1 }
    - pause:
        seconds: 30
    - { role: App2 }
    - pause:
       seconds: 30
    - { role: App3 }

你能推荐一下吗?

pause 不是角色,因此您不能将其包含在您的剧本的 roles 部分中。 pause 是一项任务。您有几个选择:

使用 import_role 任务代替 roles 部分

例如:

- hosts: localhost
  tasks:
    - import_role:
        name: App1
    - pause:
        seconds: 30
    - import_role:
        name: App2
    - pause:
        seconds: 30
    - import_role:
        name: App3

创建一个“暂停”角色

创建一个 pause 角色。把这个放在 roles/pause/tasks/main.yml:

- name: pause
  pause:
    seconds: "{{ pause_seconds|default(30) }}"

roles/pause/meta/main.yml中的这个:

allow_duplicates: true

现在你可以写:

- hosts: localhost
  roles:
    - App1
    - pause
    - App2
    - pause
    - App3