Обработка ошибок Ansible Playbook между играми - PullRequest
0 голосов
/ 23 октября 2019

Я использую playbook для достижения следующих целей:

  • Подключение локального хоста к удаленной сети через OpenVPN
  • Установка пакета программного обеспечения на удаленный хост в удаленной сети
  • Отключить localhost от соединения OpenVPN

Примечательно, что первый и последний шаги должны быть выполнены на localhost, чтобы иметь возможность (отключить) подключение OpenVPN.

При возникновении любой ошибки в игре № 2 (установка программного обеспечения), воспроизведение прерывается по умолчанию. Однако это, в свою очередь, полностью прерывает выполнение playbook, и соединение 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'

Кто-нибудь из вас знает, как мне решить эту проблему?

1 Ответ

0 голосов
/ 29 октября 2019

Попробуйте Delegate_to, как показано в примере

- 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...