ServerAdmin.ru
31.6K subscribers
841 photos
57 videos
23 files
2.99K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Ресурс включён в перечень Роскомнадзора
Download Telegram
🎓 Признайтесь честно, без гугления, знаете что такое идемпотентность? Никогда не получается нормально выговорить это слово. Если не знаете, то скорее всего не знакомы и с Ansible. Для админа в наши дни это плохой сигнал, даже если не работаете с большими масштабами.

Ansible стал практически стандартом автоматизации и преднастройки инфраструктуры. Если не приходится использовать его лично, то всё равно на базе Ansible написана куча инструментов по установке чего-либо. Например, разворачивание кластера Kubernetes на своих хостах с помощью Kubespray. Или то же самое для Ceph. Если умеешь работать с Ansible, не будет никаких проблем раскатать кластер и продебажить установку в случае проблем.

К примеру, я почти не пользуюсь в своей работе Ансиблом, но тем не менее знаю его. Проходил курсы, писал свои плейбуки. Когда понял, что поддерживать и обновлять их дольше, чем настроить вручную раз в пол года, перестал. Но мне нет проблемы развернуть тот же Kube или Ceph из готовых плейбуков. Я понимаю, как там всё устроено и работает.

Долгая подводочка к теме получилась. Вот вам на выходные хороший цельный урок по Ansible от и до.

Всё что нужно знать по Ansible. Основы и не только:
⇨  https://www.youtube.com/watch?v=YYjCwLs-1hA

К видео есть содержание, так что можете сразу оценить, о чём там будет речь.

Кстати, у небезызвестного Дениса Астахова есть свой курс на Udemy на русском языке. Цена символическая, правда я не знаю, нормально ли с приёмом платежей из РФ там сейчас. Там же есть и бесплатные курсы, но на английско-индусском.

Если кто-то знает хороший бесплатный курс по Ansible в текстовом виде на русском языке, поделитесь информацией. У меня есть вот такая ссылочка в закладках, но это скорее просто подробная статья. На обучение не тянет.

#обучение #ansible #бесплатно
👍54👎4
​​▶️ Информация для тех, кто учится или уже использует Ansible, но возможно не так, как следует:

Ansible плох? Нет, просто готовьте его правильно!

Интересное выступление от специалиста в своей области знаний. Я после доклада захотел купить у него курс, но, как оказалось, как такового курса нет, а когда-то проводилось групповое обучение.

В выступлении разобраны популярные по мнению автора ошибки при использовании Ansible. Основные:
использование шаблонизации yaml, как текстов, а не как структурированных данных
использование группы хостов all, а потом методом исключения добавляются условия
использование модулей python с зависимостями, которые непонятно что вам принесут в систему
использование Ansible для управления учётками и доступами на машинах
хранение инвентаря в формате ini
подмена тэгов условиями
и т.д.

Я лично собрал почти все ошибки, что были перечислены автором. Но тут мне не обидно, не питаю иллюзий. Мне в работе ансибл почти не нужен. Я по нему учился, немного писал плейбуки, пока не понял, что в моём формате работы на это уходит слишком много времени и это не окупается. У меня нет часто повторяющихся задач, либо большой однотипной инфраструктуры. Достаточно того, что я умею с ansible работать, могу читать чужие плейбуки, править их под свои нужды, дебажить и в целом пользоваться инструментом.

Ещё полезные материалы по Ansible от этого автора:
Ansible это вам не bash (текст, видео)
Блеск и нищета Ansible
Ansible-vault decrypt: обходимся без Ansible
Ускоряем Ansible

Единственное, что не понравилось — автор несколько раз акцентированно сослался на то, что в русскоязычном ютубе не стоит смотреть обучающие видео по ansible, так как там полно ошибок. Но при этом его же выступления я посмотрел в русскоязычном ютубе. При чём тут русский язык и ютуб, я не понял. Надо смотреть, у кого ты учишься и понимать, какого уровня информацию ты можешь получить. Например, у меня учиться не надо, я не учитель и не акцентируюсь на правильных решениях или точности формулировок. Просто пишу свои заметки. Их достаточно принимать к сведению.

