Рубрики
Uncategorized

Код, инициатор, план, применить с Terraform

Эта первая статья о Terraform объяснит вам концепцию инфраструктуры как кода или IAC и … Tagged с Terraform, AWS, DevOps.

Эта первая статья о Terraform объяснит вам концепцию инфраструктуры как кода или IAC и о том, как сначала настроить и использовать Terraform для предоставления виртуальной машины или экземпляра, а также особенно веб-сервера на веб-службе Amazon и все это, бесплатно, используя бесплатный уровень на AWS.

Инфраструктура как код?

Давным -давно, но не так далеко, команды Sysadmin или «OPS» использовались для развертывания виртуальных машин или серверов вручную для «разработчика», которые кодировали и разработали приложение.

Этот процесс занимал время, и это обычно было скучной и повторяющейся работой и дорогостоящей с точки зрения времени и оборудования для покупки и управления.

В настоящее время большинство компаний перемещают свою инфраструктуру в облако, используя AWS, Azure и Google Cloud Platform.

Облачные экосистемы обеспечивают аппаратное обеспечение, а «Ops» теперь могут сосредоточиться на работе и программном обеспечении.

«Dev» и «Ops» теперь работают вместе, чтобы стать DevOps, превращая сложности управления ИТ -инфраструктуры в код, который управляет всей ИТ -инфраструктурой с небольшим обслуживанием.

Идея инфраструктуры кода заключается в том, что вы пишете и выполняете код и магия.

Вы можете легко Предоставление виртуального оборудования и Настройка программного обеспечения Используя IAC.

С Terraform, примером, вы будете писать код к Определить, обновить, развернуть и уничтожить Ваша новая инфраструктура, она может быть в облаке или даже в вашей инфраструктуре виртуализации, такой как VMware.

Большое преимущество инфраструктуры как кода состоит в том, что она упростит вашу жизнь, вы сможете развернуться быстрее, очень быстро обновлять инфраструктуру и даже восстанавливаться после сбоя с небольшим количеством команд или автоматически.

Более того, IAC самостоятельно документирует, и вы можете легко понять, что делает код, и вы сможете хранить свой файл источника IAC в управлении версиями, как GIT, чтобы отслеживать вашу версию инфраструктуры, легко делиться и сотрудничать с вашей командой.

Наконец, вручную развертывать инфраструктуру — это скучные и повторяющиеся задачи и подвержены ручной ошибке, управление обеспечением вашей инфраструктуры с IAC сделает ваш рабочий процесс быстрее и устойчивым, и это принесет вам счастье и время. 😇

Потерянное время не вернешь.

Зачем использовать терраформ?

На мой взгляд, Terraform — это святой Грааль для IAC как Инструменты обеспечения И вот несколько причин:

  • Открытый источник.

  • Написано в ходе Так что это очень быстро и эффективно.

  • У него действительно большое сообщество, и он растет с каждым днем.

  • Он поддерживает нескольких поставщиков, облачных, но не только, вы можете предоставить виртуальную машину на VMware или ресурсы на Kubernetes, базе данных, GitHub … Это не агностик на платформе, как немногие из его параллельных, таких как AWS Cloudformation. Посмотрите на огромный список поставщиков, которые поддерживают Terraform: Реестр терраформ

  • Это декларативный язык: вы пишете код, который указывает желаемое конечное состояние И Terraform выяснит для вас, как его создать. Поскольку это декларативно, чтение вашего файла вы всегда можете знать текущую настройку и использовать GIT Power или Diff, чтобы увидеть предыдущее состояние/изменение.

  • Без агента или клиентская архитектура: вам не нужно устанавливать какой-либо дополнительный агент. Вы подключаетесь непосредственно в облаке, используя API облачного провайдера и свои учетные данные.

  • Иммутируемая инфраструктура: что означает, что при каждом изменении в инфраструктуру текущая конфигурация заменяется новой, которая учитывает изменение, и инфраструктура повторно представлена. Предыдущие конфигурации могут быть сохранены в виде версий, чтобы включить откаты, если это необходимо, или желательно. Недостатком является то, что вся инфраструктура, обеспечиваемая Terraform, должна поддерживаться и обновляться из Terraform, а ручные изменения больше не разрешаются.

  • Использование синтаксиса HCL (язык конфигурации Hashicorp), который близок к YAML и прост в использовании, и поддерживает синтаксис JSON.

