Архив за год: 2018

Terraform: создание проекта с EC2, VPC и AWS cross-region VPC peering

28 июня 2018
 

 Одной из неприятных неожиданностей в использовании CloudFormation оказался факт того, что он не умеет создавать VPC peering между VPC в разных регионах. Т.е., сама возможность создания cross-region peering была анонсирована>>> AWS в ноябре 2017, но по состоянию на июнь 2018 — AWS CloudFormation просто не имеет опции region. В результате он пытается выполнить пиринг между… Читать далее »

AWS: CloudFormation — UPDATE_ROLLBACK_FAILED

27 июня 2018
 

 Ситуация: был стек, в котором создавался VPC peering (ресурс AWS::EC2::VPCPeeringConnection) с VPC в другом стеке. Потом первый стек был удалён, но во втором стеке осталась ссылка на этот пиринг. В результате во время апгрейда второго стека — он фейлится, и не может выполнить rollback-операцию: Решение нагугливается легко по запросу «UPDATE_ROLLBACK_FAILED fix«, см тут>>>, в первом… Читать далее »

Terraform: пример работы — основные команды, state-файлы, бекенды, модули

25 июня 2018
 

 Пример использования Terraform, его основные команды, работа с бекенда и модулями. Достаточно кратко, но со ссылками на документацию. Устанавливаем на Arch Linux: [simterm] $ sudo pacman -S terraform [/simterm] Для авторизации используем созданный AWS профиль setevoy-root. main.tf Создаём файл main.tf, в котором указываем использование AWS provider, регион, и имя AWS профиля: provider «aws» { region… Читать далее »

AWS: CloudFormation — route table rtb-6ea6bd06 and network gateway pcx-48eaed21 belong to different networks

22 июня 2018
 

 При создании нового стека с использованием VPC peering — CloudFormation сообщает об ошибке: route table rtb-6ea6bd06 and network gateway pcx-48eaed21 belong to different networks (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterValue; Request ID: d8c60294-5ea7-4407-9886-6459c16762b8) Причина не совсем очевидна, потому запишу её себе на будущее. Проверяем таблицу rtb-6ea6bd0: Обращаем внимание на сеть: subnet-8d0d41e5 | monitoring-production-public-net 10.0.1.0/28… Читать далее »

Prometheus: CloudWatch exporter — сбор метрик из AWS и графики в Grafana

21 июня 2018
 

 Используем prometheus/cloudwatch_exporter. Клиент написан, внезапно, на Java, из минусов — не умеет экпортировать теги AWS в метки Prometheus (есть альтернативный клиент — technofy/cloudwatch_exporter, который вроде бы умеет). IAM пользователь Для IAM пользователя, доступы которого будет использовать експортёр требуются роли cloudwatch:ListMetrics и cloudwatch:GetMetricStatistics (надо проверить — сработает ли роль CloudWatchAgentServerPolicy, подключенная к EC2, что бы не использовать Access/Secret… Читать далее »

macOS: launchctl — запуск/остановка сервисов на примере Jenkins slave агента

20 июня 2018
 

 Искал аналог systemctl для systemd или service для Upstart, но под macOS, что бы можно было запускать сервис из консоли, нагуглился такой сервис как launchctl, который является частью launchd. Для примера возьмём plist-файл из комментария к посту Jenkins: macOS slave агент через Java Web Start. Другие примеры plist-файлов есть тут>>>., описание ключей — на странице… Читать далее »

Grafana: добавление datasource из Ansible

18 июня 2018
 

 В Grafana 5.0 появилась возможность настраивать её без API, а просто добавляя файлы настроек. Документация тут>>>. Удобно для использования с Ansible etc. Ниже быстрый пример применения. Путь к каталогу задаётся через переменную GF_PATHS_PROVISIONING: t=2018-06-18T13:11:26+0000 lvl=info msg=»Config overridden from Environment variable» logger=settings var=»GF_PATHS_PROVISIONING=/etc/grafana/provisioning» Ручное добавление Протестируем — попробуем добавить datasource вручную. Grafana запущена в контейнере, данные… Читать далее »

AWS: CloudFormation — VPC peering и Fn::ImportValue

13 июня 2018
 

 В продолжение/дополнение постов Prometheus: AWS EC2 service discovery и AWS: настройка VPC peering — пример настройки VPC peering в шаблонах стеков CloudFormation. Идея следующая: создадим стек monitor — он будет имитировать стек мониторинга создадим стек application — он будет имитировать стек приложения application должен будет запросить пиринг с VPC из стека monitor, что бы Prometheus в стеке monitor смог… Читать далее »

AWS: настройка VPC peering

12 июня 2018
 

 VPC peering — соединение между двумя VPC, позволяющее ресурсам в этих сетях обмениваться трафиком, используя приватные IP адреса из подсетей тих VPC, как если бы они были в пределах одной сети. VPC peering может быть установлен между вашими сетями, или между сетями из другого AWS аккаунта. Кроме того — можно создать подключение между VPC в… Читать далее »

Prometheus: AWS EC2 service discovery

11 июня 2018
 

 Для чего нам нужен EC2 service discovery? В первую очередь — что бы избежать необходимости открывать порт на Application Load Balancer и гонять трафик «через мир». Т.е. вместо того, что бы в конфиге Prometheus указывать статичный URL и URI, типа mainhost.domain.tld/metrics, который был бы направлен на AWS ALB, у которого было бы правило форвардить URI /metrics… Читать далее »