Giter VIP home page Giter VIP logo

alexundergo_infra's Introduction

AlexUnderGo_infra

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)

  1. Созданы структуры ролей app и db при помощи команды ansible-galaxy init
  2. Плейбуки app и db перенесены в соответсвующие роли
  3. Работа ролей протестирована
  4. Окружением по умолчанию задано окружение prod
  5. Добавлен вывод текущего окружения в вывод ansible
  6. Файлы, созданные в предыдущих ДЗ перенесены в соответствующие папки
  7. Проверено выполнение плейбуков с использованием ролей на окружениях stage и prod
  8. Установлена коммюнити роль jdauphant.nginx
  9. Папка с установленной ролью добавлена в .gitignore
  10. Роль настроена и протестирована в окружении prod
  11. Подготовлен плейбук users.yml для создания пользователей с использованием ansible vault
  12. Созданы файлы с данными пользователей в окружениях stage и prod
  13. Файлы зашифрованы с использованием vault.key
  14. Проверено создание пользователей с помощью ранее созданых плейбуков
  15. Динамический инвентори для окружений stage и prod настроен с помощью inventory.sh\dinventory.py

alexundergo_infra's People

Contributors

alexundergo avatar mrgreyves avatar

Watchers

Damir Grachev avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.