Если в рамках предыдущего задания у вас уже есть аккаунт AWS, то давайте продолжим знакомство со взаимодействием терраформа и aws.
- Создайте s3 бакет, iam роль и пользователя от которого будет работать терраформ. Можно создать отдельного пользователя, а можно использовать созданного в рамках предыдущего задания, просто добавьте ему необходимы права, как описано здесь. YC backends
- Зарегистрируйте бэкэнд в терраформ проекте как описано по ссылке выше.
-
Выполните
terraform init
: -
Создайте два воркспейса
stage
иprod
.
terraform workspace new stage
terraform workspace new prod
- В уже созданный
aws_instance
добавьте зависимость типа инстанса от вокспейса, что бы в разных ворскспейсах использовались разныеinstance_type
. - Добавим
count
. Дляstage
должен создаться один экземплярec2
, а дляprod
два. - Создайте рядом еще один
aws_instance
, но теперь определите их количество при помощиfor_each
, а неcount
. - Что бы при изменении типа инстанса не возникло ситуации, когда не будет ни одного инстанса добавьте параметр
жизненного цикла
create_before_destroy = true
в один из рессурсовaws_instance
. - При желании поэкспериментируйте с другими параметрами и рессурсами.
В виде результата работы пришлите:
# yandex_compute_instance.vm-2["prod"] will be created
+ resource "yandex_compute_instance" "vm-2" {
+ created_at = (known after apply)
+ folder_id = (known after apply)
+ fqdn = (known after apply)
+ hostname = (known after apply)
+ id = (known after apply)
+ metadata = {
+ "ssh-keys" = <<-EOT
#cloud-config
users:
- name: vagrant
groups: sudo
shell: /bin/bash
sudo: ['ALL=(ALL) NOPASSWD:ALL']
ssh_authorized_keys:
SHA256:O853JyHi5gt8FWHDCbWta6StTT9aQLXQdNXX4f+WoM0 vagrant@terraform01
EOT
}
+ name = "terraform-netology"
+ network_acceleration_type = "standard"
+ platform_id = "standard-v1"
+ service_account_id = (known after apply)
+ status = (known after apply)
+ zone = (known after apply)
+ boot_disk {
+ auto_delete = true
+ device_name = (known after apply)
+ disk_id = (known after apply)
+ mode = (known after apply)
+ initialize_params {
+ block_size = (known after apply)
+ description = (known after apply)
+ image_id = "fd8iqd03vink8hs1nppp"
+ name = (known after apply)
+ size = (known after apply)
+ snapshot_id = (known after apply)
+ type = "network-hdd"
}
}
+ network_interface {
+ index = (known after apply)
+ ip_address = (known after apply)
+ ipv4 = true
+ ipv6 = (known after apply)
+ ipv6_address = (known after apply)
+ mac_address = (known after apply)
+ nat = true
+ nat_ip_address = (known after apply)
+ nat_ip_version = (known after apply)
+ security_group_ids = (known after apply)
+ subnet_id = (known after apply)
}
+ placement_policy {
+ placement_group_id = (known after apply)
}
+ resources {
+ core_fraction = 100
+ cores = 2
+ memory = 2
}
+ scheduling_policy {
+ preemptible = (known after apply)
}
}
Выполненное домашнее задание пришлите ссылкой на .md-файл в вашем репозитории.