Gitlab + Ansible: Добавить в конфигурацию сервис Redis и доступы
2225 UAHДобрый день! Ищем специалиста по DevOps с опытом Gitlab, Ansible, Terraform, Redis
У нас есть рабочий скрипт на Gitlab + Ansible, который:
A.1. запускает машину в облаке Hetzner, устанавливает на ней CentOS
A.2. конфигурирует на ней нужные сервисы (nginx, PHP и т.д.)
A.3. скачивает код PHP из BitBucket
A.4. записывает доступы (например, к DB серверам) из Gitlab CI Variables в конфиг-файлы приложения PHP
На скрипт есть краткая документация объемом 10 страниц (по-английски). Также есть (очень ограниченный) доступ к специалисту, который это все устанавливал (по-русски).
В этот существующий скрипт нужно добавить следующие функции:
B.1. установку сервиса кеширования Redis на сервере
B.2. конфигурацию сервиса Redis:
1) открыть порты Redis для определенных IP-адресов
2) добавить три разных хоста, порта, доступа, пароля для сервиса Redis в Gitlab CI Variables
3) скачать конфиг-файлы из четырех репо в BitBucket, в каждый из них записать нужный (из трех возможных) доступ и пароль из Gitlab CI Variables, сохранить файл с этими доступами на сервере (это конфиг-файлы .env, который нужны для кода PHP/Laravel, и один конфиг-файл PHP-приложения)
Результат после успешного завершения задачи:
1. Запуск сервера работает без ошибок, как и работал до этого (см. пункты A.1-A.4 выше)
2. Сервис Redis доступен четырем приложениям (см. четыре репо в пункте B.2.3), все четыре могут сохранять данные в этот сервис и читать из него, таким образом все четыре приложения могут обмениваться данными между собой.
3. Нет никаких новых дыр в системе безопасности серверов (будем проверять на Vulnerabilities сканером Nessus).
Ждем Ваших ставок! Просим задавать все Ваши вопросы по задаче перед началом работ, чтобы было полное обоюдное понимание об ожидаемом результате. Будем отвечать на вопросы Вам лично, а также обновлять эту задачу, чтобы все увидели новые детали.
Добавляю детали о структуре существующего кода.
1) Добавляю файл с полной структурой папок и файлов в ветке master на Gitlab.
Как видите, каждый компонент на сервере лежит в отдельной папке в config_new_platform/roles (например, nginx).
2) Добавляю файл config_new_platform/site.yml
Как видите, этот файл просто показывает списик roles, которые нужно исполнить (например, nginx).
3) Добавляю файлы config_new_platform/roles/nginx:
a) handlers/main.yml
b) tasks/main.yml
c) templates/default.conf
d) templates/nginx.conf
Как видите, в этих файлах используются переменные из Gitlab CI Variables, например {{ TF_VAR_HOSTNAME }} => название хоста в терраформ или {{ SSL_privkey }} => ССЛ сертификат
Таким образом, уточняю задачу:
1. Установка и настройка Redis проходит аналогично установке и настройке nginx, описанной выше т.е. делаем новую роль, разбиваем скрипты на handlers, tasks, templates.
2. При установке используем переменные из Gitlab CI Variables. Особенно не используем никаких секретных данных (доступов, паролей) в самом скрипте.
Приложения 6
Результаты работы
Отзыв заказчика о сотрудничестве с Rostyslav Matiusha
Gitlab + Ansible: Добавить в конфигурацию сервис Redis и доступыДетально обсудили задачу, передали её Ростиславу. Назначили звонок, по скайпу еще раз все проговорили, дали доступ в Гитлаб. Срок исполнения был 3 дня.
С тех пор прошло 6 дней, мы не получили ни одного сообщения от Ростислава, хотя писали ему много раз по всем каналам (скайп, СМС, мейл, на этом сайте, звонили).
Надеемся, что у него не произошло какой-то личной катастрофы, и с ним всё хорошо -- но не знаем, т.к. просто не отвечает.