Мой идеальный Linux сервер

“А что это за программа такая?” – часто приходиться слышать, работая на сервере в SSH терминале, от человека, который подошел и уставился в мой монитор. Сегодня, дорогой друг, стоящий за моей спиной, я познакомлю тебя с ПО, которое использую в ежедневной работе. Но, начать надо с того, как все это добро попадает на тот самый Linux сервер.

Виртуальные машины приходят и уходят, иногда, десятками за неделю. Каждый раз настраивать “под себя” утомительно… Я нашел для себя решение задачи и теперь готов поделиться. Это ansible – простой инструмент, который через стандартное SSH подключение выполняет рутинные операции по подготовке сервера к работе. Все инструкции, что делать, описаны в файле playbook.yml. В качестве хоста, который будет настраивать, должна быть Linux либо OSX машина. Я это всегда делаю со своего MacBook либо с тестового Linux сервера в офисе. Но, в основном с MacBook. Сам рецепт приготовления сервера, я выложил на github и сейчас расскажу, как им пользоваться.

Процесс настройки состоит из нескольких этапов:

  1. Установка всего необходимого мне ПО.
  2. Создание пользователей и настройка ключей авторизации для SSH. Отключение регистрации по паролю и отключение root через ssh.
  3. Настройка firewall – опционально.
  4. Установка 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 установит весь нужный набор ПО, создаст пользователей, скопирует нужные конфигурационные файлы на сервер и подготовит все для работы:

ansible-playbook my-shell

Ниже представлен полный список ПО, которое будет установлено:

  • jq
  • zsh
  • git
  • vim
  • ntp
  • mtr
  • curl
  • sudo
  • tree
  • tmux
  • mosh
  • lsof
  • htop
  • iotop
  • iftop
  • iperf
  • ngrep
  • tcpdump
  • dnsutils

Теперь я могу подключаться к серверу и приступать к работе под своим пользователем в привычное окружение:

ansible my-shell

Настройка файрвола

Если нужно сразу сконфигурировать порты доступа к серверу, то для этого я предусмотрел секцию ufw в файле group_vars/all.yml. Здесь нужно включить firewall и прописать какие tcp и udp порты будут открыты.

Установка docker

Просто напишите

make install-docker

ansible install docker

Заключение

С помощью Ansible настройка нового сервера занимает около 2-х минут. Если Вы часто настраиваете сервера, советую ознакомиться с данным инструментом.

В следующей статье, я расскажу о тех программах, которые устанавливает мой playbook.

Leave a Reply

Your email address will not be published. Required fields are marked *