Блог bitmanager

Ansible - как средство резервирования конфигурации Mikrotik

Меня скорее всего сейчас расстреляют адепты Ansible за то, что я мощное средство деплоя конфигураций использую как средство резервирования, но, если честно, для такой маленькой, но специфической задачи он подошел как нельзя кстати. Один из плейбуков Ansible у меня занимается резервированием Mikrotik-ов на удаленный сервер. Я не буду показывать все настройки, покажу только основной плейбук и потом прокомментирую некоторые моменты.

   # Резервирование роутера MikroTik.
      - hosts: mikrotik
         # gather_facts: no // needed for ansible_date_time
         vars:
         backup_file: "{{ name }}-{{ ansible_date_time.date }}.backup"
         tasks:
            - name: Создание бэкапа
               routeros_command:
               commands: "/system backup save dont-encrypt=yes name={{ backup_file }}"
            - name: Скачивание бэкапа
              net_get:
                  src: "{{ backup_file }}"
                  dest : "/var/backups/mikrotik/{{ backup_file }}"
            - name: Удаление бэкапа
                  routeros_command:
                  commands: "/file remove {{ backup_file }}"
            - name: Поиск файлов старше 7 дней
               find:
                  paths: /var/backups/mikrotik
                  age: 7d
                  register: files_to_delete
            - name: Удаление найденных файлов
               file:
                  path: "{{ item.path }}"
                  state: absent
                  with_items: "{{ files_to_delete.files }}"

Используйте Ansible не ниже версии 2.7, в предыдущих нет модуля routeros_command. Осторожно с использованием модуля net_get в версиях до 2.9. В net_put была бага, из-за которой он не работал. Возможно, что в net_get есть такая же. Последние две команды - ротация. Первая готовит список файлов старше 7 дней. Вторая их удаляет.
Записки сисадмина резервное копирование