Поиск по сайту:

Что такое Terraform и как его установить и использовать на AWS EC2


Terraform — это инструмент «Инфраструктура как код (IaC)». Он используется для построения, управления и изменения инфраструктуры безопасным и воспроизводимым способом.

Он используется для управления средами с помощью языка конфигурации, называемого языком конфигурации HashiCorp (HCL), для удобочитаемого автоматизированного развертывания.

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

В этой статье мы увидим, как установить Terraform на Ubuntu и использовать его для создания VPC в облаке AWS.

Чтобы узнать больше о Terraform, нажмите здесь.

Предпосылки

  1. Аккаунт AWS (создайте, если у вас его нет).
  2. Инстансы EC2 (Нажмите здесь, чтобы узнать, как создать инстанс EC2)
  3. Корневой доступ к серверам.
  4. access_key и secret_key пользователя AWS IAM. (Нажмите здесь, чтобы узнать, как создать пользователя IAM с ключом доступа и секретным ключом в AWS, )

Что мы будем делать

  1. Установить Terraform
  2. Запись файлов конфигурации Terraform.
  3. Создайте VPC, используя файлы конфигурации Terraform.
  4. Удалите созданный VPC с помощью Terraform

Установить Терраформ

Установка Terraform довольно проста и понятна. Здесь вы можете найти подходящий пакет для вашей системы.

Перед загрузкой файла давайте установим wget и разархивируем пакет, если он недоступен в системе, с помощью следующих команд.

apt-get update -y
apt-get install wget unzip -y

Давайте создадим специальный каталог terraform в /opt/, где мы сможем загрузить пакет.

cd /opt/
mkdir terraform
cd terraform/

Загрузите пакет terraform с помощью команды wget и разархивируйте его.

wget https://releases.hashicorp.com/terraform/0.12.18/terraform_0.12.18_linux_amd64.zip
unzip terraform_0.12.18_linux_amd64.zip
ls -lt

После того, как вы разархивируете загруженный пакет, вы увидите двоичный файл terraform. Переместите этот двоичный файл в /usr/local/bin/.

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

mv terraform /usr/local/bin/
terraform -v

Запись конфигурационных файлов Terraform

Создайте специальный каталог, в котором вы можете создавать файлы конфигурации terraform.

mkdir terraform
cd terraform/

Воспользуйтесь редактором по вашему выбору и скопируйте и вставьте следующие конфигурации для создания переменных.tf, terraform.tfvars и main.tf.

Создайте main.tf, который отвечает за создание VPC на AWS. Следующая конфигурация создаст VPC, интернет-шлюз, таблицу маршрутов, зону доступности и группу безопасности. Этот main.tf будет считывать значения переменных из Variables.tf и Terraform.tfvars.

vim main.tf

provider "aws" {
      region     = "${var.region}"
      access_key = "${var.access_key}"
      secret_key = "${var.secret_key}"
}
resource "aws_vpc" "vpc" {
     cidr_block = "10.0.0.0/16"
}
resource "aws_internet_gateway" "gateway" {
     vpc_id = "${aws_vpc.vpc.id}"
}
resource "aws_route" "route" {
     route_table_id         = "${aws_vpc.vpc.main_route_table_id}"
     destination_cidr_block = "0.0.0.0/0"
     gateway_id             = "${aws_internet_gateway.gateway.id}"
}
data "aws_availability_zones" "available" {}
resource "aws_subnet" "main" {
    count                   = "${length(data.aws_availability_zones.available.names)}"
    vpc_id                  = "${aws_vpc.vpc.id}"
    cidr_block              = "10.0.${count.index}.0/24"
    map_public_ip_on_launch = true
    availability_zone       = "${element(data.aws_availability_zones.available.names, count.index)}"
}
resource "aws_security_group" "default" {
     name        = "http-https-allow"
     description = "Allow incoming HTTP and HTTPS and Connections"
     vpc_id      = "${aws_vpc.vpc.id}"
     ingress {
         from_port = 80
         to_port = 80
         protocol = "tcp"
         cidr_blocks = ["0.0.0.0/0"]
    }
     ingress {
         from_port = 443
         to_port = 443
         protocol = "tcp"
         cidr_blocks = ["0.0.0.0/0"]
    }
}

Создайте файл variable.tf, содержащий объявление переменных.

vim переменные.tf

variable "access_key" {
     description = "Access key to AWS console"
}
variable "secret_key" {
     description = "Secret key to AWS console"
}
variable "region" {
     description = "Region of AWS VPC"
}

Создайте terraform.tfvars, который содержит определение переменной, указанной в файле выше.

vim terraform.tfvars

region = "eu-west-3"
access_key = "AKIAQ6GAIA5XDX32PVJ6"
secret_key = "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"

Теперь у вас должно быть 3 файла, а именно: variables.tf, terraform.tfvars и main.tf.

Создайте VPC, используя файлы конфигурации Terraform.

Первая используемая команда — terraform init. Эта команда загружает и устанавливает плагины для поставщиков, используемых в конфигурации. В нашем случае это aws.

 terraform init

Вторая используемая команда — terraform plan. Эта команда используется для просмотра изменений, которые произойдут в инфраструктуре.

 terraform plan

Команда terraform apply создаст ресурсы на aws, указанные в файле main.tf. Вам будет предложено ввести данные для создания ресурсов.

применить терраформ

Вы можете перейти в консоль AWS VPC, чтобы проверить, создано ли VPC.

Удалить созданный VPC с помощью Terraform

Если вы знаете больше необходимых ресурсов, которые вы создали с помощью конфигурации, указанной в файле main.tf, вы можете использовать команду \terraform destroy\, чтобы удалить все эти ресурсы.

terraform destroy

Заключение

В этой статье мы увидели шаги по установке Terraform. Мы также увидели необходимую конфигурацию для создания VPC вместе с несколькими другими связанными с ним ресурсами. Теперь мы также знакомы с объявлением и определением переменных.