Updates rtfm.co.ua 🇺🇦 – Telegram
Updates rtfm.co.ua 🇺🇦
726 subscribers
35 photos
457 links
Канал @rtfm - новые посты на https://rtfm.co.ua.
Обсуждения - группа @rtfmco https://t.me./rtfmco
Download Telegram
What is: chroot – системный вызов и утилита в Linux

chroot() был добавлен в ядро Linux в 1979 году и используется для изоляции файловой системы. По сути, является предшественником вообще всей идеи нынешней контейнеризации, только в современных системах используются namespaces и cgroups, а раньше применяли chroot для создания изолированного от хоста рабочего окружения, которое могло использоваться для тестирования. Собственно, ch и root и является “аббревиатурой”…

https://rtfm.co.ua/what-is-chroot-sistemnyj-vyzov-i-utilita-v-linux/
English: глаголы и времена в английском языке

Одной из причин, по которой хотелось добавить английскую версию блога было то, что это дало бы хороший повод подтянуть грамматику английского, с которым у меня достаточно большие проблемы. Долго думал – стоит ли заводить такую рубрику в этом блоге, но – в IT без английского никуда, а потому, надеюсь, попытки разобраться с некоторыми нюансами и…

https://rtfm.co.ua/english-glagoly-i-vremena-v-anglijskom-yazyke/
Arch Linux: установка драйверов NVIDIA для GeForce GTX 1050 Ti

Основной целью покупки нового ПК в декабре с NVIDIA 1050 была возможность играть в игры на Linux без необходимости перезагружаться в Windows. Собственно, для этого надо установить драйвера, что бы система начала использовать “проприентарщину” вместо nouveau (хотя, справедливости ради, надо отметить, что на nouveau я и не пробовал запускать игры). После нескольких предыдущих попыток пару…

https://rtfm.co.ua/arch-linux-ustanovka-drajverov-nvidia-dlya-geforce-gtx-1050-ti/
Prometheus” Alertmanager – отправка алертов в “/dev/null”

В дополнение к посту Prometheus: роутинг алертов в Alertmanager. Имеется конфиг с роутами. Задача – вырезать все алерты от Дев-а, и слать в “/dev/null”. Для этого – создаём пустой ресивер: ... receivers: - name: 'blackhole' - name: 'default' slack_configs: - send_resolved: true noscript_link: 'http://dev.monitor.example.world/prometheus/alerts' noscript: '{{ if eq .Status "firing" }}:confused:{{ else }}:dancing_panda:{{ end }}…

https://rtfm.co.ua/prometheus-alertmanager-otpravka-alertov-v-dev-null/
Jenkins: your Jenkins data directory is almost full и автоматическая очистка диска

Есть Jenkins, на котором имеется пачка билдов проекта. Спустя какое-то время – появилось сообщение вида: Jenkins: your Jenkins data directory /var/lib/jenkins (aka JENKINS_HOME) is almost full Проверяем диск с помощью ncdu, и находим несколько джоб, которые отжирают много места, например: root@jenkins-production:/data/jenkins# du -h --max-depth 1 jobs/..25G     jobs/APITests... Кучу места занимают логи: root@jenkins-production:/data/jenkins# ls -lh /data/jenkins/jobs/APITests/jobs/Projectname/jobs/Stage/jobs/ProjectnameStageAPItests/builds/551/log-rw-r--r-- 1 root root 77M Mar  1 12:49 /data/jenkins/jobs/APITests/jobs/Projectname/jobs/Stage/jobs/ProjectnameStageAPItests/builds/551/log И билдов много, и в каждой хранится такой лог.…

https://rtfm.co.ua/jenkins-your-jenkins-data-directory-is-almost-full-i-avtomaticheskaya-ochistka-diska/
Redis: репликация, часть 1 – обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis.

Изначально планировался один небольшой пост с примером создания Redis-репликации, но по мере углубления в детали – захотелось описать всё больше и больше, а потому разбил материал на две части. В этой, обзорной – общие сведения, разница между различными типами хранения данных в Redis, примеры топологии. Достаточно кратко, но со ссылками на детальную документацию, плюс ссылки…

https://rtfm.co.ua/redis-replikaciya-chast-1-obzor-replication-vs-sharding-sentinel-vs-cluster-topologiya-redis/
Redis: репликация, часть 2 – Master-Slave репликация, и Redis Sentinel

