在使用块的ansible中将清除作为角色

时间:2019-02-11 20:55:17

标签: ansible

当任何一个角色发生故障时,我都试图用ansible编写清除调用,我有三个角色,如果这三个角色出现任何故障,请呼叫CLEANUP_ROLE。

1. ROLE_A
2. ROLE_B
3. ROLE_C

第四个是清理角色(CLEANUP_ROLE),以下是我的main.yml剧本。 http://www.yamllint.com/说遵循YML是正确的,但我仍然感到失败。有人可以帮我指出错误在哪里吗?

---
- hosts: localhost
  gather_facts: yes
  tasks:
  block:
  roles:
    - {role: ROLE_A}
    - {role: ROLE_B,VAR_A: 3 ,VAR_B: 6 }
  tags:
     - FOOBAR
  rescue:
    - {role: CLEANUP_ROLE}



- hosts: REMOTE_NODES
  gather_facts: no
  tasks:
  block:
  roles:
    - {role: ROLE_C,VAR_A: 3 ,VAR_B: 6}
  rescue:
    - {role: CLEANUP_ROLE}

出现以下错误:

ERROR! 'rescue' is not a valid attribute for a Play

The error appears to have been in '/home/monk/ansible/main.yml': line 10, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

---
- hosts: localhost
  ^ here

1 个答案:

答案 0 :(得分:1)

  

以下是我的main.yml剧本。 http://www.yamllint.com/说遵循YML是正确的

好吧,这取决于人们如何定义“正确”。它很可能是 legal yaml,因为它格式正确,但是由于没有正确缩进,因此不是“有效”。

rescue:仅在block:中使用,而不在剧本中使用,因此您可能希望使用import_role:

- hosts: localhost
  gather_facts: yes
  tasks:
  - block:
      - import_role: 
          name: ROLE_A
      - import_role:
          name: ROLE_B
        vars:
          VAR_A: 3
          VAR_B: 6
    rescue:
      - include_role: {role: CLEANUP_ROLE}
    tags:
      - FOOBAR

(尽管请注意,我没有测试您是否可以以这种方式rescue:import_role:,但至少比您的代码段更有可能是功能可运行的代码)