Сергей Кузнецов
программист, иногда хожу в горы

Как я автоматизировал деплой с помощью Ansible

До недавнего времени деплой у нас выглядел так: заходишь по SSH на сервер, делаешь git pull, перезапускаешь сервис через systemd. Работало, но каждый раз руками и с шансом ошибиться в мелочи.

Решил перевести это на Ansible. Ниже — что получилось и какие грабли собрал.

Структура

Сделал минимальный набор:

Плейбук

Сам плейбук получился коротким:

- hosts: app
  become: yes
  roles:
    - app

Вся логика уехала в роль. Там — установка зависимостей, клонирование репозитория, сборка, миграции и перезапуск сервиса через systemd.

Что оказалось неочевидным

Результат

Деплой теперь занимает 40 секунд и запускается одной командой. Руками на сервер я больше не хожу. Если интересно — могу выложить пример роли на GitHub.