Продолжение поста Redis: репликация, часть 1 – обзор. Replication vs Sharding. Sentinel vs Cluster. Топология Redis. Собственно, вся история началась с того, что мы решили избавиться от memcached. На данный момент у нас на серверах запущены и memcahced, и Redis. И memcached, и Redis работают как standalone приложения на разных сервера, т.е. их инстансы никак…

https://rtfm.co.ua/redis-replikaciya-chast-2-master-slave-replikaciya-i-redis-sentinel/
Redis: репликация, часть 3 — redis-py и работа с Redis Sentinel из Python

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

https://rtfm.co.ua/redis-replikaciya-chast-3-redis-py-i-rabota-s-redis-sentinel-iz-python/
JetBrains Upsource: установка и запуск на Linux с NGINX и SSL

Upsource – система от JetBrains для код ревью, который через плагин интегрируется во все IDE от JetBrains. Представляет собой Java-приложение с Apache Cassandra в роли локального хранилища данных и индексов. Минимальные требования к машине, на которой будет запускаться – 8 ГБ памяти, что, впрочем, не удивительно. До 10-ти пользователей – бесплатна. В этом посте –…

https://rtfm.co.ua/jetbrains-upsource-ustanovka-i-zapusk-na-linux-s-nginx-i-ssl/
Redis: Can’t open the log file: Read-only file system

Имеется новый сервис Redis, который должен работать параллельно с уже существующим. При его запуске – он сообщает, что Can’t open the log file: Read-only file system – хотя права на /var/log правильные, на сам файл лога – тоже. Причина оказалась достаточно неочевидной. Проблема Полностью ошибка выглядит так: --- Unit redis-cluster.service has begun starting up.Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: *** FATAL CONFIG FILE ERROR ***Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: Reading the configuration file, at line 11Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: >>> ‘logfile /var/log/redis/redis-cluster.log’Apr 03 10:12:28 bttrm-dev-console redis-server[18010]: Can’t open the log file: Read-only file systemApr 03 10:12:28 bttrm-dev-console systemd[1]: redis-cluster.service: Control process exited, code=exited status=1Apr 03 10:12:28 bttrm-dev-console systemd[1]: Failed to start Redis relication cluster node.--- Subject: Unit redis-cluster.service has failed Конфигурация Файл лога указан в настройках ноды…

https://rtfm.co.ua/redis-cant-open-the-log-file-read-only-file-system/
Atom: полезные плагины

Давно пользуюсь vim практически для всего, кроме крупных проектов на Python (которые последнее время случаются крайней редко), для которого использую PyCharm. Тот же PyCharm использую при написании JSON-шаблонов для CludFormation (см. плагин aws-cloudformation). Для Go сначала пользовался vim с плагином vim-go, но недавно потрогал Atom – вполне понравился, попробую исопльзовать его. Собственно в этом посте…

https://rtfm.co.ua/atom-poleznye-plaginy/
Ansible: получить IP таргет хоста

Задача – в Ansible получить IP адрес хоста, на котором выполняется задача. Есть два варианта (может и больше), ниже – примеры с обоими. Вариант 1 – hostvars См. документацию тут>>>. Добавим тестовую задачу: - name: Test hosts list debug: msg: "{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address'] }}" Запускаем: ...TASK [test : Test hosts list] ****ok: [dev.backend-app1-internal.example.com] => {"msg": "10.0.2.71"}ok: [dev.backend-app2-internal.example.com] => {"msg": "10.0.2.91"}ok: [dev.backend-console-internal.example.com] => {"msg": "10.0.2.104"}ok: [dev.backend-bastion.example.com] => {"msg": "10.0.2.126"}... Вариант 2 – lookup и dig Второй вариант – с…

https://rtfm.co.ua/ansible-poluchit-ip-target-xosta/
Redis: Sentinel – bind 0.0.0.0, проблема с localhost и announce-ip

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

https://rtfm.co.ua/redis-sentinel-bind-0-0-0-0-problema-s-localhost-i-announce-ip/
Go: проверка списка публичных репозиториев в Github и уведомления в Slack. Сравнение списков в Go. Первый опыт с Golang.

Задача – написать утилиту, которая будет запускаться по крону из Jenkins и проверять список публичных репозиториев организации в Github. Затем она должна сравнивать полученный список со списком разрешённых, и если списки не совпадают – слать алерт в Slack. Идея состоит в том, что если девелоперы случайно создадут новый публичный репозиторий, или сменят тип существующего с…

