Урок 3-4: Редактор Atom и первые ресурсы в AWS

Pavel 08.12.2025 18:56 5 просмотров

Часть 1: Atom - Текстовый редактор для Terraform

Установка Atom

URL: https://atom.io

Windows & Mac & Linux

  1. Перейти на atom.io
  2. Нажать "Download"
  3. Выбрать вашу ОС
  4. Установить как обычное приложение

Плагины для Terraform

1. language-terraform

# Или через интерфейс Atom:
# Atom → Preferences → Install → Поиск "language-terraform"

Что дает: - ✅ Подсветка синтаксиса .tf файлов - ✅ Автодополнение - ✅ Проверка синтаксиса

2. terraform-fmt

# Автоматическое форматирование кода

Полезные комбинации клавиш

Комбинация Действие
Ctrl+Shift+P (или Cmd+Shift+P) Палитра команд
Ctrl+, (или Cmd+,) Параметры
Ctrl+\ Переключить sidebar
Ctrl+B Быстрый поиск

Часть 2: Создание ресурсов в AWS

Предварительные требования

  1. Аккаунт AWS
  2. AWS Access Key ID и Secret Access Key
  3. Установленный Terraform
  4. Текстовый редактор (Atom, VS Code, sublime)

Получение AWS ключей

# 1. Войти в AWS Management Console
# 2. Перейти в IAM → Users → [ваше имя пользователя]
# 3. Security Credentials → Access Keys
# 4. Create Access Key
# 5. Скачать CSV файл (НЕ ПОТЕРЯЙТЕ!)

Первый проект: Статический IP адрес

Структура проекта

terraform-aws-eip/
├── main.tf
├── provider.tf
└── terraform.tfvars

Файл: provider.tf

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = var.aws_region

  # Альтернативно, используйте переменные окружения:
  # export AWS_ACCESS_KEY_ID="..."
  # export AWS_SECRET_ACCESS_KEY="..."
}

Файл: variables.tf

variable "aws_region" {
  description = "AWS region"
  type        = string
  default     = "us-west-2"
}

variable "environment" {
  description = "Environment name"
  type        = string
  default     = "production"
}

Файл: main.tf

# Создание Elastic IP адреса
resource "aws_eip" "web" {
  domain = "vpc"

  tags = {
    Name        = "web-eip"
    Environment = var.environment
  }

  depends_on = [aws_internet_gateway.main]
}

# Internet Gateway
resource "aws_internet_gateway" "main" {
  vpc_id = aws_vpc.main.id

  tags = {
    Name = "main-igw"
  }
}

# VPC
resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_hostnames = true
  enable_dns_support   = true

  tags = {
    Name = "main-vpc"
  }
}

Файл: terraform.tfvars

aws_region = "us-west-2"
environment = "production"

Использование

# Инициализация
terraform init

# Просмотр плана
terraform plan

# Применение
terraform apply

# Просмотр состояния
terraform show

# Удаление
terraform destroy

Команды для работы с ресурсами

Просмотр состояния

# Полное состояние
terraform show

# Список ресурсов
terraform state list

# Детали ресурса
terraform state show aws_eip.web

Мониторинг

# Просмотр плана с детализацией
terraform plan -var-file="terraform.tfvars"

# Применение с автоутверждением
terraform apply -auto-approve

# Применение с параметром
terraform apply -var="environment=staging"

Лучшие практики

.gitignore

# Local .terraform directories
**/.terraform/*

# .tfstate files
*.tfstate
*.tfstate.*

# Crash log files
crash.log
crash.*.log

# Exclude all .tfvars files, which might contain sensitive data
*.tfvars
*.tfvars.json

# Ignore override files
override.tf
override.tf.json
*_override.tf
*_override.tf.json

# Ignore CLI configuration files
.terraformrc
terraform.rc

# Ignore plan files
*.tfplan

# Ignore Atom project file
.atom-build.json

Структурирование кода

project/
├── environments/
   ├── dev/
      ├── terraform.tfvars
      └── main.tf
   ├── staging/
      ├── terraform.tfvars
      └── main.tf
   └── prod/
       ├── terraform.tfvars
       └── main.tf
├── modules/
   ├── vpc/
   ├── security/
   └── compute/
├── provider.tf
├── variables.tf
└── outputs.tf

Полезные команды AWS CLI

# Установка AWS CLI
# Windows: https://awscli.amazonaws.com/AWSCLIV2.msi
# Mac: brew install awscliv2
# Linux: curl "https://awscli.amazonaws.com/awscliv2.zip" -o "awscliv2.zip"

# Конфигурация
aws configure

# Просмотр ключей
aws iam list-access-keys

# Просмотр EC2 инстансов
aws ec2 describe-instances --region us-west-2

# Просмотр Elastic IPs
aws ec2 describe-addresses --region us-west-2

Типичные ошибки

Ошибка: "InvalidUserID.Malformed"

Причина: Неверный AWS Access Key ID или Secret Access Key

Решение:

# Проверить переменные окружения
echo $AWS_ACCESS_KEY_ID
echo $AWS_SECRET_ACCESS_KEY

# Или переинициализировать
terraform init -reconfigure

Ошибка: "Error: error configuring Terraform AWS Provider"

Причина: Неверная конфигурация провайдера

Решение:

# Убедитесь, что region указана правильно
provider "aws" {
  region = "us-west-2"  # Проверьте опечатки
}

Ошибка: "Resource already exists"

Причина: Ресурс уже был создан вручную в AWS

Решение:

# Импортировать существующий ресурс
terraform import aws_eip.web <allocation-id>

# Или удалить ресурс из AWS вручную

Комментарии (0)

Для добавления комментария необходимо войти в аккаунт

Войти / Зарегистрироваться