Ansible Как создать XML-файл или сценарий оболочки exec, если задача не выполнена или хост недоступен - PullRequest
0 голосов
/ 24 октября 2019

Я написал playbook, который поддерживает конфигурацию сетевых устройств. Мой playbook работает.

- name: run backup configuration
  hosts: HOST_NAME
  gather_facts: no
  connection: local
  vars:
    date: "{{ lookup('pipe', 'date +%Y%m%d') }}"
    backup_dir: "/backup/backup-{{ date }}"
    cli:
      host: "{{ ansible_host }}"
      username: <username>
      password: <password>
  tasks:
    - sros_command:
        commands: <command backup>
        provider: "{{ cli }}"
      register: config

    - copy:
        content: "{{ config.stdout[0] }}"
        dest: "{{ backup_dir }}/backup_conf-{{ inventory_hostname }}.txt"

Но в случае недоступности хоста или невозможности выполнить команду резервного копирования или задача не удалась. Если такая ситуация происходит, можем ли мы написать playbook для создания XML или сценария оболочки exec? Потому что я должен послать тревогу инструментам мониторинга.

Пожалуйста, помогите советом.

Спасибо

1 Ответ

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

Вы можете использовать ключевые слова ignore_errors и ignore_unreachable на уровне воспроизведения, блока или задачи. Это позволит продолжить игру, и вы можете использовать зарегистрированный результат в качестве условия для будущих задач.

Например (на уровне игры):

- name: run backup configuration
  hosts: HOST_NAME
  gather_facts: no
  connection: local

  ignore_errors: yes
  ignore_unreachable: yes

  vars:
    date: "{{ lookup('pipe', 'date +%Y%m%d') }}"
    backup_dir: "/backup/backup-{{ date }}"
    cli:
      host: "{{ ansible_host }}"
      username: <username>
      password: <password>

  tasks:
    - sros_command:
        commands: <command backup>
        provider: "{{ cli }}"
      register: config

    - <task to send alarm notification>
      when: config.unreachable

    - copy:
        content: "{{ config.stdout[0] }}"
        dest: "{{ backup_dir }}/backup_conf-{{ inventory_hostname }}.txt"
      when: config.unreachable is not defined
      register: copy_result

    - <task to send alarm notification>
      when: copy_result.failed

Обратите внимание, что вам понадобитсяиметь Ansible версии 2.7 или выше для использования ignore_unreachable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...