Terraform — это Святой Грааль для инфраструктуры как кода

Короче говоря, Terraform с моей точки зрения лучших инструментов для обеспечения и управления вашей инфраструктурой. Это не самое лучшее в качестве управления конфигурацией, но вы можете легко соединить терраформ с такими инструментами управления конфигурацией, как Ansible, Puppet или Chef.

Как установить Terraform CLI?

В этой статье я сосредоточу только на Terraform CLI, которая является бесплатной версией Terraform и на установке на MacOS, но вы можете следить за этой документацией, следуя вашей ОС.

Установка терраформ

Для MacOS вы можете следовать процедуре, или вы можете использовать Brew Manager Package Manager для его установки.

 brew install terraform

Проверьте, правильно ли он установлен и Версия Terraform

> terraform -version
Terraform v0.14.6

Создать учетную запись веб -сервиса Amazon и нового пользователя IAM для использования TerraForm на AWS

В этом примере мы будем развернуть экземпляр на веб-службе Amazon, используя щедрый бесплатный уровень.

Если у вас еще нет учетной записи AWS, сейчас самое время сделать это! Создание аккаунта AWS

В первый раз, когда вы подключитесь к консоли, вы будете использовать пользователя «root», эта учетная запись имеет доступ, чтобы сделать что угодно, и не рекомендуется использовать его, кроме как для выставления счетов или управления пользователями, и я предложу активировать многофакторную аутентификацию (MFA) для этого пользователя.

Мы создадим новую более ограниченную учетную запись пользователя, используя управление идентификацией и доступом или службу AMI.

На консоли AWS перейдите в IAM, нажмите пользователей и создайте новых пользователей.

Как вы можете видеть, выберите только «Программный доступ», этот пользователь будет использоваться только из CLI или Terraform, и вы не сможете подключаться к веб -консоли.

Вы можете использовать корневую учетную запись для подключения к консоли или, что еще лучше, создать уже нового пользователя с «AVS Management Console Access», активируйте MFA и дайте ему «AdministratorAccess».

Далее вам нужно будет дать пользователю наименьшее правильное разрешение, поскольку по умолчанию пользователь создается без разрешения.

Лучше всего использовать группу для управления политикой, вы можете создать новую группу или вы можете прикрепить непосредственно политику к пользователю.

Мы прикрепим непосредственно политику «Amazonec2fullaccess», чтобы иметь возможность создавать/обновить/уничтожить экземпляры EC2 или только виртуальную машину AWS.

💡 Вы не сможете сделать что -то большее, чем управление экземпляром с этой политикой, но вы можете прикрепить политику позже на этой учетной записи.

Затем нажмите кнопку «Создать», AWS покажет вам учетные данные безопасности для этого нового пользователя, который состоит из идентификатора ключа доступа и идентификатора секретного ключа, сохранить это безопасно, и это учетные данные для программного подключения к AWS (CLI, SDK или Терраформ).

Хорошо, давайте подготовим наш компьютер к подключению к AWS от Terraform.

Если вы находитесь в Linux/Unix/MacOS, вы можете использовать переменную среды, как и ниже:

export AWS_ACCESS_KEY_ID=(your access key id of your programmatic user)
export AWS_SECRET_ACCESS_KEY=(your secret key id of your programmatic user)

Эта переменная среды будет применяться только к вашей текущей оболочке, и вы потеряете ее, если закроете свой терминал или перезагрузите компьютер.

Чтобы сделать его постоянным, вы можете установить AWS CLI Установка AWS CLI и настроить его, чтобы иметь возможность использовать вашего нового свежего пользователя, используя команду «AWS Configure» из вашего терминала AWS CLI Configure

aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: eu-west-1
Default output format [None]: json

💡 Для региона используйте регион, ближайший к вашей позиции. Вы можете увидеть различное именование региона в верхнем правом углу консоли.

Область AWS — это отдельная географическая область, и в каждом регионе есть несколько изолированных обработанных данных, известных как AZ или зона доступности.

