如何在ansible角色之间设置暂停

Ash*_*har 1 syntax-error wait ansible pause ansible-role

这是我的剧本:

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

  roles:
    - { role: App1 }
    - { role: App2 }
    - { role: App3 }
    - { role: App4 }
Run Code Online (Sandbox Code Playgroud)

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

我尝试了以下但它给了我语法错误:

  roles:
    - { role: App1 }
  pause:
    seconds: 30
    - { role: App2 }
  pause:
    seconds: 30
    - { role: App3 }
Run Code Online (Sandbox Code Playgroud)

我也尝试过

  roles:
    - { role: App1 }
    - pause:
        seconds: 30
    - { role: App2 }
    - pause:
       seconds: 30
    - { role: App3 }
Run Code Online (Sandbox Code Playgroud)

你能建议一下吗?

lar*_*sks 5

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
Run Code Online (Sandbox Code Playgroud)

创建“暂停”角色

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

- name: pause
  pause:
    seconds: "{{ pause_seconds|default(30) }}"
Run Code Online (Sandbox Code Playgroud)

这在roles/pause/meta/main.yml

allow_duplicates: true
Run Code Online (Sandbox Code Playgroud)

现在你可以写:

- hosts: localhost
  roles:
    - App1
    - pause
    - App2
    - pause
    - App3
Run Code Online (Sandbox Code Playgroud)