Архив рубрики: Configuration/Orchestration

Вопросы, касающиеся установки, настройки и работы CMS (Configuration Manament System — система управления конфигурациями) Puppet, Ansible и Chef

RTFM: День Рождения — 8 годиков и 3 миллиона посетителей. Обзор обновлений.

14 августа 2019
 

 Как-то вдруг наступил уже и Август. Традицонно — 14-е Августа у RTFM что-то вроде Дня рождения: Ну и традиционно — кратенько пройдусь по основным событиям за прошедший год (хотя семилетие не записал, ну да ладно). Блог по-прежнему работает на WordPress, хостится на Debian + NGINX + PHP-FPM + MariaDB — стандартный LEMP. Предыдущие посты: rtfm.co.ua… Читать далее »

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: мониторинг — введение, установка, запуск,… Читать далее »

AWS: RDS логи, сбор в CloudWatch Logs и CloudFormation

7 марта 2019
 

 Имеется пачка AWS RDS инстансов с MariaDB. Бекенд-разработчики просят включить им slow-логи, что бы они могли дебажить свои запросы. Задача — включить логи, и добавить их передачу в CloudWatch Logs для дальнейшего анализа. RDS, как и всё остальное, у нас создаётся из CloudFormation шаблона — поэтому будут примеры и с ним. Кроме стандартных general/error/slow логов… Читать далее »

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, и значения параметров будут заданы… Читать далее »