Архив рубрики: Scripting/coding

HowTo и примеры использования bash, C, Python, Ruby и т.д.

AWS: создание стека в AWS – bash-скрипт и CloudFormation шаблон

10 мая 2018
 

 Задача – развернуть мониторинг Prometehus + Grafana в AWS (в противоположность Azure на предыдущем проекте…). Весь стек будет состоять из одного EC2, на котором будет NGINX + Prometheus + Grafana. Из экспортёров на хосте мониторинга будут node_exporter и blackbox_exporter, скорее всего ещё mysql_exporter – собирать метрики с MariaDB бекенда нашего приложения, и какие-то ещё. Но это… Читать далее »

Jenkins: получить пароль из Credentials Binding Plugin

25 апреля 2018
 

 Задача – добавить и запушить тег после билда, используя логин:пароль репозитория, которые добавлены в Credentials Binding Plugin. Само решение достаточно костыльное, но рабочее. Главная проблема в том, что Jenkins маскирует пароль ****. Т.е. при вызове: … withCredentials([usernamePassword(credentialsId: ‘git’, usernameVariable: ‘USERNAME’, passwordVariable: ‘PASSWORD’)]) { sh “echo pass $PASSWORD” sh “echo user $USERNAME” } … В результате получим… Читать далее »

Docker: PHP Composer и multi-stage билды Docker образов

2 апреля 2018
 

 Задача – подготовить Docker образ с PHP Composer. Ниже рассмотрим сначала сам Composer (от PHP далёк, и с Composer дела раньше не имел, хотя сам PHP потрогать довелось), потом – пример сборки Docker контейнера и его использование под разными пользователями. Результат можно посмотреть в Github. PHP Composer Composer предназначен для установки общих библиотек при создании… Читать далее »

Python: pip – AttributeError: ‘module’ object has no attribute ‘SSL_ST_INIT’

16 марта 2018
 

 При установке и запуске Let’s Ecnrypt клиента – вылезла ошибка Python: root@jm-monitoring-production-vm:~# letsencrypt certonly –config-dir /data/letsencrypt/ –noninteractive –webroot –webroot-path /var/www/html/ –email [email protected] –agree-tos –domains monitor.domain.tld Traceback (most recent call last): File “/usr/bin/letsencrypt”, line 9, in <module> load_entry_point(‘letsencrypt==0.4.1’, ‘console_scripts’, ‘letsencrypt’)() File “/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py”, line 542, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File “/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py”, line 2569, in load_entry_point return… Читать далее »

What is: Linux namespaces, примеры PID и Network namespaces

10 марта 2018
 

 Данный пост обединяет в себе два других замечательных (на мой взгляд) поста на тему Namespaces в Linux – A Tutorial for Isolating Your System with Linux Namespaces и Introduction to Linux namespaces – Part 1: UTS, с небольшими дополнениями и изменениями. Тем не менее – крайне рекомендую к прочтению оба поста выше, и ознакомиться с другими ссылками из… Читать далее »

Python: Duplicate Encoder – решение задачки с Codewars

5 марта 2018
 

 Задача Ссылка на задачу Оригинал: The goal of this exercise is to convert a string to a new string where each character in the new string is ‘(‘ if that character appears only once in the original string, or ‘)’ if that character appears more than once in the original string. Ignore capitalization when determining… Читать далее »

PowerShell: проверка сервисов – аналоги curl и telnet

2 февраля 2018
 

 Т.к. в Windows Server 2012 нет привычных утилит, таких как curl и telnet – используем PowerShell. Краткая заметка себе на будущее. a-la curl Проверить ответ сервиса можно с помощью модуля Invoke-WebRequest: [simterm] PS D:\Tableau\Tableau Server\10.4\bin> invoke-webrequest http://google.com StatusCode : 200 StatusDescription : OK Content : <!doctype html><html itemscope=”” itemtype=”http://schema.org/WebPage” lang=”en”><head><meta content=”Search the world’s information, including… Читать далее »

BASH: скрипт создания AWS CloudFormation стека

1 февраля 2018
 

 На одном из проектов создавался CloudFormation шаблон для RDS (см. пример тут>>>). Что бы упростить создание и обновление стека разработчиками – набросал небольшой скрипт. Скрипт выполняет: валидацию файла шаблона проверит требуется ли создать, или обновить стек запросит подтверждение перед созданием выполнит create-stack или update-stack Чать параметров используется из файла шаблона или переменных скрипта, дефолтные, часть… Читать далее »

Ansible: миграция RTFM 2.8 – logrotate, unattended-upgrades и Let’s Encrypt для Bastion хоста

29 января 2018
 

 Прыдущая часть – AWS: миграция RTFM 2.7 – CloudFormation и Ansible – наcтройка NAT (там же ссылки на предыдущие посты). В этой части продолжим настройку Bastion хоста. Задача – добавить: роль logrotate: ротация логов NGINX (в дальнейшем логи будут сбрасываться через CloudWatch Logs агента) роль unattended-upgrades: автоапдейты системы роль Let’s Encrypt: получение и обновление сертификатов для сайтов роль… Читать далее »

bash: проверка статуса Spamassassin

28 января 2018
 

 На почтовом сервере начал падать Spamassassin. Сервер старый, причину на ночь глядя искать откровенно лень (думаю, падает во время выполнения /usr/bin/sa-learn в cron-задаче – по времени прихода уведомлений будет яснее), да и почта будет скоро переезжать на сервер в AWS, поближе к RTFM (сейчас работает на VPS в ДЦ Воля-Кабель), потому добавлю скрипт для быстрого “фикса”. Суть… Читать далее »