HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Задачи, которые решаются с помощью Ansible, часто повторяются у разных людей и команд. Как и в случае программирования, где общий код выделяют в библиотеку, Ansible выделяет повторяющиеся вещи в роли. Эти роли выкладываются в общий<a>каталог</a>, через который любой человек может найти себе готовое решение по установке и настройке чего-либо.</p>
1 <p>Задачи, которые решаются с помощью Ansible, часто повторяются у разных людей и команд. Как и в случае программирования, где общий код выделяют в библиотеку, Ansible выделяет повторяющиеся вещи в роли. Эти роли выкладываются в общий<a>каталог</a>, через который любой человек может найти себе готовое решение по установке и настройке чего-либо.</p>
2 <p>Роль представляет собой набор задач или обработчик переменных, файлов и других артефактов, которые распространяются и подключаются как единое целое к плейбуку. Обычно, роли выполняют достаточно высокоуровневые задачи, например установку баз данных, веб-серверов и тому подобное. Иногда они автоматизируют работу с каким-то низкоуровневым сервисом, который не встроен в сам Ansible. Вот список некоторых популярных ролей:</p>
2 <p>Роль представляет собой набор задач или обработчик переменных, файлов и других артефактов, которые распространяются и подключаются как единое целое к плейбуку. Обычно, роли выполняют достаточно высокоуровневые задачи, например установку баз данных, веб-серверов и тому подобное. Иногда они автоматизируют работу с каким-то низкоуровневым сервисом, который не встроен в сам Ansible. Вот список некоторых популярных ролей:</p>
3 <ul><li><em>geerlingguy.java</em>: Роль для установки Java на Linux. Умеет ставить версии, которых нет в стандартных менеджерах.</li>
3 <ul><li><em>geerlingguy.java</em>: Роль для установки Java на Linux. Умеет ставить версии, которых нет в стандартных менеджерах.</li>
4 <li><em>ajsalminen.hosts</em>: Роль для управления содержимым файлов<em>/etc/hosts</em>и<em>/etc/hostname</em>через удобный конфиг, вместо прямой работы с файлами.</li>
4 <li><em>ajsalminen.hosts</em>: Роль для управления содержимым файлов<em>/etc/hosts</em>и<em>/etc/hostname</em>через удобный конфиг, вместо прямой работы с файлами.</li>
5 <li><em>jdauphant.ssl-certs</em>: Роль для генерации сертификатов</li>
5 <li><em>jdauphant.ssl-certs</em>: Роль для генерации сертификатов</li>
6 <li><em>ansistrano.deploy</em>: Роль с помощью которой можно деплоить проекты на любом языке программирования</li>
6 <li><em>ansistrano.deploy</em>: Роль с помощью которой можно деплоить проекты на любом языке программирования</li>
7 </ul><p>Возьмем для примера веб-сервер Nginx. Для его установки в Ansible Galaxy можно найти множество ролей от разных разработчиков, среди которых есть и официальная, разрабатываемая компанией NGINX.<a>Вот</a>ее страничка. Здесь мы видим описание и инструкцию для установки. Разберем их.</p>
7 </ul><p>Возьмем для примера веб-сервер Nginx. Для его установки в Ansible Galaxy можно найти множество ролей от разных разработчиков, среди которых есть и официальная, разрабатываемая компанией NGINX.<a>Вот</a>ее страничка. Здесь мы видим описание и инструкцию для установки. Разберем их.</p>
8 <p>Первый шаг - установка роли. Она выполняется с помощью команды ansible-galaxy:</p>
8 <p>Первый шаг - установка роли. Она выполняется с помощью команды ansible-galaxy:</p>
9 <p>Имя роли состоит из двух частей. Неймспейс, который обычно совпадает с именем пользователя на github и собственно имени роли, в данном случае<em>nginx</em>. Таким образом избегаются коллизии имен.</p>
9 <p>Имя роли состоит из двух частей. Неймспейс, который обычно совпадает с именем пользователя на github и собственно имени роли, в данном случае<em>nginx</em>. Таким образом избегаются коллизии имен.</p>
10 <p>Второй шаг - подключение. Роли добавляются в плейбук через ключ roles:</p>
10 <p>Второй шаг - подключение. Роли добавляются в плейбук через ключ roles:</p>
11 <p>Ansible начинает выполнять роли до tasks независимо от порядка организации верхнеуровневых ключей в плейбуке. Но иногда требуется выполнить какие-то подготовительные действия до выполнения роли. В таком случае есть два варианта.</p>
11 <p>Ansible начинает выполнять роли до tasks независимо от порядка организации верхнеуровневых ключей в плейбуке. Но иногда требуется выполнить какие-то подготовительные действия до выполнения роли. В таком случае есть два варианта.</p>
12 <ol><li><p>Добавить подготовительные задачи в pre_tasks:</p>
12 <ol><li><p>Добавить подготовительные задачи в pre_tasks:</p>
13 </li>
13 </li>
14 <li><p>Добавлять роли через import_role</p>
14 <li><p>Добавлять роли через import_role</p>
15 </li>
15 </li>
16 </ol><h2>Конфигурация ролей</h2>
16 </ol><h2>Конфигурация ролей</h2>
17 <p>Роли стараются делать достаточно общими, чтобы их можно было использовать в разных ситуациях. Для этого внутри роли определяются переменные, с помощью которых можно управлять поведением, например, способом установки, версией пакета и так далее. Переменные, которые для этого созданы можно найти в директории defaults/ в репозитории самой роли.<a>Пример</a>из Nginx:</p>
17 <p>Роли стараются делать достаточно общими, чтобы их можно было использовать в разных ситуациях. Для этого внутри роли определяются переменные, с помощью которых можно управлять поведением, например, способом установки, версией пакета и так далее. Переменные, которые для этого созданы можно найти в директории defaults/ в репозитории самой роли.<a>Пример</a>из Nginx:</p>
18 <p>Переопределяются эти переменные через ключ vars:</p>
18 <p>Переопределяются эти переменные через ключ vars:</p>
19 <h2>Автоматическая установка</h2>
19 <h2>Автоматическая установка</h2>
20 <p>Ansible умеет автоматически устанавливать роли. Для этого создается файл<em>requirements.yml</em>, например, в том месте где запускается ansible. Туда добавляется список нужных ролей:</p>
20 <p>Ansible умеет автоматически устанавливать роли. Для этого создается файл<em>requirements.yml</em>, например, в том месте где запускается ansible. Туда добавляется список нужных ролей:</p>
21 <p>Затем выполняется установка:</p>
21 <p>Затем выполняется установка:</p>
22  
22