Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Модуль Ansible для управления конфигурациями маршрутизаторов ESR. Модуль позволяет получать бэкап с устройства и загружать на устройство заранее подготовленный конфигурационный файлуправлять как отдельными частями конфигурации, так и загружать файл конфигурации целиком.

Параметры

ПараметрВарианты/По умолчаниюКомментарий

after

-


Упорядоченный набор команд, которые необходимо выполнить на устройстве после выполнения команд в списке lines. Данные команды будут выполнены только если должны быть внесены изменения, при этом они будут выполнены в независимости от того, есть ли они в текущей конфигурации.

apply_when

-

Варианты:

  • always
  • modified 
  • never
Данный параметр управляет отправкой команды commit на устройство. Если параметр установлен в always, то команда commit отправится на устройство в независимости от необходимости внесения изменений. Если параметр установлен в modified, то команда commit отправится на устройство только в том случае, если текущая конфигурация устройства отличается от исходной. Если параметр установлен в never, то команда commit не будет отправлена на устройство. Если команда commit была отправлена на устройство, то будет активирован таймер (по умолчанию 600 секунд), по истечению которого на устройстве будет произведён автоматический откат на действующую ранее конфигурацию. Для остановки этого таймера и применения внесённых изменений необходимо использовать параметр save_when.

backup

boolean

Варианты:

