0

ansible

Знакомство с Ansible. Часть 2: разбор вывода playbook

В предыдущей статье мы успешно установили и проверили работоспособность системы управления конфигурациями Ansible, а так же написали и выполнили первый набор инструкций (playbook). Давайте разберемся с результатами его выполнения!

ansible-playbook install_nginx.yml 

PLAY [test] ****************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [test-1]
ok: [test-2]

TASK: [Install package nginx] ************************************************* 
changed: [test-1]
changed: [test-2]

TASK: [Starting service nginx] ************************************************ 
ok: [test-1]
ok: [test-2]

PLAY RECAP ******************************************************************** 
test-1                 : ok=3    changed=1    unreachable=0    failed=0   
test-2                 : ok=3    changed=1    unreachable=0    failed=0   

GATHERING FACTS — это первая задача, которая по умолчанию присутствует в любом наборе инструкций. Как видим из названия задачи, ее цель — сбор метаданных об удаленных хостах в форме переменных (например ip-адреса, имени хоста, установленной ОС). Полученные данные могут быть использованы в следующих задачах, описанных в playbook.

Посмотреть переменные и их значения можно командой:

ansible -m setup test

Дальше в выводе следуют задачи, описанные в секции task: набора инструкций и результаты их выполнения:

  • TASK: [Install package nginx] — установка web-сервера nginx;
  • TASK: [Starting service nginx] — запуск web-сервера nginx.

Первая задача выполнена с изменениями, о чем свидетельствует состояние changed — все верно, раньше web-сервера nginx в системе не было, теперь он установлен.

Вторая задача выполнена без изменений, так как web-сервер nginx автоматически запускается после установки.

Для сравнения результатов вывода, запустим данный набор инструкций еще раз:

ansible-playbook install_nginx.yml 

PLAY [test] ****************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [test-1]
ok: [test-2]

TASK: [Install package nginx] ************************************************* 
ok: [test-1]
ok: [test-2]

TASK: [Starting service nginx] ************************************************ 
ok: [test-1]
ok: [test-2]

PLAY RECAP ******************************************************************** 
test-1                 : ok=3    changed=0    unreachable=0    failed=0   
test-2                 : ok=3    changed=0    unreachable=0    failed=0 

Видим, что результаты выполнения задачи Install package nginx отличаются от предыдущего запуска playbook.

Последняя секция в выводе результатов выполнения набора инструкций — PLAY RECAP. Здесь присутствуют четыре параметра:

  • ok — количество выполняемых задач (включая задачу GATHERING FACTS);
  • changed — количество измененных состояний на удаленном хосте;
  • unreachable — количество хостов, которые были недоступны по время выполнения набора инструкций;
  • failed — количество невыполненных задач на удаленном хосте. Подробности выполнения набора инструкций (playbook) можно увидеть с помощью вывода отладочной информации одного из трех доступных уровней (-v-vv и -vvv соответственно).

Также для отладки часто выводят переменные, полученные с удаленных хостов при выполнении задачи GATHERING FACTS, для этого достаточно в playbook добавить такую задачу:

...
- name: Debug
    debug: msg={{ ansible_distribution }}

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

ansible-playbook debug.yml 

PLAY [test] ****************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [test-1]
ok: [test-2]

TASK: [Debug] ***************************************************************** 
ok: [test-1] => {
    "msg": "Ubuntu"
}
ok: [test-2] => {
    "msg": "Ubuntu"
}

PLAY RECAP ******************************************************************** 
test-1                 : ok=2    changed=1    unreachable=0    failed=0   
test-2                 : ok=2    changed=1    unreachable=0    failed=0   

Запустить только конкретную задачу из playbook можно командой:

ansible-playbook debug.yml --step --start-at-task="Debug"

Весьма полезной является возможность вызывать набор инструкций из другого набора инструкций. Хороший пример — обновление установленных пакетов в ОС. Для этого создадим playbook update_os.yml со следующим содержанием:

---
  tasks:
 
  - name: Update
    apt: update_cache=yes
  - name: Upgrade
    apt: upgrade=full

Этот playbook можно включить как задачу в набор инструкций install_nginx.yml, который мы создавали в предыдущей статье:

---
- hosts: test
  tasks:
 
  - include: update_os.yml
 
  - name: Install nginx package
    apt: name=nginx update_cache=yes
    sudo: yes
 
  - name: Starting nginx service
    service: name=nginx state=started
    sudo: yes

И теперь, перед установкой web-сервера nginx на удаленных хостах будут обновлены установленные пакеты.

В следующей статье рассмотрим использование условий и переменных в наборах инструкций.

Облачная платформа

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

1 ansible

Знакомство с Ansible. Часть 1: Введение

Ansible – одна из систем управления конфигурациями (автоматизации настройки и развертывания серверов). Особенность Ansible – наличие управляющего сервера, с которого отправляются команды или наборы инструкций
2 ansible

Знакомство с Ansible. Часть 4: модули

Мы уже справились установкой системы управления конфигурациями Ansible, написали первый набор инструкций (playbook) и разобрали результат его выполнения, а также ознакомились с использованием переменных в Ansible. В этой части
ansible
Previous Story

Знакомство с Ansible. Часть 1: Введение

ansible
Next Story

Знакомство с Ansible. Часть 3: переменные

Latest from Blog

Проброс портов в роутере MikroTik 2

Проброс портов в роутере MikroTik (port forwarding) позволяет организовать удаленный доступ из интернета к какому-нибудь устройству внутри вашей локальной сети (к IP-камере, Web, FTP или игровому серверу). В данной статье мы рассмотрим пример, как

How to set up WireGuard Client on Debian?

WireGuard is an extremely simple yet fast and modern VPN. Setting up the WireGuard VPN client on Debian is straightforward. In this tutorial, we will set up WireGuard VPN client on Debian
Go toTop

Don't Miss

ansible

Ansible: ввод sudo-пароля при выполнении playbook

Большинство действий в наборах инструкций системы управления конфигурациями Ansible следует выполнять с
ansible

Добавление учетных записей с помощью Ansible

Ранее мы уже рассматривали несколько вариантов использования системы управления конфигурациями Ansible,