Практическое задание для работы с terraform, ansible и облаком Selectel.
В данной практике необходимо создать инфраструктуру в проекте Selectel с помощью terraform и сконфигурировать веб-сервисы с помощью ansible
В качестве конечного приложения нужно использовать контейнер с todo и БД mysql. Смотри docker-compose файл ниже
version: "3.7"
services:
app:
image: antonaleks/101-todo-app
ports:
- 3000:80
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:5.7
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
Нужно создать n=2 виртуальные машины, одну для todo app, другую для mysql DB.
в папке terraform вы найдете пример модуля для создания прерываемого сервера.
- В провайдере openstack заполнить своими данными поля из excel таблицы
- domain_name =
- tenant_id = <id проекта, см скриншот в источниках>
- user_name = <логин>
- password = <пароль>
- region =
- Будет плюсом использовать в качестве хранилища terraform state S3. Креды вам будут переданы отдельно. Для инициализации хранилища можно использовать команду
terraform init -reconfigure -backend-config=backend.tfvars
, где в файл backend.tfvars положить access_key, secret_key - Необходимо развернуть n количество ВМ с атрибутом прерываемый
- Развернуть необходимые подсети
- Создать публичный ssh ключ и приатачить к ВМ
- Создать загружаемый диск с ubuntu 20.04
- Создать flavor 1CPU 2 gb RAM, Диск объем 10гб на каждую вм (базовый hdd)
- Для каждой ВМ зафиксировать публичный ip адрес
- В output зафиксировать вывод ip адрес и команду ssh для подключения
- Создать файл inventory.ini для ansible, где описаны айпи адреса созданных ВМ
В качестве примеров использовать preempible_sever с модулями. Это готовый рабочий пример, который нужно правильно запустить
В директории ansible вы найдете шаблон, по которому можно составить плейбуки. Но это не является требованием, можно составлять плейбуки не опираясь на пример. Требования к плейбуку:
- отдельная роль для установки докера
- отдельная роль для установки приложения
- Использовать сгенерированный terraform'ом inventory файл
- Написать плейбуки для развертывания ваших приложений в docker-compose файлах. Примеры
- Приложение и база данных должны быть установлены на разных виртуальных машинах
В итоге по запуску команд
terraform apply
должна сгенерироваться инфраструктура и inventory.ini
по запуску команд
ansible-playbook your-playbook.yml
должно установиться ваше приложение на инфрастуктуру автоматически. Критерием выполнения задания является доступность веб интерфейса в публичном ip адресе (todo-app)
Ни в коем случае нельзя хранить в репозитории чувствительные данные! Работа не принимается, если в репозитории будут лежать логины, пароли от ВМ!
- ресурсы опенстека в terraform registry
- откуда брать id проекта
- документация selectel
- примеры selectel (terraform selectel provider использовать не нужно, только openstack)
- пример связки terraform+ansible. смотреть папку terraform и ansible