no
  • True
  • False 
  • yes
  • Данный параметр даёт указание модулю получить полный бэкап

    текущего конфига

    текущей конфигурации с устройства, прежде чем какие-либо изменения будут произведены. Файл бэкапа будет сохранён в каталоге backup в корневой директории плейбука. Если каталог отсутствует, то он будет создан.

    confirm

    before

    -


    Упорядоченный набор команд, которые необходимо выполнить на устройстве до выполнения команд в списке lines. Данные команды будут выполнены только если должны быть внесены изменения, при этом они будут выполнены в независимости от того, есть ли они в текущей конфигурации.

    lines

    -


    Упорядоченный набор команд, который необходимо сконфигурировать на устройстве. Для достижения идемпотентности необходимо указывать команды так, как они будут выглядеть в running-config после их обработки парсером устройства.

    псевдоним: commands

    match

    -

    Варианты:
    • line 
    • strict
    • exact
    • none
    Данный параметр указывает каким образом сравнивать набор команд с текущей конфигурацией устройства. Если параметр установлен в line, то команды сравниваются построчно. Если параметр установлен в strict, то команды сравниваются с учётом позиции. Если параметр установлен в exact, то набор команд должен в точности совпадать с соответствующей секцией в текущей конфигурации устройства. Если параметр установлен в none, то модуль не будет сравнивать команды с текущей конфигурацией устройства.

    merge

    boolean

    Варианты:

    • no
    • yes
    Данный параметр даёт указание модулю отправить на устройство команду confirm, если после отправки конфигурации не произошло ошибок. Если данный параметр не указан, то по
    • True
    • False 
    Данный параметр  включает   объединение  загруженной конфигурации с candidate-config,  текущие параметры будут  обновлены, новые  параметры будут добавлены. Команда поддержана начиная с версии ПО ESR 1.11.2. 

    parents

    -


    Упорядоченный набор предков, однозначно идентифицирующих раздел или иерархию, по которым должны проверяться команды. Если параметр не указан, то команды будут проверяться с верхнего уровня иерархии.

    replace

    -

    Варианты:

    • line 
    • block
    Данный параметр указывает каким образом отправлять команды на устройство. Если параметр установлен в line, то изменённые строки отправляются на устройство. Если параметр установлен в block, то на устройство будет отправлен блок команд, если какая-то строка будет изменена.

    rollback

    -

    Варианты:

    • True
    • False
    Данный параметр управляет отправкой команды rollback на устройство. Если параметр установлен в true, то модуль отправит команду rollback перед тем, как внести изменения. Если параметр установлен в false, то команда rollback не будет отправлена на устройство.

    save_when

    -

    Варианты:

    • always
    • applied
    • never 
    Данный параметр управляет отправкой команды confirm на устройство. Если параметр установлен в always, то команда confirm отправится в независимости от применённых изменений. Если параметр установлен в applied, то команда confirm будет отправлена только в том случае, если на устройстве были применены какие-то изменения в соответствии с параметром apply_when. Если параметр установлен в never, то команда confirm не будет отправлена на устройство и по истечению заданного времени (по умолчанию 600 секунд) устройство произведёт автоматический откат на действующую ранее конфигурацию.

    sftp_user

    -


    Данный параметр указывает имя пользователя, с которым необходимо подключиться к устройству по протоколу sftp. Игнорируется, если параметр use_sftp установлен в false.

    sftp_password

    -


    Данный параметр указывает пароль, с которым необходимо подключиться к устройству по протоколу sftp с использованием имени пользователя, указанного в параметре sftp_user. Игнорируется, если параметр use_sftp установлен в false.

    src

    -

    -

    В данном параметре указывается путь к файлу, содержащему

    валидную

    конфигурацию маршрутизатора ESR, либо шаблон конфигурации. При использовании данного параметра произойдёт полная замена текущей конфигурации. Если  параметр  merge будет уставлен в true,  то загружаемая конфигурация будет   объединена с candidate-config.

    Примечание

    Загружаемая конфигурация  должна  иметь  преамбулу  

    Блок кода
    #!/usr/bin/clish
    #18
    #1.11.2
    #18/09/2020
    #17:57:44
    
    

    В противном случает  будет  использовать  построчный режим ввода.


    use_sftp

    boolean

    Варианты:

    • True
    • False
    Данный параметр даёт указание использовать протокол sftp для отправки конфигурации на устройство при использовании параметра src. Для работы необходимо также указать параметры sftp_user и sftp_password.

    Примечания

    Примечание
    • Протестировано на версии ПО ESR 1.4.1Для 6.2
    • Поддерживается управление устройствами с ПО 1.0.7-ST
    • Для ускорения загрузки конфигурации при использовании параметра src рекомендуется использовать параметр use_sftp.
    • Для использования протокола sftp для загрузки конфигурации необходимо предварительно создать на устройстве пользователя для работы с sftp, указав в настройках этого пользователя ip sftp enable. Данный функционал доступен на ПО ESR версий не ниже 1.6.2, а также 1.0.7-ST
    • Для корректной работы необходима версия Ansible не ниже 2.7.6
    • Сокращённые команды не являются идемпотентными, подробнее смотрите здесь
    • Для подключения к устройству необходимо указать ansible_connection: network_cli и ansible_network_os: esr
    • При использовании модулей в виртуальном окружении virtualenv необходимо явно указать путь к интерпретатору python виртуального окружения при помощи ansible_python_interpreter.
    • Для получения информации об использовании Ansible для управлении сетевыми устройствами обратитесь к официальному руководству Ansible
    • Параметр  merge поддержан начиная с версии ПО ESR 1.11.2

    Примеры

    Блок кода
    languagetextyml
    - name: get full backup from ESR device
      esr_config:
        backup: true
    
    - name: upload config from src to ESR device whith sftp and confirm
      esr_config:
        src: esr-1000.cfg
        use_sftp: true
        sftp_user: sftpuser
        sftp_password: sftppassword
        save_when: applied
    
    - name: render a Jinja2 template onto a ESR device
      esr_config:
        src: esr-config.j2
        save_when: applied
    
    - name: getadd fullsftp backupuser
    from ESR device
      esr_config:
        save_when: applied
        parents:
          - username sftpuser
        lines:
          - password sftppassword
          - ip sftp enable
    
    - name: configure ip helpers on multiple interfaces
      esr_config:
        backupsave_when: yesapplied
        lines:
          - ip helper-address 192.168.0.10
        parents: "{{ item }}"
      with_items:
        - bridge 1
        - bridge 2
        - bridge 3
    
     - name: upload config from src to ESR device and confirm
      configure nat section
       esr_config:
         save_when: applied
         parents:
           - nat source
           - ruleset NAT_ALL
           - rule 100
         lines:
           - match protocol tcp
           - match source-address any
           - action source-nat pool nat_ip
           - enable
    
    - name: load new rule to existing access-list
      esr_config:
        save_when: applied
        match: exact
        before:
          - ip access-list extended ip-acl
          - no rule 1
        parents:
          - ip access-list extended ip-acl
          - rule 1
        lines:
          - action permit
          - match protocol tcp
          - match destination-port 443
          - enable
    
    - name: for idempotency, use full-form commands
      esr_config:
        srcparents:
    esr-1000.cfg
        confirm: True      # - br 6
          - bridge 6
        lines:
          # - ip help 192.168.0.10
          - ip helper-address 192.168.0.10

    Возвращаемые значения

    В общем случае возвращаемые значения описаны здесь. Ниже перечислены уникальные для модуля значения:

    ЗначениеУсловиеОписание

    backup_path

    string

    когда параметр

    backup установлен в

    yes

    true

    Полный путь к файлу бэкапа

    Пример:

    /ansible/playbooks/backup/esr-1000-config.2019-02-19@11:10:06

    commands

    list

    всегда

    Набор команд, которые будут отправлены на устройство

    Пример:

    ['hostname esr-1000', 'ip ssh server', 'ip telnet server']

    updates

    list

    всегда

    Набор команд, которые будут отправлены на устройство

    Пример:

    ['hostname esr-1000', 'ip ssh server', 'ip telnet server']


    Установка

    Ссылка на архив

    Для установки скачайте архив по ссылке выше, распакуйте и запустите скрипт install.py

    Блок кода
    languagebash
    tar xvzf esr_config-ansible.tar.gz
    cd ./esr_config-ansible
    python install.py