cute950 Infra repository
$ ssh -J appuser@<bastion_IP> appuser@<someinternalhost_IP>
Отредактировать / создать файл конфигурации SSH для текущего пользователя ~/.ssh/config
$ nano ~/.ssh/config
добавив в него следующие строки:
Host bastion
HostName <bastion_IP>
User appuser
IdentityFile ~/.ssh/appuser
Host someinternalhost
HostName <someinternalhost_IP>
User appuser
ProxyJump bastion
IdentityFile ~/.ssh/appuser
Таким образом, подключиться к someinternalhost теперь можно при помощи
$ ssh someinternalhost
Данные для подключения: bastion_IP = 158.160.35.233 someinternalhost_IP = 10.128.0.19
- Параметризация шаблона
- Построение bake-образа --> по шаблону immutable.json в директории packer
- Создан скрипт create-reddit-vm.sh в директории config-scripts, который создает ВМ с помощью Yandex.Cloud CLI.
Данные для подключения: testapp_IP = 51.250.75.115 testapp_port = 9292
Команда для запуска Startup скрипта:
$ sh ./startup.sh
при команде terraform apply возникла ошибка: Error: Error while requesting API to create instance: server-request-id = 76bc9c1a-7e5f-b439-b97e-d497fe004f4b server-trace-id = b01c8f65b967fb64:ca4dd494e5960766:b01c8f65b967fb64:1 client-request-id = 89def97d-5027-43c9-b77d-9b96e0ee3ef6 client-trace-id = 70fba088-4a74-4cb0-9ab7-47d78b9fb330 rpc error: code = InvalidArgument desc = the specified number of cores is not available on platform "standard-v1"; allowed core number: 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32
поправила ее путем изменения кол-ва ядер cores = 2 в resources в main.tf
name так же изменила на reddit-app-terraform, так как в рамках предыдущего дз ВМ с именем reddit-app уже существовала
Выполнено: Самостоятельные задания:
- Определите input переменную для приватного ключа, использующегося в определении подключения для провижинеров (connection);
- Определите input переменную для задания зоны в ресурсе "yandex_compute_instance" "app". У нее должно быть значение по умолчанию;
- Отформатируйте все конфигурационные файлы используя команду terraform fmt;
- Так как в репозиторий не попадет ваш terraform.tfvars, то нужно сделать рядом файл terraform.tfvars.example, в котором будут указаны переменные для образца
Задание с **
- Создайте файл lb.tf и опишите в нем в коде terraform создание HTTP балансировщика
- Создание инстансов с заданием их количества через параметр ресурса count
ДЗ "Принципы организации инфраструктурного кода и работа над инфраструктурой в команде на примере Terraform."
Выполнено: Самостоятельные задания:
- Удалите из папки terraform файлы main.tf, outputs.tf, terraform.tfvars, variables.tf, так как они теперь перенесены в stage и prod
- Параметризируйте конфигурацию модулей насколько считаете нужным
- Отформатируйте конфигурационные файлы, используя команду terraform fmt
Задание с *
- Настройте хранение стейт файла в удаленном бекенде (remote backends) для окружений stage и prod, используя Yandex Object Storage в качестве бекенда. Описание бекенда нужно вынести в отдельный файл backend.tf
- Перенесите конфигурационные файлы Terraform в другую директорию (вне репозитория). Проверьте, что state-файл (terraform.tfstate) отсутствует. Запустите Terraform в обеих директориях и проконтролируйте, что он "видит" текущее состояние независимо от директории, в которой запускается
- Попробуйте запустить применение конфигурации одновременно, чтобы проверить работу блокировок
Задание с **
- Добавлены необходимые provisioner в модули для деплоя и работы приложения.
-
Теперь выполните ansible app -m command -a 'rm -rf ~/reddit' и проверьте еще раз выполнение плейбука. Что изменилось и почему? Появился маркер changed=1, так как мы удалили папку reddit с сервера
-
Основное отличие статического и динамического инвентори в том, что динамическое инвентори позволяет формировать для Ansible список хостов и инфу по ним динамически во время выполнения, "на лету", а статическое - хардкодит хосты. Т.о. в случае появления новых хостов при отсутствии динамического инвентори их придется забивать ручками, что не удобно и может приводить к проблемам.
Задание с * - создала файл dynamic_inventory.sh, который генерирует файл inventory.json. переменной inventory в конфиге ансибла присвоила ссылку на путь до созданного файла.
сделано основное задание
Задание с * - создала файл dynamic_inventory.sh, который генерирует файл inventory.json в каждой из папок. переменной inventory в конфиге присвоила ссылку на путь до созданного файла.
Задание со * $ docker inspect <u_container_id> $ docker inspect <u_image_id>
первая команда выводит информацию по контейнеру, а вторая информацию по созданному образу контейнера. контейнер отличается от образа тем, что представляет собой запущенное приложение, в то время как образ - является лишь шаблоном этого контейнера, позволяющим его создать.
- Создана bridge-сеть для контейнеров
- Запущены контейнеры в этой сети
- Добавлены сетевые алиасы для контейнеров
Задания со *
- замена сетевых алиасов и попытка запуска контейнеров с ними
- уменьшение размеров образов
выполнено основное задание
Задание: Узнайте как образуется базовое имя проекта. Можно ли его задать? Если можно то как? - указав флаг --project-name с именем проекта, хранящегося в переменной PROJECT_NAME у команды docker-compose
Подготовлено приложение в локальном окружении, далее запущено на реальном кластере Kubernetes с использованием YC. Задание *
- Развернула Kubernetes-кластер в Yandex cloud с помощью Terraform модуля