#видео #ansible
👍70👎3
​​В выходные просматривал тематические ролики из youtube, которых накопилось некоторое количество. В одном из них увидел упоминание веб интерфейса для Ansible. Речь идёт про ролик: This web UI for Ansible is so damn useful!. Я сразу обратил на него внимание и запомнил, чтобы посмотреть, когда будет время.

В видео речь идёт про Ansible Semaphore. Я видел недавно его упоминание в некоторых TG каналах. Подумал, что выкатили какой-то новый продукт, поэтому на него обратили внимание. Но на самом деле нет. Это старый open source проект из 2015 года. Ранее о нём не слышал, поэтому решил посмотреть, что это такое. Специально никогда не искал веб интерфейс для Ansible, как-то не было необходимости. Вообще не знаю ни одного бесплатного решения для этой задачи.

Как я уже сказал, Ansible Semaphore — open source проект, написанный на чистом Go, а веб интерфейс с примесью Vue. С его помощью можно создавать и запускать плейбуки, превращая всё это в подобие CI/CD системы на минималках. То есть это для тех, кому не надо GitLab или Jenkins, но хочется автоматизации на базе ansible.

Для понимания возможностей Ansible Semaphore, покажу, какие там реализованы сущности. Тогда станет понятно, что он умеет. Там реализованы:
Задачи, для запуска плейбуков.
Шаблоны для этих задач.
Репозитории для подключения кода плейбуков и приложений.
Инвентарь, то есть список серверов, для которых можно выполнять задачи.
Хранилище ssh ключей и переменных.

Посмотреть всё это можно в публичном demo:
⇨ https://demo.ansible-semaphore.com

Работает всё это как обычная CI/CD система. Подключаем репозиторий с приложением, репозиторий с плейбуками. Создаём задачу, которая следит за репозиторием приложения и в случае коммита выполняет какие-то плейбуки из репозитория с ними.

Настроить всё это дело в Ansible Semaphore легко. Настроек немного, можете ознакомиться сами в Demo. Я посмотрел видео, чуток почитал доков (там совсем немного, сразу понятна последовательность действий) и посмотрел, как это реализовано в демке.

Продукт мне понравился. Прям то, что надо для небольшой инфраструктуры, где что-то более масштабное будет избыточным. Удобно смотреть вывод плейбуков прямо в веб интерфейсе после запуска. Причём интерфейс адаптивен и нормально смотрится в смартфонах.

У меня для личного использования есть отдельная виртуалка с ansible, откуда я запускаю все свои плейбуки. Туда как раз будет уместно поставить Ansible Semaphore.

⇨ Сайт / Исходники

#ansible #devops
👍73👎7
​​🎓 За всё время ведения канала не было ни одной рекомендации по хорошему обучающему материалу по Ansible. Хотел сам что-то пройти, чтобы освежить знания, и не нашёл ничего у себя на канале.

Если у кого-то есть рекомендации на хорошие бесплатные курсы по этой теме, то поделитесь информацией. Вот то, что нашёл я.

Ansible На Русском Языке от небезызвестного Дениса Астахова, автора канала ADV-IT. Зная другие материалы этого автора, предполагаю, что это качественный материал.

ИТМО: Инфраструктура как код - свежий курс от известного сообщества DeusOps. У них свой канал в ютубе, телеграме, там же есть чат. Я сам не слежу за этим сообществом, но временами видел материалы оттуда, как и пересылку своих постов отсюда в их чат.

Ansible для начинающих + практический опыт - бесплатный курс на Stepik, плюс от этой же компании небольшой плейлист на ютубе.

Небольшой курс из двух уроков от автора канала Unix way. Я уже не раз упоминал его на канале. Уровень материала у него хороший. Да и отзывы к урокам говорят о том, что уроки сделаны качественно.

