Добрый день! Ищем специалиста по 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
Результат после успешного завершения задачи:
1. Установка и настройка Redis проходит аналогично установке и настройке nginx, описанной выше т.е. делаем новую роль, разбиваем скрипты на handlers, tasks, templates.
2. При установке используем переменные из Gitlab CI Variables. Особенно не используем никаких секретных данных (доступов, паролей) в самом скрипте.
3. Запуск сервера работает без ошибок, как и работал до этого (см. пункты A.1-A.4 выше)
4. Сервис Redis доступен нашим приложениям, все могут сохранять данные в этот сервис и читать из него, таким образом все приложения могут обмениваться данными между собой.
5. Нет никаких новых дыр в системе безопасности серверов (будем проверять на 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 }} => ССЛ сертификат