Spec-Zone.ru › Ansible 2.8

Запуск первого сценария и руководства по эксплуатации

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

  • Предварительные требования
  • Установка Ansible
  • Установление ручного подключения к управляемому узлу
  • Выполнение первой сетевой команды Ansible
  • Создание и выполнение первого сетевого руководства по эксплуатации Ansible

Предварительные требования

Перед тем, как приступить к этому руководству, вам необходимо:

  • Установленный Ansible 2.5 (или более поздней версии)
  • Одно или несколько сетевых устройств, совместимых с Ansible
  • Базовые знания командной строки Linux
  • Базовые знания конфигурации сетевых коммутаторов и маршрутизаторов

Установка Ansible

Установите Ansible с помощью вашего предпочтительного метода. См. Руководство по установке. Затем вернитесь к этому руководству.

Подтвердите версию Ansible (должна быть >= 2.5):

ansible --version

Установление ручного подключения к управляемому узлу

Для подтверждения ваших учетных данных подключитесь к сетевому устройству вручную и получите его конфигурацию. Замените пример пользователя и имя устройства своими реальными учетными данными. Например, для маршрутизатора VyOS:

ssh my_vyos_user@vyos.example.net
show config
exit

Это ручное подключение также подтверждает подлинность сетевого устройства, добавляя его отпечаток RSA-ключа в ваш список известных хостов. (Если вы подключались к устройству ранее, его подлинность уже установлена.)

Выполнение первой сетевой команды Ansible

Вместо ручного подключения и выполнения команды на сетевом устройстве, вы можете получить его конфигурацию с помощью одной, упрощенной команды Ansible:

ansible all -i vyos.example.net, -c network_cli -u my_vyos_user -k -m vyos_facts -e ansible_network_os=vyos
Флаги в этой команде устанавливают семь значений:
  • группы хостов, к которым должна применяться команда (в данном случае все)
  • инвентаризация (-i, устройство или устройства, на которые нужно нацелится - без заключительной запятой -i указывает на файл инвентаризации)
  • метод подключения (-c, метод подключения и выполнения ansible)
  • пользователь (-u, имя пользователя для подключения SSH)
  • метод подключения SSH (-k, пожалуйста, введите пароль)
  • модуль (-m, модуль ansible для выполнения)
  • дополнительная переменная (-e, в данном случае, установка значения сетевой ОС)

ПРИМЕЧАНИЕ: Если вы используете ssh-agent с ключами ssh, Ansible загружает их автоматически. Вы можете опустить -k флаг.

Создание и выполнение первого сетевого руководства по эксплуатации Ansible

Если вы хотите запускать эту команду каждый день, вы можете сохранить ее в руководстве по эксплуатации и запустить с помощью ansible-playbook вместо ansible. Руководство по эксплуатации может хранить многие параметры, которые вы предоставили с помощью флагов в командной строке, оставляя меньше для ввода в командной строке. Для этого вам нужны два файла - руководство по эксплуатации и файл инвентаризации.

  1. Загрузите first_playbook.yml, который выглядит так:
---

- name: Network Getting Started First Playbook
  connection: network_cli
  gather_facts: false
  hosts: all
  tasks:

    - name: Get config for VyOS devices
      vyos_facts:
        gather_subset: all

    - name: Display the config
      debug:
        msg: "The hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"

Руководство по эксплуатации задает три из семи значений из командной строки выше: группу (hosts: all), метод подключения (connection: network_cli) и модуль (в каждой задаче). Установив эти значения в руководстве по эксплуатации, вы можете опустить их в командной строке. Руководство по эксплуатации также добавляет вторую задачу, чтобы показать вывод конфигурации. При выполнении модуля в руководстве по эксплуатации выходные данные сохраняются в памяти для использования в будущих задачах вместо записи в консоль. Задача debug здесь позволяет увидеть результаты в вашей оболочке.

  1. Выполните руководство по эксплуатации с помощью команды:
ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos first_playbook.yml

Руководство по эксплуатации содержит один этап с двумя задачами и должно генерировать вывод, подобный этому:

$ ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos first_playbook.yml

PLAY [First Playbook]
***************************************************************************************************************************

TASK [Get config for VyOS devices]
***************************************************************************************************************************
ok: [vyos.example.net]

TASK [Display the config]
***************************************************************************************************************************
ok: [vyos.example.net] => {
    "msg": "The hostname is vyos and the OS is VyOS"
}
  1. Теперь, когда вы можете получить конфигурацию устройства, попробуйте обновить ее с помощью Ansible. Загрузите first_playbook_ext.yml, который является расширенной версией первого руководства по эксплуатации:
---

- name: Network Getting Started First Playbook Extended
  connection: network_cli
  gather_facts: false
  hosts: all
  tasks:

    - name: Get config for VyOS devices
      vyos_facts:
        gather_subset: all

    - name: Display the config
      debug:
        msg: "The hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"

    - name: Update the hostname
      vyos_config:
        backup: yes
        lines:
          - set system host-name vyos-changed

    - name: Get changed config for VyOS devices
      vyos_facts:
        gather_subset: all

    - name: Display the changed config
      debug:
        msg: "The hostname is {{ ansible_net_hostname }} and the OS is {{ ansible_net_version }}"

Расширенное первое руководство по эксплуатации содержит четыре задачи в одном этапе. Выполните его с той же командой, что и выше. Вывод покажет вам изменения, внесенные Ansible в конфигурацию:

$ ansible-playbook -i vyos.example.net, -u ansible -k -e ansible_network_os=vyos first_playbook_ext.yml

PLAY [First Playbook]
************************************************************************************************************************************

TASK [Get config for VyOS devices]
**********************************************************************************************************************************
ok: [vyos.example.net]

TASK [Display the config]
*************************************************************************************************************************************
ok: [vyos.example.net] => {
    "msg": "The hostname is vyos and the OS is VyOS"
}

TASK [Update the hostname]
*************************************************************************************************************************************
changed: [vyos.example.net]

TASK [Get changed config for VyOS devices]
*************************************************************************************************************************************
ok: [vyos.example.net]

TASK [Display the changed config]
*************************************************************************************************************************************
ok: [vyos.example.net] => {
    "msg": "The hostname is vyos-changed and the OS is VyOS"
}

PLAY RECAP
************************************************************************************************************************************
vyos.example.net           : ok=6    changed=1    unreachable=0    failed=0

Это руководство по эксплуатации полезно. Однако его запуск всё ещё требует нескольких флагов командной строки. Кроме того, запуск руководства по эксплуатации на одном устройстве не является значительным повышением эффективности по сравнению с ручными изменениями. Следующим шагом для использования всех возможностей Ansible является использование файла инвентаризации для организации ваших управляемых узлов в группы с информацией, такой как ansible_network_os и имя пользователя SSH.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/network/getting_started/first_playbook.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API