Ansible для начинающих в стиле best-practice
⚡Подписка от OTUS!
Собери свой пул курсов на выгодных условиях. Подробности в чате →
Написать в чат

Курсы

Программирование
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Разработчик C#
-8%
Алгоритмы и структуры данных
-8%
Backend-разработчик на PHP
-8%
JavaScript Developer. Professional
-9%
Team Lead
-5%
Golang Developer. Professional
-6%
Agile Project Manager
-5%
Flutter Mobile Developer
-10%
MS SQL Server Developer
-8%
C++ Developer. Professional Android Developer. Professional Framework Laravel Cloud Solution Architecture Highload Architect Reverse-Engineering. Professional Kotlin Backend Developer React.js Developer VOIP инженер Нереляционные базы данных Scala-разработчик Супер-практикум по использованию и настройке GIT IoT-разработчик JavaScript Developer. Basic Advanced Fullstack JavaScript developer Unity Game Developer. Professional Супер-интенсив Azure
Инфраструктура
Супер-интенсив "Версионирование и командная работа с помощью Git"
-30%
Administrator Linux. Professional
-5%
Супер-интенсив «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Разработчик программных роботов (RPA) на базе UiPath и PIX
-6%
Administrator Linux. Advanced
-8%
Infrastructure as a code in Ansible
-12%
Network engineer
-4%
MS SQL Server Developer
-8%
Cloud Solution Architecture Highload Architect Разработчик голосовых ассистентов и чат-ботов Мониторинг и логирование: Zabbix, Prometheus, ELK Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Архитектор сетей Супер-интенсив «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Начинаем с Ansible в стиле best-practice

Linux_Deep_29.06_SITE.png

На просторах сети есть много гайдов на русском вроде «Учим Ansible с нуля». Но ни в одном из них я не видел, чтобы человека сразу же погружали в best-practice. Хотя бы в плане построение древа директорий для ролей. Считаю, что сделать это надо хотя бы потому, что переезд на best-practice может оказаться болезненным для новичков. Сейчас я попытаюсь исправить этот недочёт. Используемая в примерах ОС – Centos 7.5.

Разберёмся немного, что за best-practice такой

Идём по ссылке и читаем:

These may not use all of the features in the latest release, but are still an excellent reference!

Мораль такова: всё аккуратно разложено по директориям для вашего же удобства в дальнейшем использовании. Сам Ansible понимает, для чего нужна каждая директория. Например, из rolename/vars он по умолчанию берёт переменные для роли, а из rolename/tasks он берёт основные задачи. Что такое роли можно прочитать, например, ТУТ >>

Установим Ansbile и GIT

Всё есть в стандартных репозиториях:

yum install -y ansible git

Проверим установку:

ansible --version && git --version

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

git clone https://github.com/mattjbarlow/ansible-directory.git. 

Хотя первый раз, конечно, советую пройти это всё вручную – для закрепления материала. Обязательно зайдите в директорию и изучите её содержимое.

Далее пропишем хост в тестовый инвентаризационный файл:

cd ansible-directory
echo "192.168.255.1 ansible_ssh_user=root" >> staging

Протестируем соединение с тестовым хостом:

ansible -i staging -m ping all

У нас почти всё настроено

Осталось только попробовать на реальном примере:

git clone https://github.com/geerlingguy/ansible-role-nginx.git roles/nginx

Перед запуском зайдите в site.yml и поменяйте role: common на role: nginx. Прелесть ролей как раз в том, что вам нужно просто указать имя директории и Ansible всё поймёт сам.

Ну и запускаем нашу роль:

ansible-playbook -i staging site.yml

В итоге на тестовом сервере успешно установлен и настроен nginx.

Есть вопрос? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
1 комментарий
2

Устанавливать роли через git clone это прекрасно) Ну и пример ansible-directory не особо хороший.

Для комментирования необходимо авторизоваться