Ansible это стопроцентная база, как и git, современной эксплуатации, поддержки серверов и сервисов. Обязательно нужно знать. Даже если на практике сейчас вам это не нужно, пройдите хотя бы один курс, чтобы иметь представление о том, что это такое.

#обучение #ansible
👍175👎1
​​Существует несколько наиболее популярных систем управления конфигурациями:

▪️ Saltstack 
▪️ Chef
▪️ Puppet
▪️ Ansible

Что интересно, наиболее молодая из них стала самой популярной на сегодняшний день. Расскажу кратко о них для общего образования.

🔹Saltstack - написана на Python, для работы на хосты устанавливается агент, хотя есть и безагентный режим работы с ограниченными возможностями. Проект стартовал в 2011 году. Работает по модели pull, где сервер публикует задачу, а агенты принимают ее и асинхронно выполняют практически в режиме реального времени. Архитектурно система разработана для поддержки огромных инфраструктур с тысячами и десятками тысяч серверов.

🔹Chef - написан на Ruby, также использует клиент-серверную архитектуру с агентами на хостах. Стартовал в 2009 году. Имеет большое сообщество и как следствие обширный набор "рецептов" по установке и настройки различного оборудования и софта. Например, Gitlab использует Chef для установки и управления self-hosted версии своего сервера.

🔹Puppet - написан на Ruby, также использует клиент-серверную архитектуру с агентами на хостах. Стартовал в 2005 году. Агенты периодически обращаются к серверу и забирают изменения настроек. Язык конфигурации довольно сложен, но и возможностей там очень много. Будет актуален для больших и сложных систем. Из того, что я помню, Foreman использует Puppet.

🔹Ansible - написан на Python, не требует установки агентов. Работает по модели push. В качестве транспорта использует SSH соединения. Проект стартовал в 2012 году, в 2015 его купил Red Hat и начался стремительный рост популярности. По факту сейчас это наиболее распространённая система управления конфигурациями. Её отличает простота настройки и запуска в работу. Будет актуальна даже на малых масштабах инфраструктуры. Есть ряд проблем на больших проектах с тысячами серверов. Возможно там это будет не самое подходящее решение. Язык разметки конфигураций YAML. Читается и пишется относительно легко. За счёт этого и отсутствия агентов для взаимодействия и стал так популярен. Есть хорошая документация, которой достаточно для эксплуатации.

На сегодняшний день системному администратору или девопсу обязательно надо знать Ansible, даже если вы сами не собираетесь описывать инфраструктуру с его помощью. Большое количество софта описано с помощью ролей Ansible. Это может сильно упростить установку и эксплуатацию. Например, через Ansible можно быстро развернуть Ceph, Kubernetes, кластер Patrony и т.д. Также под весь популярный софт попроще есть наборы плейбуков для установки, обновления. Тот же Zabbix агент обновлять или ставить с нуля на группу хостов. У меня была подборка обучающих материалов по Ansible.

Насчёт популярности остальных могу только субъективно погадать. Saltstack точно менее популярен остальных, а вот Puppet и Chef могут рядом идти, хотя Chef всё же наверное популярнее. Не знаю, кто из них лучше. Я только в общих чертах о них слышал, сам никогда не работал с ними. Не приходилось сталкиваться. А вот с Ansible постоянно.

В этот список, по идее, можно было бы добавить и Terraform, но он как-будто инструмент более высокого порядка для разворачивания инфраструктуры на уровне серверов и виртуальных машин облачных провайдеров, когда надо подучить набор серверов с заданными характеристиками и сетями. А не для того, чтобы потом добавлять SSH ключи, пользователей на сервера и устанавливать софт.

#ansible
👍110👎3
На прошлой неделе читал статью про ansible-cmdb. Понравился инструмент. Раньше про него не слышал. Он довольно просто устроен, особенно для тех, кто знает и регулярно использует Ansible в инфраструктуре. Собственно, ansible-cmdb работает на базе Ansible.

