Задача 1 (вариант с AWS). Регистрация в aws и знакомство с основами (необязательно, но крайне желательно).
Остальные задания можно будет выполнять и без этого аккаунта, но с ним можно будет увидеть полный цикл процессов.
AWS предоставляет достаточно много бесплатных ресурсов в первый год после регистрации, подробно описано здесь.
- Создайте аккаут aws.
- Установите c aws-cli https://aws.amazon.com/cli/.
- Выполните первичную настройку aws-sli https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html.
- Создайте IAM политику для терраформа c правами
- AmazonEC2FullAccess
- AmazonS3FullAccess
- AmazonDynamoDBFullAccess
- AmazonRDSFullAccess
- CloudWatchFullAccess
- IAMFullAccess
- Добавьте переменные окружения
export AWS_ACCESS_KEY_ID=(your access key id) export AWS_SECRET_ACCESS_KEY=(your secret access key)
- Создайте, остановите и удалите ec2 инстанс (любой с пометкой
free tier
) через веб интерфейс.
В виде результата задания приложите вывод команды aws configure list
.
Решение
- Создал аккаунт AWS
- Установил aws-cli
- Выполнил первичную настройку aws-cli
- Создал IAM политику. Пользовался WEB-интерфейсом, CLI не трогал
- Добавил переменные окружения
- Создал, остановил и удалил EC2-инстанс через WEB-интерфейс
Вывод команды aws configure list
:
[frolls@mainframe task1]$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************TJJN shared-credentials-file
secret_key ****************Gph3 shared-credentials-file
region us-west-2 config-file ~/.aws/config
Задача 1 (Вариант с Yandex.Cloud). Регистрация в ЯО и знакомство с основами (необязательно, но крайне желательно).
- Подробная инструкция на русском языке содержится здесь.
- Обратите внимание на период бесплатного использования после регистрации аккаунта.
- Используйте раздел "Подготовьте облако к работе" для регистрации аккаунта. Далее раздел "Настройте провайдер" для подготовки базового терраформ конфига.
- Воспользуйтесь инструкцией на сайте терраформа, что бы не указывать авторизационный токен в коде, а терраформ провайдер брал его из переменных окружений.
Решение
Вот что получилось в итоге:
[frolls@mainframe devops-netology]$ yc config list
token: IDDQD
cloud-id: b1gkvhe2rk0g1fi0uu3t
folder-id: b1gav9nslcgv47g7gpim
compute-default-zone: ru-central1-a
- В каталоге
terraform
вашего основного репозитория, который был создан в начале курсе, создайте файлmain.tf
иversions.tf
. - Зарегистрируйте провайдер
- для aws. В файл
main.tf
добавьте блокprovider
, а вversions.tf
блокterraform
с вложенным блокомrequired_providers
. Укажите любой выбранный вами регион внутри блокаprovider
. - либо для yandex.cloud. Подробную инструкцию можно найти здесь.
- для aws. В файл
- Внимание! В гит репозиторий нельзя пушить ваши личные ключи доступа к аккаунту. Поэтому в предыдущем задании мы указывали их в виде переменных окружения.
- В файле
main.tf
воспользуйтесь блокомdata "aws_ami
для поиска ami образа последнего Ubuntu. - В файле
main.tf
создайте рессурс- либо ec2 instance.
Постарайтесь указать как можно больше параметров для его определения. Минимальный набор параметров указан в первом блоке
Example Usage
, но желательно, указать большее количество параметров. - либо yandex_compute_image.
- либо ec2 instance.
Постарайтесь указать как можно больше параметров для его определения. Минимальный набор параметров указан в первом блоке
- Также в случае использования aws:
- Добавьте data-блоки
aws_caller_identity
иaws_region
. - В файл
outputs.tf
поместить блокиoutput
с данными об используемых в данный момент:- AWS account ID,
- AWS user ID,
- AWS регион, который используется в данный момент,
- Приватный IP ec2 инстансы,
- Идентификатор подсети в которой создан инстанс.
- Добавьте data-блоки
- Если вы выполнили первый пункт, то добейтесь того, что бы команда
terraform plan
выполнялась без ошибок.
Решения
- Ответ на вопрос: при помощи какого инструмента (из разобранных на прошлом занятии) можно создать свой образ ami? На ум приходит только Packer.
- Ссылку на репозиторий с исходной конфигурацией терраформа.
Решение для AWS
Решение тут
После выполнения terraform apply
:
account_id = "781641735658"
caller_user_id = "AIDA3L7L2LXVP3JJKUNSL"
instance_ip_addr = "172.16.10.100"
region_name = "us-west-2"
subnet_id = "subnet-0bf8513b2304c6040"
Решение для yc
Решение здесь
После выполнения terraform apply
:
external_ip_address_vm_1 = "62.84.114.72"
internal_ip_address_vm_1 = "192.168.10.26"
SSH-подключение через публичный IP по ключу работает прекрасно.