andrushke88 Infra repository
Host someinternalhost
Hostname 10.128.0.18
User appuser
ProxyCommand ssh -W %h:%p -i ~/.ssh/appuser -A [email protected]
bastion_IP = 178.154.203.26
someinternalhost_IP = 10.128.0.18
testapp_IP = 178.154.207.131 testapp_port = 9292
- Создание новой ветки packer-base
- Перенос файлов пердыдущего задания в папку config-scripts
- Выкачан последний packer и переложен в папку ~/.local/path
- Создан сервисный аккаунт с делегирование прав и создание ключа доступа
- Исследовано на практике создание образа ubuntu при помощи Packer
- Выполнены задания со *, а именно создан packer сборщик сервера из предыдущего задания с созданием демона puma.service и создание скрипта развёртывания сервера из образа.
- Создание новой ветки terraform-1 и каталога terraform
- Скачан и добавлен в $PATH требуемый terraform v0.12.8
- В папке terraform создан main.tf и описан провайдер требуемой версии с последующей инициализацией
- Дополнен .gitignore
- Добавлено описание провайдера и ресурса с распаковкой образа
- Исследована работа развёртыванием терраформа и создан файл с выходными переменными
- Добавление провижинеров
- Добавление переменных для удобства изменений
- Проведена финальная проверка
- Выполнены самостоятельные задания
- Исследовано и выполнено задание с 2x*
ДЗ № 7 Принципы организации инфраструктурного кода и работа над инфраструктурой в команде на примере Terraform.*
- Установил количество инстансов равным 1.
- Решил, что нет необходимости в балансёре, убрал.
- Описал создание виртуальной сети в main.tf файле.
- Создал два json шаблона packer для создания образов машин с базой и приложением.
- Разнёс конфигурации по tf файлам.
- Добавил OUTPUT переменные на основе созданной сети.
- Создание модулей для развёртывания базы и приложения.
- Подключение модулей к основному main.tf файлу.
- Создание двух веток stage и prod.
- Добавление tf файла для создание bucketа для хранения state файла и создание backend.tf.
- Вынос фалов без state файла и проверка работы.
- Добавление провижинеров для полноценного развёртывания приложения и настройки порта и адреса прослушивания базы.
- Создание ветки ansible-1
- Установка python 2.7 и pip
- С помощью pip произведена установка ansible версии >=2.4
- Создание inventory файла с указанием параметров подключения по ssh
- Исследование работы модуля ping по командам ansible на dbsever и appserver
- Создание config файла для ansible, что облегдчает написание inventory файла
- Исследована работа ansible с группами хостов
- Написание inventory.yaml(тот же inventory, только в yaml формате)
- Произведено клонирование git репозиторий reddit на машину appserver с помощью ansible и проверка выходных параметров при попытке повторного клонирования
- Написание первого playbook по клонированию репозитория
- В задании со * необходимо создать динамический инвентори, поэтому изучаем ,выхлоп yc compute instance list и подмечаем вывод в виде таблицы, значит для парса будем использовать awk. После длительных мучений и гуглений получилось собрать файл invenory стандартного формата, вот именно из него создадим при помощи ansible-inventory json файл. Далее просто перепишем ansible.cfg на json инвентори.
- Создание ветки ansible-2
- Подготовка кода инфры и изучение работы плейбуков
- Написание первых сценариев для db сервера
- Рассмотрение работы параметров запуска ansible-playbook
- Рассмотрение описания блока переменных
- Рассмотрение описания и работы блока "handlers"
- Настройка инстанса с приложением
- Деплой приложений относительно тасков по тэгам
- Создание файла с двумя сценариями по тэгам и деплой на новые инстансы
- Дробление плейбука на несколько, в этом случае тэги не использовались
- Именение провижининга для Packer(написание плейбуков для деплоя приложений вместо bash скриптов)
- Проверка создания образов
- Создание ветки ansible-3
- Изучение команд ansible-galaxy
- Создание ролей с помощью ansible-galaxy
- Перенос кода из плэйбуков в роли
- Создаём разделение на окружения с описанием во время выполнения ролей и заданием группорвых переменных
- Подтягиваем из ansible-galaxy роль jdauphant при помощи requirements.yml
- Применяем роль в общем плейбуке site.yml и проверяем доступность приложения по 80-му порту
- Изучаем работу Ansible Vault и шифруем файлы credentials.yml при помощи VAULT KEY
- Создание ветки ansible-4
- Установка VirtualBox и Vagrant
- Дополнение .gitignore во избежание появления мусора
- Описание Vagrantfile с описанием размера памяти под вм, описанием бокса, именем виртуалки и её адреса
- Поднятие виртуалок и созерцание Vagrant cloud
- Изучение простейших команд vagrant
- Доработка ролей, дополнение vagrantfile и проверка работы приложения на локальном окружении
- Выполнение задание со * по конфигурации nginx
- Установка molecul, testinfra и python-vagrant(пришлось жёстко прописать версии)
- Инициализация сценария molecule
- Добавление тестового скрипта и создание машины тестирования с последующим применение playbook.yml
- Дописание теста доступности порта 27017 и перестройка yml и json файлов pakcer под роли