Spec-Zone.ru › Ansible 2.5

Выполнение вашей первой команды и книги задач

Примените полученные знания на практике с помощью этого краткого руководства. Установите 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
  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 [Gathering Facts]
***************************************************************************************************************************
ok: [vyos.example.net]

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

TASK [Display the config]
***************************************************************************************************************************
ok: [vyos.example.net] => {
    "failed": false,
    "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
  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 [Gathering Facts]
***********************************************************************************************************************************
ok: [vyos.example.net]

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

TASK [Display the config]
*************************************************************************************************************************************
ok: [vyos.example.net] => {
    "failed": false,
    "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] => {
    "failed": false,
    "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.5/network/getting_started/first_playbook.html

Spec-Zone.ru

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