Ansible в действии | OTUS
🔥 Начинаем BLACK FRIDAY!
Максимальная скидка -25% на всё. Успейте начать обучение по самой выгодной цене.
Выбрать курс

Курсы

Программирование
iOS Developer. Basic
-25%
Python Developer. Professional
-25%
Разработчик на Spring Framework
-25%
Golang Developer. Professional
-25%
Python Developer. Basic
-25%
iOS Developer. Professional
-25%
Node.js Developer
-25%
Unity Game Developer. Professional
-25%
React.js Developer
-25%
Android Developer. Professional
-25%
Software Architect
-25%
C++ Developer. Professional
-25%
Backend-разработчик на PHP Web-разработчик на Python Алгоритмы и структуры данных Framework Laravel PostgreSQL Team Lead Разработчик голосовых ассистентов и чат-ботов Архитектура и шаблоны проектирования Agile Project Manager Нереляционные базы данных Супер - интенсив по паттернам проектирования Супер-практикум по использованию и настройке GIT IoT-разработчик Подготовка к сертификации Oracle Java Programmer (OCAJP) Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Azure для разработчиков"
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK
-25%
DevOps практики и инструменты
-25%
Архитектор сетей
-25%
Инфраструктурная платформа на основе Kubernetes
-25%
Супер-интенсив «ELK»
-16%
Супер-интенсив «IaC Ansible»
-16%
Administrator Linux. Professional MS SQL Server Developer Безопасность Linux PostgreSQL Reverse-Engineering. Professional CI/CD VOIP инженер Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Administrator Linux.Basic Супер-интенсив "Tarantool"
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Ansible в действии

Ansible — программное обеспечение с открытым исходным кодом, автоматизирующее настройку и развертывание ПО. Ansible как система имеет следующие ключевые особенности: безагентная. В клиенте нет установленного ПО либо агента, который общается с сервером; • идемпотентная. Вне зависимости от того, сколько раз вызывается операция, результат будет одним и тем же; • простая и расширяемая. Ansible написана на Python и использует для написания команд YAML. Оба вышеупомянутых языка в изучении довольно просты.

Установка и запуск трудностей обычно не вызывает:

# ubuntu
sudo apt-get install ansible
#mac-OS
brew install ansible

Структура Ansible

Модули

Модули представляют собой небольшие программы, которые выполняют определённую работу на сервере. К примеру, вместо запуска этой команды:

sudo apt-get install htop

Можно воспользоваться модулем apt и установить htop:

- name: Install htop
apt: name=htop

Плагины

Плагины — фрагменты кода, расширяющие основные функциональные возможности Ansible. В принципе, Ansible изначально поставляется с несколькими удобными плагинами, однако можно написать и свой.

Инвентаризация хостов

Для предоставления перечня хостов надо обозначить список, находящийся в файле инвентаризации (напоминает содержание файла hosts).

В самом простом виде он может содержать лишь одну строку:

35.178.45.231  ansible_ssh_user=ubuntu

Playbooks

Ansible playbooks является способом отправки команд на удалённые компьютеры посредством скриптов. Вместо того, чтобы персонально применять команды Ansible для удалённой настройки компьютеров из командной строки, можно настраивать целые сложные среды и передавать скрипт одной или нескольким системам.

group_vars

Этот файл содержит набор переменных, допустим, имя пользователя и пароль БД.

Роли

Не что иное, как способ сгруппировать ряд задач в один контейнер, дабы эффективно автоматизировать работу посредством понятной структуры каталогов.

Обработчики

Это списки задач, которые, по сути, не отличаются от обычных задач, на которые ссылается глобальное уникальное имя и которые оповещаются уведомителями. Когда ничто не уведомляет обработчик, запускаться он не станет. Вне зависимости от того, сколько именно задач уведомляет обработчик, запускается он лишь один раз после завершения всех задач.

Теги

Когда у вас playbook с большим объёмом, бывает полезно иметь возможность запускать лишь определённую часть конфигурации.

Демо «Реальное приложение»

Чтобы показать пример работы Ansible, давайте установим Laravel-приложение в VPS. Задействуем lightsail.

Последовательность действий при создании и запуске Laravel APP:

  1. Создаём экземпляр Ubuntu Lightsail.
  2. Устанавливаем зависимости Ansible на VPS.
  3. Добавляем SSH-ключи в Git.
  4. Выполняем сборку хостов и ansible.cfg.
  5. Определяем роль в Ansible.
  6. Определяем обработчик в Ansible.
  7. Устанавливаем модули PHP.
  8. Устанавливаем Nginx.
  9. Добавляем default-конфигурацию Nginx.
  10. Добавляем переменные для управления учётными данными БД, хоста, URL-адресом источника GitHub и переменными .env.
  11. Используйем Ansible-Vault.
  12. Создаём БД MySql, имя пользователя и пароль.
  13. Клонируем кодовую базу в ваш VPS.
  14. Генерируем .env.
  15. Создаём playbook.

Теперь рассмотрим каждый пункт более подробно.

Создаём экземпляр Ubuntu Lightsail

Переходим в панель управления Lightsail и нажимаем «Создать экземпляр».

1_BJsuHjjOv8l_iWyK_HCimg1_1540x439_1-20219-d19241.jpg

Выбираем ОС.

1_RyjXMXMvPNTju05QD8hK1Q1_1540x779_1-20219-d34f20.jpg

Выбираем «Добавить скрипт запуска», запускаемый после создания вашего экземпляра. И не забываем получить SSH-ключ.

1_szDeGFIuFnXMJAx9ri6ANg1_1-20219-0759e5.jpg

Устанавливаем зависимости Ansible на нашем VPS

Чтобы установить нужные зависимости, добавляем эти sh-команды:

sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt-get update
sudo apt-get install -y python2.7 python3 python-pip

1_mv8hONZPT7zZjG0_bJ2XGQ1_1-20219-b39e2b.jpg

1_SFEcu_pqfMrQSkBT0BKBEQ1_1-20219-26e6a5.jpg

Теперь у нас уже есть готовый экземпляр, поэтому можем переходить к построению Ansible Project.

Добавляем SSH-ключи в Git

Нужно добавить свой сервер id_rsa.pub к своим ключам GitHub SSH, предварительно войдя в свой сервер.

# Подключаемся к серверу через SSH и запускаем
ssh-keygen
sudo chmod -R 644 .ssh/id_rsa
cat .ssh/id_rsa.pub

# Добавляем результат команды в аккаунт Git
# github settings=> SSH keys => Add new Key
# bitbucket settings=> ssh-keys => Add new Key

Сборка хостов и ansible.cfg

hosts.ini

[aws]
# Ваш IP сервера
127.0.0.39

ansible.cfg

[defaults]
hostfile = hosts.ini
# configure log dir
log_path= logs/ansible-log.log

Определяем роли в Ansible

Используя модуль Ping, убедимся, что хост работает, после чего обновляем все пакеты и устанавливаем 2 модуля: git и htop.

---
- ping: ~
###
- name: Update apt packages
  apt:
    update_cache: yes
##
- name: Install GIT VCS
  apt:
    name: git
    state: latest
##
- name: Install htop
  apt: name=htop

Определение обработчика

---
- name: Restart PHP-FPM
  service:
    name: php{{php_version}}-fpm
    state: restarted
    ####
- name: Restart Nginx
  service:
    name: nginx
    state: restarted

Продолжение в следующей части, не пропустите!

Источник — «Ansible In Action».

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

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

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

Автор
0 комментариев
Для комментирования необходимо авторизоваться
🎁 Максимальная скидка!
Черная пятница уже в OTUS! Скидка -25% на всё!