Команды Terraform
Самые нужные команды для самого популярного Infrastructure as a Code инструмента - Terraform
terraform init - инициализировать папку для начала работы (скачает в скрытую папку провайдеры и создаст файлы)
terraform fmt - отформатирует файлы в текущей директории в удобочитаемый и корректный вид
terraform validate - проверка синтаксиса конфигурации
terraform plan - покажет, что будет внедрено
terraform apply - внедрит инфраструктуру или обновит её
terraform show - посмотреть текущий state, в котором описана вся инфраструктура
terraform state list - перечислит все ресурсы (блоки resource)
terraform destroy - удалит инфраструктуру, созданную терраформом
Пример main.tf Terraform
Пример простого main.tf для развертывания free-tier Web сервера в AWS:
(измените переменные под себя)
aws_access_key и aws_secret_key берутся из IAM > Users > Ваш юзер > Security Credentials > Create Access Key
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.16"
}
}
required_version = ">= 1.2.0"
}
variable "aws_access_key" {
default = "XXXXXXXXXXXXXXXXXXXXXXX"
}
variable "aws_secret_key" {
default = "XXXXXXXXXXXXXXXXXXXXXXX"
}
variable "region" {
default = "eu-west-2"
}
variable "vpc" {
default = "vpc-XXXXXXXXXXXXXXXXXXXXXXX"
}
variable "subnet" {
default = "subnet-XXXXXXXXXXXXXXXXXXXXXXX"
}
variable "ec2_instance_type" {
default = "t2.micro"
}
variable "ec2_ami" {
default = "ami-0f540e9f488cfa27d"
}
provider "aws" {
access_key = var.aws_access_key
secret_key = var.aws_secret_key
region = var.region
}
resource "aws_security_group" "allow_http" {
name = "allow_http_sg"
description = "Allow HTTP inbound traffic"
vpc_id = var.vpc
ingress {
description = "Allow acccess to http from the Internet"
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
}
resource "aws_instance" "web_server" {
ami = var.ec2_ami
instance_type = var.ec2_instance_type
subnet_id = var.subnet
security_groups = [aws_security_group.allow_http.id]
user_data = <<-EOF
#!/bin/bash
echo "*** Installing apache2"
sudo apt update -y
sudo apt install apache2 -y
echo "*** Completed Installing apache2"
EOF
tags = {
Name = "WebServerInstance"
}
}
output "web_instance_ip" {
value = aws_instance.web_server.public_ip
}
Свежие комментарии