Skip to content

Otus-DevOps-2022-05/dsapozhnikov76_infra

Repository files navigation

dsapozhnikov76_infra

dsapozhnikov76 Infra repository

ДЗ 3

  1. Исследовать способ подключения к someinternalhost в одну команду:
ssh -i ~/.ssh/appuser -J [email protected] [email protected]
  1. Вариант решения для подключения из консоли при помощи команды вида ssh someinternalhost из локальной консоли рабочего устройства:

Добавить файл конфигурации ~/.ssh/config:

Host bastion
     Hostname 51.250.80.65
     User appuser
     Port 22
     IdentityFile ~/.ssh/appuser

Host someinternalhost
     User appuser
     ProxyCommand ssh bastion -W 10.128.0.6:22
  1. Подключение через VPN

bastion_IP = 51.250.80.65

someinternalhost_IP = 10.128.0.6

  1. Доп. задание - Подключение сертификата LetsEncrypt

Адрес - https://51-250-80-65.sslip.io/

ДЗ 4

testapp_IP = 51.250.78.161

testapp_port = 9292

ДЗ 6

  1. Установил terraform
  2. Добавил в main.tf провайдера Yandex
  3. Cделал terraform init
  4. Собрал файл ~/.terraformrc со ссылкой на mirror провайдера
provider_installation {
  network_mirror {
    url = "https://terraform-mirror.yandexcloud.net/"
    include = ["registry.terraform.io/*/*"]
  }
  direct {
    exclude = ["registry.terraform.io/*/*"]
  }
}
  1. Выполнил настройку main.tf чтобы создавать VM

    • Сделал создание VM по образу reddit-base
    • Добавил provisioning, connection с пользователем appuser
    • Проверил, что VM создается и доступен
  2. Задание со звездой, добавил балансер, переделал main.tf на создание 2 VM

ДЗ 7

  1. Удалите из папки terraform файлы main.tf, outputs.tf, terraform.tfvars, variables.tf, так как они теперь перенесены в stage и prod СДЕЛАНО
  2. Параметризируйте конфигурацию модулей насколько считаете нужным СДЕЛАНО
  3. Отформатируйте конфигурационные файлы, используя команду terraform fmt СДЕЛАНО
  4. Настройте хранение стейт файла в удаленном бекенде (remote backends) для окружений stage и prod, используя Yandex Object Storage в качестве бекенда. Описание бекенда нужно вынести в отдельный файл backend.tf СДЕЛАНО

ДЗ 8 Ansible - 1

  • Настроил ansible и окружение
  • Развернул stage
  • Создал инвентарные файлы
  • Создал ansible.cfg
  • Перевел инвентарный файл в формат YAML
  • Проверил работоспособность ansible с различными типа команд
  • Создал плэйбук и проверил

В первом случае после выполнения плэйбука результат работы ok=2 changed=0 то есть никаких изменений не было сделано, так как по указанному маршруту репозиторий уже был клонирован.

После удаления каталога ~/reddit на appserverб при выполнении плэйбука, результат ok=2 changed=1, то есть репозиторий reddit был снова клонирован

ДЗ 9 Ansible - 2

1. Использовал плейбуки, хендлеры и шаблоны для конфигурации окружения и деплоя тестового приложения.

При этом применялись следующие варианты подходов:

Один плейбук - один сценарий

В данном подходе создан плейбук reddit_app_one_play.yml с одним сценарием, содержащей конфигурирование MongoDB, деплой приложения и конфигурирование приложения.

Один плейбук - много сценариев

В данном подходе создан плейбук reddit_app_multiple_plays.yml с тремя сценариями, содержащими, соответственно, конфигурирование MongoDB, деплой приложения и конфигурирование приложения.

Много плейбуков

В данном подходе были созданы 3 плейбука - db.yml, deploy.yml и app.yml, которые содержат, соответственно, сценарии по конфигурированию MongoDB, деплою приложения и конфигурированию приложения.

2. Изменил provisioners образов Packer на Ansible-плейбуки.

ДЗ 10 Ansible - 3

  1. Разбил логику на роли: app, db
  2. Сделал два окружения: stage, prod
  3. Добавил nginx-роль для работы приложения на 80 порту
  4. Зашифровал плейбук с созданием пользователей

ДЗ 10 Ansible - 4

Vagrant

Выполнено основное задание.

Так как изначально использовал пользователя ubuntu делаю без переменной {{ deploy_user }}

Задание * выполнено

Добавлениe в Vargantfile extra_vars

ansible.extra_vars = {
    'nginx_sites' => { 'default' => ['listen 80','server_name "reddit"','location / {proxy_pass http://127.0.0.1:9292;}'] }
}