https://rtfm.co.ua/go-proverka-spiska-publichnyx-repozitoriev-v-github-i-uvedomleniya-v-slack-sravnenie-spiskov-v-go-pervyj-opyt-s-golang/
Arch Linux: Albion Online – Unable to preload the following plugins: libSDL2-2.0.so.0

Решил поиграться в Albion Online. Она нормально запускается из Steam, но я её покупал раньше (а сейчас она вообще Free to Play), со стартовым пакетом, и с той учёткой нельзя залогинится в игру, скачанную через Steam. Окей – загружаем отдельный клиент с сайта https://albiononline.com/ru/download, запускаем, и: 17:55:10 [setevoy@setevoy-arch-pc ~/Games/AlbionOnline]./Albion-Online...Found path: /home/setevoy/Games/AlbionOnline/game_x64/Albion-OnlineMono path[0] = '/home/setevoy/Games/AlbionOnline/game_x64/Albion-Online_Data/Managed'Mono config path = '/home/setevoy/Games/AlbionOnline/game_x64/Albion-Online_Data/Mono/etc'Preloaded 'ScreenSelector.so'Preloaded 'libAkSoundEngine.so'Preloaded 'libeasyanticheat.so'Unable to preload the following plugins:libSDL2-2.0.so.0 Файл библиотеки libSDL2-2.0.so.0 есть в Steam – /home/setevoy/.local/share/Steam/ubuntu12_64/libSDL2-2.0.so.0,…

https://rtfm.co.ua/arch-linux-albion-online-unable-to-preload-the-following-plugins-libsdl2-2-0-so-0/
Redis: репликация, часть 4 – написание Ansible роли

В продолжение постов о создании 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 Следующая задача…

https://rtfm.co.ua/redis-replikaciya-chast-4-napisanie-ansible-roli/
Jenkins: проверка публичных репозиториев Github-организации

Продолжаем внедрение проверки списка публичных репозиториев организации. Напомню: идея состоит в том, что бы если кто-то из девелоперов случайно расшарит приватный репозиторий, или создаст новый репозиторий не приватным, а публичным – получить об этом уведомление в Slack. Написание самой утилиты на Go есть в посте Go: проверка списка публичных репозиториев в Github и уведомления в…

https://rtfm.co.ua/jenkins-proverka-publichnyx-repozitoriev-github-organizacii/
Authy: настройка Multi-Factor Authentication для Github и AWS

Уверен, что необходмость использования MFA – Multi-Factor Authentication сегодня очевидна для всех. Для 2FA (2-Factor Authentication) наиболее используемым является TOTP – Time-based One-time Password, когда наряду с паролем для авторизации требуется ввести временный код, генерируемый устройством или утилитой. Самым известным является Google Authenticator, но кроме него существует множество других реализаций. Искал на днях решение для…

https://rtfm.co.ua/authy-nastrojka-multi-factor-authentication-dlya-github-i-aws/
Golang: указатели – подробный разбор

Я уже когда-то добавлял пост про указатели в C – C: указатели — подробный разбор, но было это достаточно давно, да и Си всё-таки не совсем Go, хотя в плане указателей разницы нет. Тем не менее – рассмотрим указатели в отдельном посте. Что такое указатель? Кратко, указатель – это переменная, которая хранит адрес памяти другой…

https://rtfm.co.ua/golang-ukazateli-podrobnyj-razbor/
Linux: GPG-ключи, менеджер паролей pass и импорт из KeePass

pass – менеджер паролей для Linux/UNIX, наверно один из старейших. Хранит данные в древовидной структуре каталогов и файлов, а сами файлы с секретами шифрует с помощью GPG-ключа. В Arch Linux есть из коробки, в Debian можно установить с помощь apt из дефолтных репозиториев: sudo apt install pass В macOS – с помощью Homebrew: brew install pass Хотя я сомневаюсь, что…

https://rtfm.co.ua/linux-gpg-klyuchi-menedzher-parolej-pass-i-import-iz-keepass/
Bitwarden: менеджер паролей организации – установка self-hosted версии на AWS EC2

Мы рассматриваем Bitwarden как менеджер паролей для проекта, основная цель которого – разделение доступа к различным секретам по ролям и/или ACL. Т.е. Pass и/или KeePass – это хорошо для одного пользователя, но у них нет главного – нормального веб-интерфейса, и разделения доступа к секретам для пользователей, а всякие 1Password/LastPass не имеют возможности установки на свой…

https://rtfm.co.ua/bitwarden-menedzher-parolej-organizacii-ustanovka-self-hosted-versii-na-aws-ec2/