AlexUnderGo Infra repository #Домашнее задание №3 #Самостоятельное задание Исследовать способ подключения к someinternalhost в одну команду из вашего рабочего устройства, проверить работоспособность найденного решения - #IP addres bastion&someinternalhost на момент написания ssh -i ~/.ssh/id_rsa_yandex -J 158.160.33.197 [email protected]
#Дополнительное задание: Предложить вариант решения для подключения из консоли при помощи команды вида ssh someinternalhost из локальной консоли рабочего устройства, чтобы подключение выполнялось по алиасу someinternalhost - Создать на локальном компьютере и настроить свой ~/.ssh/config следующего содержания:
Host bastion HostName 51.250.93.42 #Путь к закрытому ключу, с которым подключаемся на удаленную машину IdentityFile ~/.ssh/id_rsa_yandex User alex Host someinternalhost HostName 10.128.0.15 User alex ProxyCommand ssh -W %h:%p bastion
После этого, можно подключаться строкой вида - ssh someinternalhost/ssh bastion
#Установка pritunl Установлен скриптом setupvpn.sh (переделаный под ubuntu 22.04). bastion_IP = 51.250.93.42 someinternalhost_IP = 10.128.0.15
#Домашнее задание №4 #Деплой тестового приложения Данные для проверки: testapp_IP = 51.250.89.168 testapp_port = 9292
#Дополнительное задание Создан скрипт install_all.sh для автоматической установки и деплоя приложения. #Для себя В папке /tmp создан скрип для автоматического развертывания виртуальной машины в YC и установки утилит+развертывания деплоя.
#Домашнее задание №5 Выполнено: Параметризирование шаблона Использованы другие оп Другие опции билдера *Построение bake-образа *Автоматизация создания ВМ
#Домашнее задание №6 Выполнено: Определите input переменную для приватного ключа, использующегося в определении подключения для провижинеров (connection);
Определите input переменную для задания зоны в ресурсе "yandex_compute_instance" "app". У нее должно быть значение по умолчанию;
Отформатируйте все конфигурационные файлы используя команду terraform fmt;
Создан файл terraform.tfvars.example, в котором указаны переменные для образца.
**Создан балансировщик lb.tf **Созданы инстансы через Count
#Домашнее задание №7 1.Удалены из папки terraform файлы main.tf, outputs.tf, terraform.tfvars, variables.tf, так как они теперь перенесены в stage и prod 2.Параметризирована конфигурация модулей нужным 3.Отформатированы конфигурационные файлы, используя команду terraform fmt
1.Настроено храниение стрейт файла в удаленном бекенде для stage и prod, использован Yandex Object Stprage в качестве бекенда. Описание бекенда вынесено в файл beckend.tf 2.Terraform видит текущее состояние, если перенести конфигурационные файлы. 3.Проверена работа блокировок при одновременном запуске. 4.Добавлено описание.
** 1.Добавлены необходимые provisioner в модули для деплоя и работы приложения. Файлы находятся в директории модуля. 2.Отключение provisioner не реализовано. 3.Добавлено описание.
#Домашнее задание №8 Установлен ansible через apt install Настроены файлы inventory и inventory.yml Создан playbook clone.yml -Теперь выполните ansible app -m command -a 'rm -rf ~/reddit' и проверьте еще раз выполнение плейбука. Что изменилось и почему? Строка changed=0 изменилась на 1 changed=1 потому, что с помощью playbook был залит репозиторий, который до этого удалили. * Написан скрипт для динамического интентори - inventory.sh, который берет данные из вывода terraform outputs. ansible-playbook -i inventory.sh
#Домашнее задание №9 (Ansible2) 1.Создан плейбук с тегами reddit_app_one_play.yml 2.Создан плейбук с несколькими сценариями reddit_app_multiple_plays.yml 3.Разбит на несколько плейбуков app.yml, db.yml, deploy.yml. Включены в один плейбук site.yml 4.Изменены образы packer для приложения app.json и базы данных db.json собираются с помощью packer_app.yml и packer_db.yml 5.На основе новых образов(reddit-db-ansible,reddit-app-ansible) с помощью terraform и плейбука site.yml созданы инстаны и деплой приложения * Создан динамический dinventory.py на основе скрипта для плагина яндекс(Yandex.Cloud inventory plugin) Для его работы, нужно выполнить export TF_VAR_yc_iam_token=$(yc iam create-token)` и export TF_VAR_yc_folder_id=$(yc config get folder-id), можно добавить в zshrc эти переменные. Так же пришлось и в плейбуках заменить имена Хостов на имена из ЯндексКлауд с "_" а не с "-"((reddit_app и reddit_db)особености выполнения питоновского скрипта строка 28) Что бы заработал, нужно раскоментировать строчку с #inventory = ./dinventory.py в Ansible.cfg Для работы плагина, если бы ветку с community.general.yc_compute вмержили, нужно раскоментировать в Ansible.cfg блок [inventory] и установить ansible-galaxy collection install community.general. А может он и правда не поддерживает мою версию ансибла 2.10.8?) Хотя его нет в мастере... #Домашнее задание №10 (Ansible3)
- Созданы структуры ролей app и db при помощи команды ansible-galaxy init
- Плейбуки app и db перенесены в соответсвующие роли
- Работа ролей протестирована
- Окружением по умолчанию задано окружение prod
- Добавлен вывод текущего окружения в вывод ansible
- Файлы, созданные в предыдущих ДЗ перенесены в соответствующие папки
- Проверено выполнение плейбуков с использованием ролей на окружениях stage и prod
- Установлена коммюнити роль jdauphant.nginx
- Папка с установленной ролью добавлена в .gitignore
- Роль настроена и протестирована в окружении prod
- Подготовлен плейбук users.yml для создания пользователей с использованием ansible vault
- Созданы файлы с данными пользователей в окружениях stage и prod
- Файлы зашифрованы с использованием vault.key
- Проверено создание пользователей с помощью ранее созданых плейбуков
- Динамический инвентори для окружений stage и prod настроен с помощью inventory.sh\dinventory.py