Идеально, теперь, когда мы все настроили, давайте попробуем, что AWS CLI работает хорошо.

aws ec2 describe-instances
{
    "Reservations": []
}
(END)

Выглядит отлично! Мы готовы пойти и использовать Terraform сейчас.

Развернуть один сервер на AWS с Terraform

Во -первых, создайте новый каталог для вашего теста, как показано ниже:

mkdir -p terraform/test ; cd terraform/test

Затем вы создадите основной файл, который определит поставщика, которого вы будете использовать с помощью вашего любимого редактора. Я рекомендовал VIM или Visual Studio Code. Вы можете назвать его все, что захотите, но файл нуждается в расширении .tf. Общее название — назвать его «main.tf».

vim main.tf 
provider "aws" {
  region = "eu-west-2"
}

Этот файл сообщит Terraform, который Провайдер Вы хотите использовать, и Terraform загрузит и установит код для этого поставщика, когда вы будете использовать Terraform Init командование

> terraform init

Initializing the backend...

Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v3.27.0...

Код поставщика будет храниться в новом каталоге .terraform

> cd .terraform
> tree
 .
└──  providers
   └──  registry.terraform.io
      └──  hashicorp
         └──  aws
            └──  3.27.0
               └──  darwin_amd64
                  └──  terraform-provider-aws_v3.27.0_x5

С каждым провайдером вы можете создать много разных ресурс как экземпляр, балансировщик нагрузки, дБ, …

Синтаксис ниже:

resource "_" "Name" {
    [CONFIG/Parameter]
}

Тип будет тот тип ресурса, который вы хотите, как экземпляр, DB, …

Имя это идентификатор, которого вы можете назвать.

Конфигурация это список одного или нескольких аргументов, отличающийся от типа ресурса, который вы хотите. Вы можете получить обзор всего параметра конфигурации/ввода в этом URL:

AWS EC2 экземпляр Config Terraform документация

Отлично, теперь вы можете сделать новый файл в основном каталоге, который вы создаете ранее, или вы можете написать непосредственно на Main.tf.

💡 Существует много различных подходов, касающихся организации вашего файла для Terraform, но, на мой взгляд, написать все на Main.tf будет трудно поддерживать и управлять после роста вашей конфигурации.

После этого давайте создадим новый файл с именем 1_EC2.tf

resource "aws_instance" "webserver" {
   ami = "ami-098828924dc89ea4a"
   instance_type = "t2.micro" 
   tag = {
       Name = "amazingwebserver"
   }
}

⚠ ID AMI будет отличаться от выбранного вами региона в качестве AMI, специфичная для региона.

Этот идентификатор AMI предназначен для Amazon Linux 2 в регионе ЕС-Вест-2 И это бесплатный уровень, используя t2.micro тип.

Кстати, не изменяйте exance_type, если вы не хотите платить дополнительно $.

Круто, мы готовы к работе!

Вы можете использовать команду План терраформ Чтобы сделать проверку здравомыслия или сухой пробег для вашего кода, он покажет вам, что Terraform сделает, прежде чем внести какие-либо изменения.

