播放之间的Ansible Playbook错误处理
我正在使用剧本实现以下目标:播放之间的Ansible Playbook错误处理,ansible,Ansible,我正在使用剧本实现以下目标: 通过OpenVPN将本地主机连接到远程网络 将软件包安装到远程网络中的远程主机 断开本地主机与OpenVPN连接的连接 值得注意的是,第一步和最后一步必须在本地主机上运行,才能(dis-)连接OpenVPN 当播放#2(软件安装)中出现任何错误时,按照默认设置,播放将中止。 但是,这反过来会完全中止playbook的执行,OpenVPN连接保持不变,这是不需要的 我已经搜索了错误处理,但他们没有指定任何在“游戏级别”上进行解救并继续剧本中的下一个游戏的方法 我不
- 通过OpenVPN将本地主机连接到远程网络
- 将软件包安装到远程网络中的远程主机
- 断开本地主机与OpenVPN连接的连接
block
与rescue
一起使用,因为此方法仅限于当前正在运行的播放
我的剧本如下:
- name: Connect to OpenVPN-Server
hosts: localhost
roles:
- role: ovpn-connect
when: HOSTING_TYPE == 'openvpn'
- name: 'Setup {{ PRODUCT }} server on {{ HOSTNAME }}'
hosts: '{{ HOSTNAME }}'
gather_facts: no
roles:
- role: docker
- role: certbot
when: SSL == 'yes'
- role: {{ PRODUCT }}
- role: seeding
vars:
INITIAL_USER: admin
INITIAL_PASS: ***
- role: restore
when: FILENAME is defined and FILENAME != ''
- role: zabbix-agent
when: MONITORING is defined and MONITORING == 'yes'
- name: Disconnect from OpenVPN-Server
hosts: localhost
roles:
- role: ovpn-close
when: HOSTING_TYPE == 'openvpn'
你们中有谁知道我如何克服这个问题吗?试着像下面的例子一样
- name: This is my play
hosts: my-web-server
tasks:
- name: Disable pool member for upgrading
bigip_pool_member:
pool: foo
name: "{{ inventory_hostname }}"
state: disabled
delegate_to: localhost
- name: Upgrade the webserver
apt:
name: apache2
state: latest
- name: Re-enable pool member after upgrading
bigip_pool_member:
pool: foo
name: "{{ inventory_hostname }}"
state: enabled
delegate_to: localhost
AFAIK失败时,只能设置为角色和任务,不能设置为整个播放。确定。现在我明白了。。您正在使用3个播放,因为每个播放都有不同的主机(1、3在本地主机中,第2个播放在远程主机中)。。为此,我建议您使用delegate_to。请参阅我的答案,其中更新了代表的示例。。