мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
devops_training_in_yandex:devops-trainings-cloud-1 [2023/11/13 08:31] Администраторdevops_training_in_yandex:devops-trainings-cloud-1 [2023/11/13 11:21] (текущий) Администратор
Строка 328: Строка 328:
  
 ==== Запуск ==== ==== Запуск ====
 +<note important>У вас заранее должны быть созданы два сервисных аккаунта в яндекс облаке с нужными правами, описанными в **main.tf**</note>
 Для начала нужно выполнить команду Для начала нужно выполнить команду
 <code>terraform plan</code> <code>terraform plan</code>
Строка 337: Строка 338:
 === Разбор ошибок и устранение === === Разбор ошибок и устранение ===
 1) Ошибка в названии регистра 1) Ошибка в названии регистра
-Error: Reference to undeclared resource+<note>Error: Reference to undeclared resource
 on output.tf line 2, in output "container_registry_id": on output.tf line 2, in output "container_registry_id":
 2:   value = yandex_container_registry.registry1.id 2:   value = yandex_container_registry.registry1.id
-A managed resource "yandex_container_registry" "registry1" has not been declared in the root module.+A managed resource "yandex_container_registry" "registry1" has not been declared in the root module.</note>
  
-Тут все просто, в файле output.tf не верно указано название регистра **registry1**+Тут все просто, в файле **output.tf** не верно указано название регистра **registry1**
 В моем случае оно называется **ikfellk-registry** Просто меняю на корректное название и ошибка уходит В моем случае оно называется **ikfellk-registry** Просто меняю на корректное название и ошибка уходит
  
 2) Отсутствует json файл с данными 2) Отсутствует json файл с данными
-Error: Invalid SA Key+<note>Error: Invalid SA Key
 with provider["registry.terraform.io/yandex-cloud/yandex"], with provider["registry.terraform.io/yandex-cloud/yandex"],
 on main.tf line 11, in provider "yandex": on main.tf line 11, in provider "yandex":
Строка 354: Строка 355:
 with provider["registry.terraform.io/yandex-cloud/yandex"], with provider["registry.terraform.io/yandex-cloud/yandex"],
 on main.tf line 11, in provider "yandex": on main.tf line 11, in provider "yandex":
-11:   service_account_key_file = "./tf_key.json"+11:   service_account_key_file = "./tf_key.json"</note>
  
 Для решения нужно сгенерировать json файл с данными для входа Для решения нужно сгенерировать json файл с данными для входа
-Мы это уже делали ранее в [[https://wiki.fellk.ru/doku.php/devops_training_in_yandex/devops-trainings-cloud-1#avtosborka_s_pomoschju_github_ci_i_otpravka_v_jandeks_oblako | тут]]+Мы это уже делали ранее [[https://wiki.fellk.ru/doku.php/devops_training_in_yandex/devops-trainings-cloud-1#avtosborka_s_pomoschju_github_ci_i_otpravka_v_jandeks_oblako | тут]] 
 +Теперь выполняем команду 
 +<code>terraform plan</code> 
 +Видим что ошибки ушли, но появилась еще одна 
 + 
 +{{:devops_training_in_yandex:pasted:20231113-113611.png?nolink}} 
 + 
 +3) Отсутствует SSH ключ для авторизации 
 +<note>Error: Invalid function argument 
 +on main.tf line 119, in resource "yandex_compute_instance_group" "catgpt": 
 +119:       ssh-keys  = "ubuntu:${file("~/.ssh/devops_training.pub")}" 
 +while calling file(path) 
 +Invalid value for "path" parameter: no file exists at "~/.ssh/devops_training.pub"; this function works 
 +only with files that are distributed as part of the configuration source code, so if this file will be 
 +created by a resource in this configuration you must instead obtain this result from an attribute of that 
 +resource.</note> 
 +Для решения нужно сгенерировать SSH ключ 
 +<code>ssh-keygen -t rsa</code> 
 +Указываем путь и название как в ошибке **/root/.ssh/devops_training** 
 +Вводим пароль 
 +Проверяем полученные сертификаты 
 +<code>~/.ssh/</code> 
 +{{:devops_training_in_yandex:pasted:20231113-114723.png?nolink}} 
 + 
 +Теперь выполняем команду 
 +<code>terraform plan</code> 
 +И получаем полностью корректный план. 
 +Небольшой пример как это выглядит 
 + 
 +{{:devops_training_in_yandex:pasted:20231113-123824.png?nolink}} 
 + 
 +После этого можно запускать команду, которая настроит все необходимые ресурсы в автоматическом режиме 
 +<code>terraform apply</code> 
 +В конце, как отработает команда, вы получите такой вывод 
 + 
 +{{:devops_training_in_yandex:pasted:20231113-132702.png?nolink}} 
 + 
 +===== Тестируем отработанный Terraform ===== 
 +Переходим в свой личный кабинет яндекс облака и смотрим что там появились машины, сети, балансировщик и регистр 
 + 
 +{{:devops_training_in_yandex:pasted:20231113-133032.png?nolink}} 
 + 
 +Теперь нужно загрузить актуальную версию приложения в контейнер 
 +Для этого выполняем уже знакомые нам команды 
 +<code>git pull</code> 
 +<code>git tag -a v1.2.5 -m "Тест автосборки"</code> 
 +<code>git push origin v1.2.5</code> 
 +Вводим логин и пароль от гитхаба 
 +Спустя примерно минуту или полторы, смотрим в личный кабинет яндекс облака и видим там контейнер 
 + 
 +{{:devops_training_in_yandex:pasted:20231113-141414.png?nolink}} 
 + 
 +Теперь переходим в веб браузер по ip адресам виртуальный машин созданный нашим terraform файлом 
 +и видим там рабочее приложение и метрики 
 + 
 +{{:devops_training_in_yandex:pasted:20231113-141532.png}} 
 +{{:devops_training_in_yandex:pasted:20231113-141625.png}} 
 +{{:devops_training_in_yandex:pasted:20231113-141549.png}} 
 +{{:devops_training_in_yandex:pasted:20231113-141641.png}} 
 + 
 +Для проверки балансировки нужно отключить одну виртуальную машину и со второй ничего не должно произойти и приложение так же останется в рабочем состоянии 
 + 
 +Все работает как нужно. 
 + 
 +Делаем удаление всех ресурсов 
 +<code>terraform destroy</code> 
 + 
 +Задание выполнено.