Запуск вашей первой команды и книги задач
Примените полученные знания в этом кратком руководстве. Установите 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. Книга задач может хранить множество параметров, которые вы указали с флагами в командной строке, оставляя меньше для ввода в командной строке. Для этого вам нужны два файла — книга задач и файл инвентаризации.
- Загрузите
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 здесь позволяет просмотреть результаты в вашей оболочке.
- Запустите книгу задач с помощью команды:
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"
}
- Теперь, когда вы можете получить конфигурацию устройства, попробуйте обновить ее с помощью 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.6/network/getting_started/first_playbook.html