Так вышло, что у меня появился огромный (10+) зоопарк пет-VPS'ок для личных нужд, и пора бы это дело стандартизировать и автоматизировать. В общем, дорос я секты систем управления конфигурациями, пора им принимать меня в ряды таких же красноглазых.
Тем не менее, у меня встал вопрос. На очередном сервере я делаю следующее:
0. sudo apt update && sudo apt upgrade -y && reboot
1. Создаю юзера, грантую ему sudo через sudo adduser $USER sudo && sudo su $USER
1.1. Этому же юзеру в sudo visudo отрубаю требование пароля для sudo
1.2. Добавляю три-четыре SSH-ключа, чтобы сервак не требовал пароль при каждом входе, надоедает
2. Добавляю Docker:
2.1. Пишу десятки строк, добавляющих репозитории, GPG-ключ и прочую обвязку для работы Docker'а
2.2. Создаю группу для Docker с именем docker, чтобы я писал docker без sudo, запуская docker
2.3. Что-то там пуллю обязательно по стандарту через docker-compost, 2-3 образа и затем их запускаю
3. Добавляю PowerShell:
3.1. То же самое, что в пункте 2.1
3.2. Запускаю Powershell через pswh
3.2. Где-то в файлах шелла назначаю Powershell главным шеллом
4. Далее через Powershell:
4.1. Мучу папки
4.2. Ставлю Конду и Питон соответственно
Умеет ли всё это Ansible? Особенно в задачах создания юзера (и отключения ему требования паролей) и прописывания кастомных репозиториев и установки по ним пакетов?
Я не хочу зря тратить время, если это невозможно, но тем не менее уже читаю Getting Started в документации. Если кто-то знает, что Ansible не умеет, то я был бы рад услышать это заранее. Спасибо.
Ansible может все. Если что-то выходит за рамки его возможностей, то пишется скрипт который он сможет запустить.
Описанные тобой задачи - точно может.
Более того, в ansible есть репозиторий с roles ( так сказать готовые сценарии установки какого-то софта), которые ты можешь скачать и добавить переменные под себя. https://galaxy.ansible.com/atosatto/docker-swarm
Выучить ansible стоит, но с наскока не получиться, надо почитать.
Если лень тратить время, то быстрее получиться все это засунуть в скрипт.
Большинство вещей - без проблем. Например, можно использовать таск authorized_keys для аккуратного прописывания ключа вместо ручного его закидывания на сервер. Есть таски для создания пользователей и групп, установки софта, копирования файлов и создания их по шаблону...
Некоторые вещи можно делать косвенным путём, копируя и генерируя конфиги, запуская свои кастомные команды через таск shell, итд итп. Например, конфигурить sudo можно через создание файла с нужным содержимым в /etc/sudoers.d, не трогая основной конфиг.
В общем, даже если останутся некоторые задачи, которые ansible не сможет автоматизировать достаточно хорошо, во всём остальном он очень сильно облегчит сопровождение серверов, особенно подготовку новых.