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. В этой части
3 ansible

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

В первой части знакомства с Ansible мы успешно установили систему управления конфигурациями и написали первый playbook, во второй части разобрали результат выполнения нашего набора инструкций и научились повторно
ansible
Previous Story

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

ansible
Next Story

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

Latest from Blog

Docker: собираем веб сервер

Ниже предоставлен готовый набор окружения веб сервера на базе контейнеров Docker. Включает в себя MySQL, PHP, NGINX, composer, SSL сертификаты и механизм резервного копирования в облако. Код доступен на github. Компоненты сервера Для

Как с помощью docker запустить окружение для разработки nginx + php + mysql

Создание проекта Compose Подготовка контейнерной среды разработки веб-приложения отождествляется с созданием проекта Compose. Для этого начинать нужно с создания каталога проекта Compose.Его имя – new_compose_project. Создадим каталог, после чего перейдем к нему. Введем в

обновить Debian 11 до Debian 12 Bookworm

Подготовка системы к обновлению Перед обновлением рекомендую ознакомиться с официальным руководством Upgrades from Debian 11 (bullseye). Мои дальнейшие действия соответствуют некоторым рекомендациям из этого документа. В первую очередь проверьте все бэкапы. И по

Мониторинг докер-хостов, контейнеров и контейнерных служб

Я искал self-hosted мониторинговое решение с открытым кодом, которое может предоставить хранилище метрик, визуализацию и оповещение для физических серверов, виртуальных машин, контейнеров и сервисов, действующих внутри контейнеров. Опробовав Elastic Beats, Graphite и
Go toTop

Don't Miss

ansible

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

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

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

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