Generator Terraform AWS EC2 — gotowa konfiguracja IaC
Generuj konfigurację Terraform dla instancji AWS EC2: typ, AMI, security groups, key pair, user_data. Pobierz gotowy main.tf.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Typ instancji
wpisany w formularzu, trafia do zmiennej instance_type
Region AWS
default zmiennej region w providerze
Rozmiar HCL
waga pliku main.tf do zapisania
terraform {
required_version = ">= 1.3.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 5.0"
}
}
}
provider "aws" {
region = var.region
}
variable "region" {
type = string
default = "us-east-1"
}
variable "ami" {
type = string
default = "ami-0c02fb55956c7d316"
}
variable "instance_type" {
type = string
default = "t3.micro"
}
variable "key_name" {
type = string
default = ""
}
variable "subnet_id" {
type = string
default = ""
}
variable "security_group_ids" {
type = list(string)
default = []
}
resource "aws_instance" "this" {
ami = var.ami
instance_type = var.instance_type
user_data = <<-EOT
#!/bin/bash
set -e
# Example user data
echo "Hello from Terraform" > /tmp/hello.txt
EOT
tags = {
"Environment" = "dev"
"Owner" = "platform"
"Service" = "web"
"Name" = "web-app-prod-01"
}
}
output "public_ip" {
value = aws_instance.this.public_ip
}
output "instance_id" {
value = aws_instance.this.id
}
output "private_ip" {
value = aws_instance.this.private_ip
}
Opis bloków odpowiada 1:1 kodowi silnika. Zaznaczone opcje (EIP, EBS) dopisują kolejne bloki resource i output do tego samego pliku.
| Blok | Kiedy | Zawartość |
|---|---|---|
| terraform + provider | zawsze | required_providers: hashicorp/aws >= 5.0, required_version >= 1.3.0; provider "aws" z region = var.region |
| variable (6 szt.) | zawsze | region, ami, instance_type, key_name, subnet_id jako string oraz security_group_ids jako list(string); wartości z formularza jako default |
| resource aws_instance | zawsze | ami i instance_type z zmiennych; opcjonalnie key_name, subnet_id, vpc_security_group_ids, user_data (heredoc <<-EOT) oraz blok tags (klucz=wartość po znaku „=”, zawsze dodawany tag Name) |
| resource aws_eip | gdy „Dołącz adres EIP” | elastyczny IP przypięty do instancji (domain = "vpc", tag Name = nazwa + "-eip") + output public_ip z EIP |
| resource aws_ebs_volume + aws_volume_attachment | gdy „Dołącz wolumin EBS” | wolumin w tej samej strefie dostępności, rozmiar z formularza (GB), typ z selekty (gp3, gp2, io1, io2, st1, sc1, standard), encrypted = true, montowanie na /dev/sdf |
| output | zawsze | public_ip (z EIP lub instancji), instance_id, private_ip — do użycia w terraform output |
| Komenda | Co robi |
|---|---|
| terraform init | pobiera providera AWS zadeklarowanego w required_providers |
| terraform plan | pokazuje, co zostanie utworzone/zmienione — bez aplikowania zmian |
| terraform apply | TWORZY PRAWDZIWE ZASOBY W AWS — instancja EC2, EIP i EBS są rozliczane (nawet t3.micro kosztuje, a EIP bez działającej instancji też jest płatny) |
| terraform destroy | usuwa zasoby z pliku stanu — uruchamiaj, gdy środowisko testowe jest już niepotrzebne |
Uwaga na koszty: terraform apply tworzy płatne zasoby AWS. Instancja EC2 jest rozliczana za czas pracy, adres EIP — gdy nie jest podpięty do działającej instancji, a wolumen EBS — za każdy GB i miesiąc przechowywania. Do testów używaj typów objętych Free Tier i usuwaj zasoby przez terraform destroy.
Warto wiedzieć — Terraform i EC2 w praktyce
Dlaczego zmienne zamiast wartości
Wygenerowany kod przekazuje region, AMI i typ instancji przez variable, a zasób czyta je jako var.ami i var.instance_type. Dzięki temu ten sam plik obsłuży środowiska dev i prod przez -var albo plik terraform.tfvars — bez edycji samego zasobu.
Typ instancji a rachunek
Rodziny t3/t4g (burstable, w t4g procesor ARM) są najtańsze do testów; m i c to maszyny ogólne i obliczeniowe z ceną wyższą o rząd wielkości. Cena zależy też od regionu — ta sama instancja w us-east-1 bywa wyraźnie tańsza niż w Europie czy Azji.
Tagi to nie ozdoba
Silnik zawsze dopisuje tag Name, a wpisy Klucz=Wartość z formularza trafiają do bloku tags. Spójne tagi (Environment, Owner, Service) to podstawa raportów kosztów w Cost Explorer, polityk IAM i automatycznego sprzątania zasobów.
Stan i bezpieczeństwo
Plik stanu (terraform.tfstate) zawiera identyfikatory zasobów — trzymaj go zdalnie (S3 z blokadą lock), nigdy w repozytorium. Bez podanych grup bezpieczeństw instancja trafia do domyślnej VPC, więc dostęp SSH i reguły ruchu musisz skonfigurować osobno.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator Terraform AWS EC2 – stwórz gotowy kod infrastruktury IaC
Zarządzanie infrastrukturą IT ewoluowało od ręcznej konfiguracji serwerów w panelach dostawców chmurowych do metodologii Infrastructure as Code (IaC). Liderem w tej dziedzinie jest narzędzie Terraform firmy HashiCorp. Umożliwia ono definiowanie zasobów sieciowych i serwerowych za pomocą deklaratywnego języka HCL (HashiCorp Configuration Language). Tworzenie konfiguracji od zera bywa jednak trudne dla początkujących i nużące dla doświadczonych administratorów ze względu na konieczność pamiętania licznych argumentów i zależności. Nasz generator Terraform AWS EC2 online to darmowe narzędzie, które pozwala wygenerować gotowy plik konfiguracyjny (.tf) dla instancji EC2, grupy bezpieczeństwa (Security Group) oraz powiązanych zasobów sieciowych na AWS.
Uzupełniając parametry takie jak region AWS, typ instancji (np. t3.micro), system operacyjny (AMI) czy dozwolone porty wejściowe, otrzymasz czysty, zoptymalizowany i w pełni poprawny składniowo kod Terraform gotowy do wdrożenia.
Najważniejsze zasoby Terraform przy wdrażaniu EC2
Prawidłowe wdrożenie serwera w chmurze AWS wymaga zdefiniowania kilku powiązanych ze sobą zasobów w plikach konfiguracyjnych. Poniższa tabela opisuje kluczowe elementy:
| Nazwa zasobu (Terraform type) | Rola w infrastrukturze AWS | Przykładowy atrybut konfiguracji | Opis atrybutu |
|---|---|---|---|
| aws_instance | Definiuje fizyczne parametry wirtualnego serwera (instancji EC2). | instance_type = "t3.micro" | Określa zasoby sprzętowe (1 vCPU, 1 GB RAM). |
| aws_security_group | Wirtualna zapora sieciowa kontrolująca ruch przychodzący i wychodzący. | ingress.from_port = 22 | Otwiera port 22 dla połączeń konsoli SSH. |
| aws_key_pair | Umożliwia autoryzację połączeń SSH za pomocą kluczy publicznych. | public_key = file("~/.ssh/id_rsa.pub") | Wskazuje ścieżkę do lokalnego klucza publicznego. |
| provider "aws" | Konfiguruje wtyczkę AWS, region oraz klucze dostępowe (credentials). | region = "eu-central-1" | Wskazuje region AWS (Frankfurt). |
Dobre praktyki przy tworzeniu kodu Terraform dla AWS
Podczas pisania kodu Terraform warto stosować sprawdzone praktyki branżowe, które ułatwiają późniejsze zarządzanie infrastrukturą:
- Nie hardkoduj wartości (używaj zmiennych): Wszystkie wartości podatne na zmiany (np. typ instancji, nazwy projektów) umieszczaj w pliku
variables.tf. - Zarządzaj plikiem stanu (State File): Plik
terraform.tfstateprzechowuje informacje o rzeczywistej infrastrukturze. Przechowuj go w bezpiecznym, współdzielonym miejscu (np. w koszyku AWS S3 z włączonym blokowaniem za pomocą DynamoDB). - Stosuj zasadę najmniejszych uprawnień: W grupach bezpieczeństwa (Security Groups) otwieraj tylko te porty, które są niezbędne. Na przykład port SSH (22) powinien być dostępny tylko z Twojego adresu IP, a nie dla całego internetu (0.0.0.0/0).
- Deklaruj wersje providerów: Zawsze blokuj wersję dostawcy AWS w bloku
required_providers, aby uniknąć problemów z niekompatybilnością przy przyszłych aktualizacjach.
Jak uruchomić wygenerowany kod Terraform krok po kroku?
Aby wdrożyć serwer na AWS za pomocą wygenerowanego kodu, wykonaj następujące kroki w swoim terminalu:
- Zainstaluj Terraform: Upewnij się, że masz zainstalowane narzędzie CLI Terraform oraz skonfigurowane klucze dostępowe AWS (za pomocą
aws configure). - Zapisz kod: Skopiuj wygenerowany kod z naszego generatora i zapisz go w pliku o nazwie
main.tfw pustym katalogu. - Zainicjalizuj katalog: Uruchom komendę
terraform init, aby pobrać niezbędne wtyczki AWS. - Sprawdź plan wdrożenia: Wykonaj
terraform plan, aby zobaczyć, jakie zasoby zostaną utworzone na AWS. - Zastosuj zmiany: Uruchom
terraform applyi zatwierdź wpisującyes, aby utworzyć serwer.
Często zadawane pytania (FAQ)
Co to jest "Infrastructure as Code" (IaC) i jakie są jego zalety?
Infrastructure as Code to podejście polegające na zarządzaniu i aprowizacji infrastruktury IT za pomocą kodu i automatyzacji, zamiast ręcznej konfiguracji. Główne zalety to eliminacja błędów ludzkich, powtarzalność środowisk, wersjonowanie konfiguracji w systemach Git oraz szybkość wdrażania zmian.
Skąd wziąć odpowiedni identyfikator AMI (Amazon Machine Image)?
Identyfikator AMI (np. ami-0c55b159cbfafe1f0) zależy od wybranego systemu operacyjnego oraz regionu AWS. Nasz generator automatycznie dobiera aktualne, domyślne identyfikatory AMI dla popularnych systemów (np. Ubuntu, Amazon Linux 2) w wybranym regionie, ale możesz też podać własne AMI.
Co to jest plik stanu (terraform.tfstate) i dlaczego jest tak ważny?
Plik stanu to lokalna lub zdalna baza danych w formacie JSON, w której Terraform przechowuje odwzorowanie zadeklarowanego kodu na rzeczywiste zasoby w chmurze AWS. Bez tego pliku Terraform nie wie, jakie zasoby zostały już utworzone i przy kolejnym uruchomieniu spróbuje stworzyć je na nowo.
Jak zniszczyć zasoby utworzone przez Terraform?
Jeśli chcesz usunąć wszystkie zasoby zdefiniowane w plikach konfiguracyjnych w danym katalogu (aby np. uniknąć kosztów za działający serwer), wystarczy uruchomić komendę terraform destroy w terminalu i potwierdzić usunięcie.
Czy ten kod zadziała w darmowym pakiecie AWS Free Tier?
Tak! Jeśli wybierzesz region z dostępnym pakietem darmowym i ustawisz typ instancji na t2.micro (lub t3.micro w niektórych regionach) oraz będziesz mieścić się w limitach godzinowych (750h miesięcznie), AWS nie naliczy żadnych opłat za uruchomiony serwer.