> terraform plan

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # aws_instance.webserver will be created
  + resource "aws_instance" "webserver" {
      + arn                          = (known after apply)
      + associate_public_ip_address  = (known after apply)
      + availability_zone            = (known after apply)
      + cpu_core_count               = (known after apply)
      + cpu_threads_per_core         = (known after apply)
      + get_password_data            = false
      + host_id                      = (known after apply)
      + id                           = (known after apply)
      + instance_state               = (known after apply)
      + instance_type                = "t2.micro"
      .....

Plan: 1 to add, 0 to change, 0 to destroy.

Вывод команды похож на вывод команды DIFF на Linux или GIT:

+ Плюс будет что -нибудь созданное
Минус будет что -нибудь удалено
~ Тилде будет что -то модифицированное

После того, как сухой пробег и действителен, вы можете использовать терраформ применить Команда развернуть ваш первый экземпляр EC2. Вывод будет похож на предыдущую команду, и вам нужно будет подтвердить.

terraform apply
...
Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

aws_instance.webserver: Creating...
aws_instance.webserver: Still creating... [10s elapsed]
aws_instance.webserver: Still creating... [20s elapsed]
aws_instance.webserver: Creation complete after 24s [id=i-047b9be990dcc3028]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Ницца ! Ваш сервер был развернут в 24S и одной команде.

Может быть, вы спрашиваете себя, что произойдет, если я снова сделаю команду?

> terraform apply
aws_instance.webserver: Refreshing state... [id=i-047b9be990dcc3028]

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Terraform ничего не сделает, так как это декларативный язык, а затем Terraform знает, что экземпляр EC2 уже существует. Хороший мальчик ! 😇

Вы можете подключиться сейчас к консоли AWS в разделе EC2 -> экземпляры, чтобы убедиться, что ваш сервер работает. (Не забудьте выбрать правильную область в правом верхнем углу).

Идеально, но у нас нет веб -сервера, теперь это просто свежая машина Linux, и мы не можем подключиться. Давай продолжим.

Создайте веб -сервер в нашем экземпляре EC2

С помощью AWS EC2 вы можете определить пользовательские Data для запуска сценария в первый раз, когда экземпляр будет запущен, во время создания экземпляра.

Мы изменим наш файл 1_EC2.TF, как ниже:

resource "aws_instance" "webserver" {
   ami = "ami-098828924dc89ea4a"
   instance_type = "t2.micro"
   tags = {
       Name = "amazingwebserver"
       Env = "test"
   }
   user_data = <My amazing web server" | sudo tee /var/www/html/index.html
EOF

}

output "instance_ips" {
  value = aws_instance.webserver.*.public_ip
}
output "instance_dns" {
  value = aws_instance.webserver.*.public_dns
}

Terraform использует EOF Для многострочного параметра строк.

По сути, код устанавливает Apache HTTPD в качестве веб -сервера и запускает службу.

Вы можете видеть, что я добавляю вывод Раздел, чтобы получить публичный IP и публичные DNS нового экземпляра.

🤔 В производственной среде будет рекомендовано и чище использовать переменную для имени сервера и иметь все выходы в другом файле, чтобы иметь возможность повторно использовать код позже для другой среды.

Когда вы запустите План терраформ , он скажет вам, что он разрушит экземпляр EC2 и создаст новый, но почему!

Это будет делать, поскольку пользовательские данные представляют собой запуск скрипта во время создания EC2.

Это что -то действительно важно понять, несколько параметров разрушат ресурс и сделают новый, например, Изменение exance_type.

terraform plan
...
Plan: 1 to add, 0 to change, 1 to destroy.

Внесение изменения:

terraform apply
aws_instance.webserver: Destroying... [id=i-047b9be990dcc3028]
aws_instance.webserver: Still destroying... [id=i-047b9be990dcc3028, 10s elapsed]
aws_instance.webserver: Still destroying... [id=i-047b9be990dcc3028, 20s elapsed]
aws_instance.webserver: Still destroying... [id=i-047b9be990dcc3028, 30s elapsed]
aws_instance.webserver: Still destroying... [id=i-047b9be990dcc3028, 40s elapsed]
aws_instance.webserver: Still destroying... [id=i-047b9be990dcc3028, 50s elapsed]
aws_instance.webserver: Destruction complete after 52s
aws_instance.webserver: Creating...
aws_instance.webserver: Still creating... [10s elapsed]
aws_instance.webserver: Still creating... [20s elapsed]
aws_instance.webserver: Still creating... [30s elapsed]
aws_instance.webserver: Creation complete after 34s [id=i-048ba63c657c2ba3e]

Apply complete! Resources: 1 added, 0 changed, 1 destroyed.

Когда вы создали экземпляр EC2, Terraform использовал группу безопасности по умолчанию, которая блокирует все входящее соединение с вашим экземпляром.

Весь входящий и исходящий доступ для экземпляров EC2 определяются на Группы безопасности Анкет

Теперь нам нужно будет создать новую группу безопасности, позволяющая входящему доступ к порту 80 (http) и исходящим по всему порту на наш сервер и прикрепить к нашему серверу.

Для этого давайте создадим новый файл 0_SecurityGroup.tf, как ниже:

vim securitygroup.tf

resource "aws_security_group" "securitygroupweb" {
    name = "Security-group-http-only"
    description = "Allow only http access"
    ingress {
        from_port = 80
        to_port = 80
        protocol = "tcp"
        cidr_blocks = ["0.0.0.0/0"]
    }
    egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

Эта группа безопасности позволит входящий доступ на порту 80 с любого IP -адреса. Если вы хотите разрешить только свой публичный адрес IPv4, вы можете измениться, как ниже:

vim 0_securitygroup.tf

resource "aws_security_group" "securitygroupweb" {
    name = "Security-group-http-only"
    description = "Allow only http access"
    ingress {
        from_port = 80
        to_port = 80
        protocol = "tcp"
        cidr_blocks = ["5.170.224.100/32"]
    }
    egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

Чтобы прикрепить эту группу безопасности к экземпляру EC2, нам необходимо изменить наш файл 1_EC2.tf и использовать эталонное выражение, чтобы получить доступ к значению из другой части нашего кода.

Синтаксис ниже:

_. 

В нашем случае вы можете добавить эту строку в раздел ресурса экземпляра

vpc_security_groups_ids=[aws_security_group.securitygroupweb.id]

💡 Вам нужно изменить слово SecurityGroupWeb с именем вашей группы безопасности.

Вот код для EC2:

resource "aws_instance" "webserver" {
   ami = "ami-098828924dc89ea4a"
   vpc_security_groups_ids=[aws_security_group.securitygroupweb.id]
   instance_type = "t2.micro"
   tags = {
       Name = "amazingwebserver"
       Env = "test"
   }
   user_data = <My amazing web server" | sudo tee /var/www/html/index.html
EOF
}

и Код для групп безопасности:

resource "aws_security_group" "securitygroupweb" {
    name = "Security-group-http-only"
    description = "Allow only http access"
    ingress {
        from_port = 80
        to_port = 80
        protocol = "tcp"
        cidr_blocks = ["5.170.224.100/32"]
    }
    egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

Это здорово Но это на самом деле не организовано, верно? Что вы думаете ?

Давайте сделаем структуру файла лучше.

Мы создадим переменную файл, чтобы сделать наш код более настраиваемым и чистым и использовать переменную в нашем коде.

Вы можете определить входные переменные с помощью этого синтаксиса:

variable "Name" {
description = ""
type = ""
default = ""
}

💡 Если переменная не имеет по умолчанию, Terraform интерактивно предложит вам ввести значение и показать вам описание переменной.

В нашем случае мы сделаем мало переменных в новом файле «variable.tf»

vim variable.tf

# Variable for EC2 instance
##########################

variable "ami_id" {
description = "id for AMI"
type = string
default = "ami-098828924dc89ea4a"
}

variable "instance_type" {
description = "type of instance"
type = string
default = "t2.micro"
}

variable "tagenv" {
description = "tag env"
type = string
default = "test"
}

variable "tagname" {
description = "name for the instance"
type = string
default = "webserver"
}

# Variable for security groups
#############################

variable "portopen" {
description = "port to open"
type = number
default = 80
}

variable "allportopen" {
description = "port to open"
type = number
default = 0
}

variable "in_cidr_block" {
  description = "CIDR block the inbound ACL"
  type        = list
  default     = ["0.0.0.0/0"]
}

variable "out_cidr_block" {
  description = "CIDR block the outbound ACL"
  type        = list
  default     = ["0.0.0.0/0"]
}

Создайте новый файл для нашего сценария пользовательских данных

vim deploywebserver.sh

#!/bin/bash
 sudo yum update -y
 sudo yum install -y httpd.x86_64
 sudo systemctl enable --now httpd
 echo "

My amazing web server

" | sudo tee /var/www/html/index.html

Создайте выходной файл output.tf

vim output.tf

output "instance_ips" {
  value = aws_instance.webserver.*.public_ip
}

Соответственно, мы изменим наш файл 1_EC2.tf и 0_SecurityGroup.tf, чтобы использовать переменную

vim 1_ec2.tf
resource "aws_instance" "webserver" {
  ami                    = var.ami_id
  instance_type          = var.instance_type
  vpc_security_group_ids = [aws_security_group.securitygroupweb.id]
  tags = {
    Name = var.tagname
    env = var.tagenv
  }
  user_data = file("deploywebserver.sh")
}

И, наконец, 0_SecurityGroup.tf

vim 0_securitygroup.tf
resource "aws_security_group" "securitygroupweb" {
    name = "Security-group-http-only"
    description = "Allow only http access"
    ingress {
      from_port = var.portopen
      to_port = var.portopen
      protocol = "tcp"
      cidr_blocks = var.in_cidr_block
    }
    egress {
    from_port   = var.allportopen
    to_port     = var.allportopen
    protocol    = "-1"
    cidr_blocks = var.out_cidr_block
  }
}

Вот наш новый Структура файла :

  • main.tf — Содержит информацию по провайдеру
  • переменные.tf — Содержит объявления переменных
  • 1_ec2.tf Для развертывания ресурсов EC2
  • 0_SecurityGroup.tf Для развертывания ресурсов группы безопасности
  • outputs.tf — Содержит выходы из ресурсов
  • DeployWebserver.sh — Содержит скрипт данных пользователей Bash для создания и запуска веб -сервера ***

И вуаля, готов к работе! Давайте спланируем и подадим заявку, чтобы проверить наш код.

> terraform plan
aws_instance.webserver: Refreshing state... [id=i-048ba63c657c2ba3e]

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create
  ~ update in-place
Terraform will perform the following actions:

  # aws_instance.webserver will be updated in-place
  ~ resource "aws_instance" "webserver" {
        id                           = "i-048ba63c657c2ba3e"
        tags                         = {
            "Name" = "amazingwebserver"
        }
      ~ vpc_security_group_ids       = [
          - "sg-48e02a30",
        ] -> (known after apply)
        # (26 unchanged attributes hidden)
        # (4 unchanged blocks hidden)
    }
Plan: 1 to add, 1 to change, 0 to destroy.

Как вы можете видеть, Terraform создаст новую ресурсную «группу безопасности» и изменит наш экземпляр EC2, но не разрушит его на этот раз.

Когда мы подадим заявку, он вернет публичный IP нашего экземпляра, чтобы иметь возможность подключаться из нашего браузера для тестирования нашего веб -сервера.

terraform apply

aws_security_group.securitygroupweb: Creating...
aws_security_group.securitygroupweb: Creation complete after 4s [id=sg-0746c1244bae9b412]
aws_instance.webserver: Modifying... [id=i-048ba63c657c2ba3e]
aws_instance.webserver: Modifications complete after 6s [id=i-048ba63c657c2ba3e]

Apply complete! Resources: 1 added, 1 changed, 0 destroyed.

Outputs:

instance_ips = [
  "52.56.56.165",
]

Как вы можете видеть, Terraform дает в качестве вывода публичного IP -адреса экземпляра.

Если вы хотите получить вывод позже, вы можете использовать эту команду Terraform:

terraform output

Вы можете проверить, что ваш HTTP -сервер работает, используя общедоступный IP -адрес из CLI или из вашего браузера.

> curl http://52.56.56.165

My amazing web server

>

Или через ваш браузер:

Потрясающе, мы создали наш первый веб -сервер от Terraform.

Теперь мы можем легко уничтожить/удалить все только одной командой:

terraform destroy

Это красота инфраструктуры как кода и особенно терраформ, как только все будет урегулировано и организовано, она очень быстро, и вы можете использовать свой код для нескольких средств и автоматизировать развертывание с помощью вашего CD -конвейера, например Gitlab.

Вывод этой команды покажут вам все ресурсы, которые Terraform удалит, прежде чем побудить подтвердить.

terraform destroy
... 
Plan: 0 to add, 0 to change, 2 to destroy.

Я надеюсь, что эта статья дала вам хороший обзор силы Terraform и даст вам желание начать и управлять вашей инфраструктурой в облаке. Не забудьте использовать управление версиями, например, GIT с вашим кодом 😆.

И помните с этого момента эти основные команды:

Оставайтесь с нами для предстоящих блогов в моем блоге Devopshandsonlab

Оригинал: «https://dev.to/archijusi/code-init-plan-apply-with-terraform-42p9»