当任何一个角色发生故障时,我都试图用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
答案 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:
,但至少比您的代码段更有可能是功能可运行的代码)