Поясню, для тех, кто не в курсе и не работает с Ansible. У неё есть список хостов, куда она имеет доступ по SSH. Соответственно, с помощью Ansible можно ходить по хостам, что-то там делать, собирать информацию. Ansible-cmdb использует вывод модуля setup, который заходит на хосты и собирает о них информацию в так называемые ansible_facts. A ansible-cmdb берёт эту информацию и оформляет в наглядную html страницу.

Как я уже сказал, если вы уже используете Ansible, вам ничего пояснять и настраивать не надо. Просто берёте файл с инвентарём, проходите по нему модулем setup и строите отчёт примерно так:

# mkdir out
# ansible -m setup --tree out/ all
# ansible-cmdb out/ > overview.html

Теперь расскажу, как собрать информацию о хостах для тех, кто вообще не знаком и не настраивал Ansible. Я не буду рассказывать, как с ней работать, а просто по шагам покажу, как вам собрать информацию со своих хостов, даже если вы не хотите изучать и далее использовать Ansible. Хотя, разумеется, современному админу или девопсу крайне желательно уметь с ней работать.

Настраивать всё буду в Debian 12. Рекомендую использовать для этого отдельную виртуалку или контейнер. Ставим необходимые пакеты:

# apt install python3-pip ansible

У ansible-cmdb есть собранный deb пакет. Я изначально использовал его. Но так и не смог заставить работать. Я не знаю, что там за версия python нужна, но у меня постоянно были какие-то ошибки в коде. Залез в репозиторий, в Issues, увидел там похожие ошибки и решение в виде установки через pip, а не из пакета.

Поставил в итоге следующим образом. Это не рекомендованный способ, но для демонстрации работы и простоты делаю так. Когда разберётесь и решите, что вам этот инструмент нужен, устанавливайте и запускайте его через venv. А пока ставим:

# pip install ansible-cmdb --break-system-packages
# ln -s /usr/bin/python3 /usr/bin/python

Теперь нам нужно подготовить конфигурацию ansible. Добавляю минимальную конфигурацию в файл ~/.ansible/ansible.cfg

[defaults]
home = ~/.ansible/
inventory = ~/.ansible/inventory.yaml
remote_user = root
gather_facts = True
private_key_file = ~/.ssh/id_ed25519
host_key_checking = False

И создаю так называемый инвентарь ~/.ansible/inventory.yaml в терминологии Ansible со списком серверов, для которых будем делать отчёт.

all:
 hosts:
  Debian12-VPS:
   ansible_host: 127.0.0.1
   ansible_port: 22
  Debian12-CT:
   ansible_host: 10.20.1.24
   ansible_port: 22
  Ubuntu24-CT:
   ansible_host: 10.20.1.21
   ansible_port: 22

Передаю в переменную конфигурацию Ansible:

# export ANSIBLE_CONFIG="$HOME/.ansible/ansible.cfg"

Создаю сертификат, по которому буду подключаться к хостам:

# ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "$(whoami)@$(hostname)_$(date -I)"

Копирую его на хосты в authorized_keys:

# ssh-copy-id root@127.0.0.1
# ssh-copy-id root@10.20.1.24
# ssh-copy-id root@10.20.1.21

Проверяю, видит ли ansible хосты в инвентаре, всё ли верно настроено:

# ansible -i inventory.yaml all --list-hosts
  Debian12-VPS
  Debian12-CT
  Ubuntu24-CT

Всё в порядке, собираем факты:

# mkdir ~/.ansible/out
# ansible -m setup --tree ~/.ansible/out all

Если всё в порядке, и в директории появились текстовые файлы с информацией о хостах, то строим по ним html страничку:

# ansible-cmdb ~/.ansible/out > overview.html

Копируем overview.html к себе на компьютер и смотрим браузером. Получили наглядный список, где в выпадающем списке подробная информация о хостах.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux #ansible
2👍150👎3