“А что это за программа такая?” — часто приходиться слышать, работая на сервере в SSH терминале, от человека, который подошел и уставился в мой монитор. Сегодня, дорогой друг, стоящий за моей спиной, я познакомлю тебя с ПО, которое использую в ежедневной работе. Но, начать надо с того, как все это добро попадает на тот самый Linux сервер.
Виртуальные машины приходят и уходят, иногда, десятками за неделю. Каждый раз настраивать “под себя” утомительно… Я нашел для себя решение задачи и теперь готов поделиться. Это ansible
— простой инструмент, который через стандартное SSH подключение выполняет рутинные операции по подготовке сервера к работе. Все инструкции, что делать, описаны в файле playbook.yml. В качестве хоста, который будет настраивать, должна быть Linux либо OSX машина. Я это всегда делаю со своего MacBook либо с тестового Linux сервера в офисе. Но, в основном с MacBook. Сам рецепт приготовления сервера, я выложил на github и сейчас расскажу, как им пользоваться.
Процесс настройки состоит из нескольких этапов:
- Установка всего необходимого мне ПО.
- Создание пользователей и настройка ключей авторизации для SSH. Отключение регистрации по паролю и отключение root через ssh.
- Настройка firewall — опционально.
- Установка docker — опционально.
А теперь о каждом пункте детальный.
Подготовка конфигурации
Качаем локально мой репозиторий:
git clone https://github.com/kovalyshyn/ansible-my-shell.git
В файле group_vars/all.yml прописан логин пользователя, которого необходимо создать. Так же, для него Вам понадобиться создать пароль с помощью команды mkpasswd --method=SHA-512
, результат присвоить в переменную password. Обратите внимание, здесь может быть указано несколько пользователей. В файле public_keys/ssh_keys.pub разместите ключи ssh доступа для нового пользователя.
В массиве locales_gen укажите какие дополнительные локали необходимо создать на сервере.
В файле hosts прописаны хосты, которые мы будим настраивать. Идеальный варианта (как с DigitalOcean) у Вас уже установлен OS с пользователем root и авторизаций по SSH ключу.
Так же, стоит заметить, что мой рецепт пригоден только для Debian или Ubuntu Linux. Для других дистрибутивов его придется дописывать.
Установка необходимого ПО и создание пользователей
Для простоты, я создал Makefile, который содержит основные команды. Что бы выполнить установку и создать пользователей, достаточно ввести:
make install
Ansible
установит весь нужный набор ПО, создаст пользователей, скопирует нужные конфигурационные файлы на сервер и подготовит все для работы:
Ниже представлен полный список ПО, которое будет установлено:
Теперь я могу подключаться к серверу и приступать к работе под своим пользователем в привычное окружение:
Настройка файрвола
Если нужно сразу сконфигурировать порты доступа к серверу, то для этого я предусмотрел секцию ufw в файле group_vars/all.yml. Здесь нужно включить firewall и прописать какие tcp и udp порты будут открыты.
Установка docker
Просто напишите
make install-docker
Заключение
С помощью Ansible настройка нового сервера занимает около 2-х минут. Если Вы часто настраиваете сервера, советую ознакомиться с данным инструментом.
В следующей статье, я расскажу о тех программах, которые устанавливает мой playbook.