Архив рубрики: Ansible

In computing, Ansible is an open-source software provisioning, configuration management, and application deployment tool. It runs on many Unix-like systems, and can configure both Unix-like systems as well as Microsoft Windows.

Jenkins: деплой Docker Compose из Ansible и ECR авторизация

26 сентября 2019
 

 В продолжение поста AWS: создание Elastic Container Registry и деплой из Jenkins, в котором создали джобу для билда Docker-образов и их пуша в AWS ECR — теперь надо создать джобу в Jenkins для деплоя и запуска одного Docker-контейнера. Запускать будем через Docker Compose, в котором Ansible будет задавать требуемую версию из параметров Jenkins-джобы. Для того, что… Читать далее »

NGINX: мульти-бранч деплой приложения с использованием NGINX map и HTTP Headers

26 июня 2019
 

 Имеется стандартный LEMP — NGINX, PHP-FPM. Приложение — Yii-фреймворк, который деплоится из Jenkins Ansible-ролью с помощью модуля synchronize на хосты в каталог /data/projects/prjectname/frontend/web, который является root в конфиге виртуалхоста NGINX. Задача: создать возможность деплоя из Jenkins приложения из разных бранчей — на хосте одновременно должны быть задеплоены разные версии приложения, доступ к которым будет определяться… Читать далее »

Redis: репликация, часть 4 — написание Ansible роли

15 апреля 2019
 

 В продолжение постов о создании Redis репликации и использования Redis Sentinel для его мониторинга. Предыдущие части: Redis: репликация, часть 1 — обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis Redis: репликация, часть 2 — Master-Slave репликация, и Redis Sentinel Redis: репликация, часть 3 — redis-py и работа с Redis Sentinel из Python Следующая задача… Читать далее »

Redis: Sentinel — bind 0.0.0.0, проблема с localhost и announce-ip

10 апреля 2019
 

 Изначально в файлах настроек Sentinel я использовал bind 0.0.0.0, что бы инстансы были доступны по внешним IP. Из-за этого при развёртывании системы на реальном окружении возникла проблема при определении мастер-хоста и других инстансов Sentinel. В этом посте — пример такой проблемы и их решение. На самом деле проблем было больше, но получилось воспроизвести только одну,… Читать далее »

Ansible: получить IP таргет-хоста

9 апреля 2019
 

 Задача — в Ansible получить IP адрес хоста, на котором выполняется задача. Есть два варианта (может и больше), ниже — примеры с обоими. Вариант 1 — hostvars См. документацию тут>>>. Добавим тестовую задачу: — name: Test hosts list debug: msg: «{{ hostvars[inventory_hostname][‘ansible_default_ipv4’][‘address’] }}» Запускаем: Вариант 2 — lookup и dig Второй вариант — с помощью… Читать далее »

Ansible: проверка наличия пакета в системе

10 марта 2019
 

 Имеется «самописная» Ansible роль letsencrypt. (см. Prometheus: мониторинг для RTFM — Grafana, Loki и promtail). Перед запуском Let’s Encrypt клиента для получения сертификатов — надо проверить, установлен ли в системе NGINX. Используем модуль package_facts: … — name: «Check if NGINX is installed» package_facts: manager: «auto» … И затем условную проверку по массиву ansible_facts.packages: … -… Читать далее »

Prometheus: мониторинг для RTFM — Grafana, Loki и promtail

9 марта 2019
 

 После внедрения Loki на рабочем проекте — решил добавить его и себе. А заодно — добавить node_exporter и alertmanager, что бы получать уведомления, когда на разделах будет заканчиваться место. Обычно «Ссылки по теме» размещаю в конце поста, но тут стоит их добавить в начале. Для общего знакомства с Prometheus: Prometheus: мониторинг — введение, установка, запуск,… Читать далее »

Ansible: шифрование и копирование PEM-ключа

5 февраля 2019
 

 Задача — во время выполнения роли скопировать на удалённый хост PEM-ключ. Для этого используем ansible-vault. Идея состоит в том, что мы зашифруем содержимое ключа в переменную, а затем используем модуль copy — и создадим на удалённой системе новый файл. Создание сертификата Сначала создадим сам сертификат и приватный ключ с помощью openssl: Проверяем содержимое: Шифрование данных… Читать далее »

AWS: CloudFormation — S3 корзина для логов Application Load Balancer

27 ноября 2018
 

 Имеется уже созданный стек с Application Load Balancer, для которого требуется включить сбор логов в S3 корзину. Общая документация — тут>>>. CloudFormation стек и ресурсы уже созданы, поэтому тут просто пример добавления необходимых параметров и новых ресурсов для включения логгирования запросов балансировщика. Запуск CloudFormation выполняется из Ansible с помощью модуля cloudformation, и значения параметров будут заданы… Читать далее »

AWS: EC2 — ошибка «cannot open access to console», инстансы T2 vs R5 и Ansible

19 октября 2018
 

 Имеется EC2 типа t2.large, которому через CloudFormation был изменён тип на r5.xlarge. К инстансу подключен дополнительный EBS-раздел, который монтируется в /data. Ирония ситуации ещё и в том, что «упал» сервер мониторинга, который должен сообщать о падениях всех остальных серверов 🙂 Проблема После смены типа — он запускается, но зависает на старте. Проверяем скриншот — правой… Читать далее »