verondel / intern-task

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CloudPractice

Практическое задание для работы с terraform, ansible и облаком Selectel.

В данной практике необходимо создать инфраструктуру в проекте Selectel с помощью terraform и сконфигурировать веб-сервисы с помощью ansible img.png

В качестве конечного приложения нужно использовать контейнер с todo и БД mysql. Смотри docker-compose файл ниже img.png

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

в папке terraform вы найдете пример модуля для создания прерываемого сервера.

  1. В провайдере openstack заполнить своими данными поля из excel таблицы
  • domain_name =
  • tenant_id = <id проекта, см скриншот в источниках>
  • user_name = <логин>
  • password = <пароль>
  • region =
  1. Будет плюсом использовать в качестве хранилища terraform state S3. Креды вам будут переданы отдельно. Для инициализации хранилища можно использовать команду terraform init -reconfigure -backend-config=backend.tfvars, где в файл backend.tfvars положить access_key, secret_key
  2. Необходимо развернуть n количество ВМ с атрибутом прерываемый
  3. Развернуть необходимые подсети
  4. Создать публичный ssh ключ и приатачить к ВМ
  5. Создать загружаемый диск с ubuntu 20.04
  6. Создать flavor 1CPU 2 gb RAM, Диск объем 10гб на каждую вм (базовый hdd)
  7. Для каждой ВМ зафиксировать публичный ip адрес
  8. В output зафиксировать вывод ip адрес и команду ssh для подключения
  9. Создать файл inventory.ini для ansible, где описаны айпи адреса созданных ВМ

В качестве примеров использовать preempible_sever с модулями. Это готовый рабочий пример, который нужно правильно запустить

Ansible

В директории ansible вы найдете шаблон, по которому можно составить плейбуки. Но это не является требованием, можно составлять плейбуки не опираясь на пример. Требования к плейбуку:

  • отдельная роль для установки докера
  • отдельная роль для установки приложения
  1. Использовать сгенерированный terraform'ом inventory файл
  2. Написать плейбуки для развертывания ваших приложений в docker-compose файлах. Примеры
  3. Приложение и база данных должны быть установлены на разных виртуальных машинах

Как принимается работа

В итоге по запуску команд

terraform apply

должна сгенерироваться инфраструктура и inventory.ini

по запуску команд

ansible-playbook your-playbook.yml

должно установиться ваше приложение на инфрастуктуру автоматически. Критерием выполнения задания является доступность веб интерфейса в публичном ip адресе (todo-app)

Раздел по безопасности

Ни в коем случае нельзя хранить в репозитории чувствительные данные! Работа не принимается, если в репозитории будут лежать логины, пароли от ВМ!

Источники

About


Languages

Language:HCL 99.6%Language:Jinja 0.4%