Forwarded from Админим с Буквой (bykva)
о структуре ansible репозитория (часть 1)
Казалось бы тема не сильно сложная, бери беспрактис от ансибла и работай - никаких проблем. Однакож есть несколько моментов, которые они не учитывают:
1. по любым примерам показывается что, мол, храните плейбуки в корне папки ансибла и всё ок. ну вот вам для примера 3 ямлика, красиво же.
2. кросс-инвентарные переменные. правда, я вроде не плохо гуглю, но на оффдоках не нашел ничего похожего.
В чем же проблема №1? а в том, что когда у вас несколько инвентарей, и вы пишете плейбуки которые по смыслу делают одно и то же но в разных инвентарях, вам их надо либо делать строго одинаковыми и в конечном итоге получать один файл (с возможными доработками в виде условий, которые в обычной жизни нахрен не нужны), либо делать несколько файлов для каждого инвентаря. Оба варианта очевидно в конечном итоге приводят к не очень хорошим результатам. В первом случае - это какая-то не нужная логика, которая усложняет поддержку и использование плейбука, а во втором случае у нас просто множится количество файлов. В моем опыте оказалась ситуация когда у коллег удавалось писать "абсолютный" плейбук для своих задач, но это им просто повезло - если ты пишешь плейбук для тестовой и для продовой инфры, сервера по сути одни и те же и способы ввыкладки сервиса тоже. а значит это по сути один и тот же инвентарь, который разделен логически на тест и прод. А вот мне повезло не так сильно и нужно было писать плейбуки под создание сервиса как на своих железках (которые мы можем приготовить как угодно) так и в облаке, а также на "территории" легасёвой инфраструктуры клиента. В таком случае сами понимате сделать 1 плейбук на всё невозможно. Стали рождаться плейбуки вида rolename_inventory_azaza, rolename_inventory_ololo, rolename_inventory_pururum итп. Ситуацию осложняло то, что не все придерживались практики (я никого не виню - не было никакой договорённости) указывать имя инвентаря в имени плейбука.
В конечном итоге ситуация пришла к тому, что в корневом каталоге у нас оказались порядка 50 плейбуков, вперемешку со служебными файлами - gitlab-ci, Dockerfile, ansible.cfg, ansible-lint итп итп. Лично мне стало уже просто неудобно этим оперировать репозиторием. Не критично, не тяжело или как-то сложно, а именно неудобно. плейбуки перестали помещаться в один столбец в pycharm, а понять из названия сразу к какому инвентарю относится плейбук стало тоже непонятно - нужно было заходить внутрь, смотреть группу по которой катался плейбук, грепать ее по инвентарям... короче гемор! При этом в текущем состоянии репозиторий не то чтобы был плох, нет, им вполне можно было пользоваться, но я понимал, что команда у нас растет, а репозиторию меньше года и что дальше будет только хуже. В итоге назрел план небольшой революции и перекроя репозитория. конечный результат - после истории №2.
#ansible
Казалось бы тема не сильно сложная, бери беспрактис от ансибла и работай - никаких проблем. Однакож есть несколько моментов, которые они не учитывают:
1. по любым примерам показывается что, мол, храните плейбуки в корне папки ансибла и всё ок. ну вот вам для примера 3 ямлика, красиво же.
2. кросс-инвентарные переменные. правда, я вроде не плохо гуглю, но на оффдоках не нашел ничего похожего.
В чем же проблема №1? а в том, что когда у вас несколько инвентарей, и вы пишете плейбуки которые по смыслу делают одно и то же но в разных инвентарях, вам их надо либо делать строго одинаковыми и в конечном итоге получать один файл (с возможными доработками в виде условий, которые в обычной жизни нахрен не нужны), либо делать несколько файлов для каждого инвентаря. Оба варианта очевидно в конечном итоге приводят к не очень хорошим результатам. В первом случае - это какая-то не нужная логика, которая усложняет поддержку и использование плейбука, а во втором случае у нас просто множится количество файлов. В моем опыте оказалась ситуация когда у коллег удавалось писать "абсолютный" плейбук для своих задач, но это им просто повезло - если ты пишешь плейбук для тестовой и для продовой инфры, сервера по сути одни и те же и способы ввыкладки сервиса тоже. а значит это по сути один и тот же инвентарь, который разделен логически на тест и прод. А вот мне повезло не так сильно и нужно было писать плейбуки под создание сервиса как на своих железках (которые мы можем приготовить как угодно) так и в облаке, а также на "территории" легасёвой инфраструктуры клиента. В таком случае сами понимате сделать 1 плейбук на всё невозможно. Стали рождаться плейбуки вида rolename_inventory_azaza, rolename_inventory_ololo, rolename_inventory_pururum итп. Ситуацию осложняло то, что не все придерживались практики (я никого не виню - не было никакой договорённости) указывать имя инвентаря в имени плейбука.
В конечном итоге ситуация пришла к тому, что в корневом каталоге у нас оказались порядка 50 плейбуков, вперемешку со служебными файлами - gitlab-ci, Dockerfile, ansible.cfg, ansible-lint итп итп. Лично мне стало уже просто неудобно этим оперировать репозиторием. Не критично, не тяжело или как-то сложно, а именно неудобно. плейбуки перестали помещаться в один столбец в pycharm, а понять из названия сразу к какому инвентарю относится плейбук стало тоже непонятно - нужно было заходить внутрь, смотреть группу по которой катался плейбук, грепать ее по инвентарям... короче гемор! При этом в текущем состоянии репозиторий не то чтобы был плох, нет, им вполне можно было пользоваться, но я понимал, что команда у нас растет, а репозиторию меньше года и что дальше будет только хуже. В итоге назрел план небольшой революции и перекроя репозитория. конечный результат - после истории №2.
#ansible
Forwarded from Mops DevOps
Перевели для вас статью
20 лучших практик по работе с Docker-файлами
Эта статья содержит рекомендации по написанию Dockerfile и принципам безопасности контейнеров и некоторые другие связанные темы, например про оптимизацию образов.
Если вы знакомы с контейнеризованными приложениями и микросервисами, то скорее всего понимаете, что хотя ваши сервисы "микро", но поиск уязвимостей и устранение проблем с безопасностью способен затруднить управление вашими сервисами, уже с приставкой "макро".
К счастью, большинство потенциальных проблем мы можем решить еще на этапе разработки.
#docker
20 лучших практик по работе с Docker-файлами
Эта статья содержит рекомендации по написанию Dockerfile и принципам безопасности контейнеров и некоторые другие связанные темы, например про оптимизацию образов.
Если вы знакомы с контейнеризованными приложениями и микросервисами, то скорее всего понимаете, что хотя ваши сервисы "микро", но поиск уязвимостей и устранение проблем с безопасностью способен затруднить управление вашими сервисами, уже с приставкой "макро".
К счастью, большинство потенциальных проблем мы можем решить еще на этапе разработки.
#docker
Forwarded from Mops DevOps
Статья
Kubernetes 1.21 — неожиданно много изменений…
Очередная статья про новую версию Kubernetes, коротко и по делу 👍
#kubernetes
Kubernetes 1.21 — неожиданно много изменений…
Очередная статья про новую версию Kubernetes, коротко и по делу 👍
#kubernetes
Forwarded from Sysadmin Tools 🇺🇦
Установка полноценного кластера #kubernetes на основе #k3s
https://habr.com/ru/company/southbridge/blog/551214/
PS: Если работаете с k3s, то возможно вам будет интересно взглянуть на k3d и k0s
#k8s #k3d #k0s
https://habr.com/ru/company/southbridge/blog/551214/
PS: Если работаете с k3s, то возможно вам будет интересно взглянуть на k3d и k0s
#k8s #k3d #k0s
Forwarded from Записки админа
Forwarded from Записки админа
🔧 Bash Examples: Redirect stdout and stderr - про перенаправление вывода результатов выполнения команд. #bash #shell #напочитать
Forwarded from Записки админа
Forwarded from Mops DevOps
Pro K8s
Kubernetes setup with CRI-O Runtime 👋
Пример создания кластеров Kubernetes с использованием среды выполнения контейнеров CRI-O вместо Docker.
👉 https://bit.ly/2QqtYBB
#kubernetes #crio #docker
Kubernetes setup with CRI-O Runtime 👋
Пример создания кластеров Kubernetes с использованием среды выполнения контейнеров CRI-O вместо Docker.
👉 https://bit.ly/2QqtYBB
#kubernetes #crio #docker
Forwarded from Sys-Admin Up (Yevgeniy Goncharov)
GitHub
GitHub - bregman-arie/devops-exercises: Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform…
Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions - bre...
Forwarded from kamyshev.code
Написал статью про метрики — что важно отслеживать, где это лучше делать. Настраивайте мониторинг, снижайте тревожность, радуйте пользователей 🚀
Солидные фронтенды: мониторинг
#фронтенд
Солидные фронтенды: мониторинг
#фронтенд
Forwarded from Библиотека программиста
🐍 Скрытые сокровища Python
Изучая документацию Python для собственного удовольствия, можно найти трюки, которые обязательно ускользнут от вашего внимания в программистской рутине. Рассказываем о наиболее любопытных из них.
https://proglib.io/sh/K9EewnaibA
Изучая документацию Python для собственного удовольствия, можно найти трюки, которые обязательно ускользнут от вашего внимания в программистской рутине. Рассказываем о наиболее любопытных из них.
https://proglib.io/sh/K9EewnaibA
Forwarded from Mops DevOps
Перевели для вас отличную статью
Сеть контейнеров — это не сложно 🤩
Работа с контейнерами многим кажется волшебством, пришло время разобраться как работает сеть Docker. Мы покажем на примерах, что это совсем не сложно. Нам потребуется немного сетевой магии и никакого кода ...
В этой статье мы ответим на следующие вопросы:
- Как виртуализировать сетевые ресурсы, чтобы контейнеры думали, что у каждого из них есть выделенный сетевой стек?
- Как превратить контейнеры в дружелюбных соседей, не дать им мешать друг другу и научить хорошо общаться?
- Как настроить сетевой доступ из контейнера во внешний мир (например, в Интернет)?
- Как получить доступ к контейнерам, работающим на сервере, из внешнего мира (публикация портов)?
#docker
Сеть контейнеров — это не сложно 🤩
Работа с контейнерами многим кажется волшебством, пришло время разобраться как работает сеть Docker. Мы покажем на примерах, что это совсем не сложно. Нам потребуется немного сетевой магии и никакого кода ...
В этой статье мы ответим на следующие вопросы:
- Как виртуализировать сетевые ресурсы, чтобы контейнеры думали, что у каждого из них есть выделенный сетевой стек?
- Как превратить контейнеры в дружелюбных соседей, не дать им мешать друг другу и научить хорошо общаться?
- Как настроить сетевой доступ из контейнера во внешний мир (например, в Интернет)?
- Как получить доступ к контейнерам, работающим на сервере, из внешнего мира (публикация портов)?
#docker
Forwarded from Записки админа
🔍 A tcpdump Tutorial with Examples — 50 Ways to Isolate Traffic - интересный материал с примерами применения tcpdump. #tcpdump #напочитать
Forwarded from Записки админа
📎 Визуализация цепочек iptables на сервере: https://github.com/Nudin/iptable_vis Удобно для ситуаций, когда нужно наглядно показать последовательность обработки правил. #iptables #фидбечат #будничное
Forwarded from Админим с Буквой (bykva)
Мониторинг postgres
Зацепил тут взглядом недавно прикольный экспортёр для postgresql/patroni/pgbouncer/os-metrics
в общем не экспортёр, а целый комбаин. Понравился тем что умеет по полочкам разложить какой пользователь сколько проводит временив запросах, какие конкретно запросы вызывают наибольшее время, а какие самые частые, в какую таблицу с какой частотой выполняются селекты-инсерты и многое другое. Попутно написал для этой штуки маленькую ансибловую роль. Попробуйте и обязательно поставьте автору звёздочку на гитхабе =)
ansible role:
https://github.com/bykvaadm/ansible-pgscv
pgscv github repo:
https://github.com/weaponry/pgscv
grafana dashboard
https://grafana.com/grafana/dashboards/14540
wiki
https://github.com/weaponry/pgscv/wiki
habr
https://habr.com/ru/post/559550/
#postgresql #prometheus
Зацепил тут взглядом недавно прикольный экспортёр для postgresql/patroni/pgbouncer/os-metrics
в общем не экспортёр, а целый комбаин. Понравился тем что умеет по полочкам разложить какой пользователь сколько проводит временив запросах, какие конкретно запросы вызывают наибольшее время, а какие самые частые, в какую таблицу с какой частотой выполняются селекты-инсерты и многое другое. Попутно написал для этой штуки маленькую ансибловую роль. Попробуйте и обязательно поставьте автору звёздочку на гитхабе =)
ansible role:
https://github.com/bykvaadm/ansible-pgscv
pgscv github repo:
https://github.com/weaponry/pgscv
grafana dashboard
https://grafana.com/grafana/dashboards/14540
wiki
https://github.com/weaponry/pgscv/wiki
habr
https://habr.com/ru/post/559550/
#postgresql #prometheus
Forwarded from Записки админа
🆖 Ухожу на выходные, но что бы было не скучно, вот вам крутая штуковина от Julia Evans - https://nginx-playground.wizardzines.com/
Теперь, свои и без того красивые конфиги, вы сможете протестировать в реальном времени, и сделать ещё красивее.
О том что это, как появилось, как работает, написано здесь: https://jvns.ca/blog/2021/09/24/new-tool--an-nginx-playground/ Там же есть ссылки на другие подобные утилиты.
#nginx #напочитать #будничное
Теперь, свои и без того красивые конфиги, вы сможете протестировать в реальном времени, и сделать ещё красивее.
О том что это, как появилось, как работает, написано здесь: https://jvns.ca/blog/2021/09/24/new-tool--an-nginx-playground/ Там же есть ссылки на другие подобные утилиты.
#nginx #напочитать #будничное