Terraform Cloud Seadistamine
Eeldused: Terraform installitud, Git põhiteadmised
Platvorm: AWS, DigitalOcean või GitHub Codespaces
Selles juhendis seadistad cloud platvormi Terraform'i kasutamiseks. Valik platvormi sõltub sellest, kas sul on krediitkaart ning milliseid ressursse vajad.
Cloud Platvormide Võrdlus
| Platvorm | Krediitkaart | Free Tier | Parim Kasutus | Keerukus |
|---|---|---|---|---|
| GitHub Codespaces | Ei | 60h/kuu | Development, testimine | Väga lihtne |
| Railway.app | Ei | $5/kuu | Väikesed API'd, web apps | Lihtne |
| Render.com | Ei | 512MB RAM | Web services, PostgreSQL | Lihtne |
| Fly.io | Ei | 3 CPU, 256MB | Microservices, low-latency | Keskmine |
| Azure for Students | Ei | $100 credit | Microsoft ecosystem | Keskmine |
| DigitalOcean | Jah | $200/60 päeva | VPS, Droplets | Keskmine |
| AWS | Jah | 12 kuud | Enterprise, õppimine | Keeruline |
| Google Cloud | Jah | $300/90 päeva | Big Data, ML | Keeruline |
| Azure | Jah | $200/30 päeva | Windows, .NET | Keeruline |
| Oracle Cloud | Jah | Always Free | 4 CPU, 24GB RAM | Väga keeruline |
1. GitHub Student Pack Seadistamine
Soovitatud õpilastele - ei vaja krediitkaarti ja annab kõige rohkem tasuta ressursse.
1.1 Miks Student Pack?
GitHub Student Pack annab õpilastele juurdepääsu paljudele tasuta tööriistadele:
- DigitalOcean $200 credit (1 aasta)
- Azure $100 credit
- Heroku credits
- JetBrains IDE'd tasuta
- Canva Pro tasuta
- Tasuta domain Name.com'ist
1.2 Student Pack Taotlemine
Vajad kooli või ülikooli emaili (lõppeb .edu või .edu.ee) VÕI õpilastunnistust.
Mine https:
- //education.github.com/pack ja logi sisse GitHub'i. Kui kontot pole, loo uus. Vajuta "Get student benefits" ja vali "Student". Sisesta oma kooli email või lae üles õpilastunnistus (foto või PDF). Oota kinnitust
- tavaliselt võtab 1-3 päeva.
Kontrolli:
# Kontrolli kas Student Pack aktiivne
# Mine github.com/settings/billing
# Peaks näitama "GitHub Student Developer Pack"
1.3 DigitalOcean Aktiveerimine
Pärast Student Pack kinnitust mine https://www.digitalocean.com ja loo konto. Kasuta sama emaili mis GitHub'is. Mine "Billing" sektsiooni ja vajuta "Promo Code". Sisesta Student Pack promo kood mis said GitHub'ist. Peaksid nägema $200 credit'it oma kontol.
Installi DigitalOcean CLI:
# Linux / macOS / Codespaces
curl -sL https://github.com/digitalocean/doctl/releases/download/v1.98.0/doctl-1.98.0-linux-amd64.tar.gz | tar -xzv
sudo mv doctl /usr/local/bin
# Kontrolli
doctl version
Loo API token DigitalOcean konsoolil:
# DO konsool → API → Generate New Token
# Name: terraform-labs
# Märgi: Read & Write
# Kopeeri token (näed ainult ühe korra!)
# Autendi CLI
doctl auth init
# Sisesta token
# Testi
doctl account get
Validation:
- Student Pack aktiivne GitHub'is
- DigitalOcean konto loodud
- $200 credit nähtav
- doctl CLI töötab
- doctl account get näitab sinu kontot
2. AWS Konto Seadistamine
AWS on kõige populaarsem cloud platvorm. Vajad krediitkaarti, aga free tier kehtib 12 kuud.
2.1 Miks AWS?
AWS on:
- Kõige populaarsem (hea CV jaoks)
- Kõige rohkem õppematerjale
- 12 kuud free tier
- Keerulisem kui teised (aga õppimine tasub ära)
2.2 Konto Loomine
Mine https:
- //aws.amazon.com ja vajuta "Create an AWS Account". Sisesta email, konto nimi ja tugev parool. Vali konto tüübiks "Personal". Sisesta krediitkaart info
- AWS teeb $1 test'i mille tagastavad. Kinnita telefon SMS koodiga. Vali support plaan "Basic Support
- Free".
OLULINE: Kohe pärast konto loomist seadista MFA (Multi-Factor Authentication) turvalisuse jaoks.
Validation:
2.3 IAM Kasutaja Loomine
Root kasutaja on liiga võimas igapäevaseks tööks. Loome turvalisema kasutaja.
Mine AWS konsool'i → IAM → Users ja vajuta "Create user". Sisesta username "terraform-user". Vali access type "Console + Programmatic". Lisa õigused - vali "AdministratorAccess" (labs'ideks OK, produktsioonis kasuta kitsama
id õiguseid). Lae alla credentials CSV fail ja HOIA TURVALISELT.
Loo Access Keys:
Mine IAM → Users → terraform-user → Security credentials → Create access key. Vali "Command Line Interface (CLI)". Kopeeri Access Key ID ja Secret Access Key - näed neid ainult ühe korra.
Validation:
- IAM kasutaja loodud
- Credentials CSV alla laetud
- Access keys loodud ja salvestatud
2.4 AWS CLI Installimine
Installi AWS CLI oma masinas:
# Linux / macOS / Codespaces
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# Windows
# Lae alla MSI: https://awscli.amazonaws.com/AWSCLIV2.msi
# Kontrolli
aws --version
Seadista credentials:
aws configure
# AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
# AWS Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
# Default region: eu-west-1
# Default output: json
# Testi
aws sts get-caller-identity
Peaksid nägema JSON'i oma account ID'ga.
Validation:
- AWS CLI installitud
- aws configure tehtud
- aws sts get-caller-identity töötab
3. GitHub Codespaces Arenduskeskkond
Codespaces on brauseripõhine VS Code - ei vaja kohalikku installatsiooni.
3.1 Codespace Loomine
Mine https://github.com ja loo uus repository "terraform-labs". Vajuta "Code" → "Codespaces" → "Create codespace on main". Oota umbes 30 sekundit kuni keskkond valmis. Nüüd on sul VS Code brauseris töötamas.
Kontrolli et tööriistad on olemas:
# Terraform
terraform version
# Peaks näitama: Terraform v1.5.x
# Git
git --version
# Kui AWS CLI pole, installi
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
3.2 AWS Credentials Codespaces'is
Codespaces'is saad AWS credentials seadistada kahel viisil.
Variant A - aws configure:
Variant B - Käsitsi failid:
mkdir -p ~/.aws
cat > ~/.aws/credentials << 'EOF'
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
EOF
cat > ~/.aws/config << 'EOF'
[default]
region = eu-west-1
output = json
EOF
# Testi
aws sts get-caller-identity
TURVALISUS:
- Ära pane credentials Git'i
- Ära jaga Codespace'i avalikult
- Credentials kustutatakse codespace'i sulgemisel
Validation:
- Codespace töötab
- Terraform installitud
- AWS CLI töötab
- aws sts get-caller-identity näitab sinu kontot
4. SSH Key Setup
EC2 instancesse ühendumiseks vajad SSH key'i - see on nagu võti serveri ukse jaoks.
4.1 SSH Key Loomine
Loo SSH key paar:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/terraform-key -N ""
# Kontrolli faile
ls -la ~/.ssh/
# terraform-key <- Private key (HOIA SALADUSES!)
# terraform-key.pub <- Public key (läheb AWS'i)
Seadista õigused:
4.2 Key Import AWS'i
Variant A - AWS CLI:
aws ec2 import-key-pair \
--key-name "terraform-key" \
--public-key-material fileb://~/.ssh/terraform-key.pub \
--region eu-west-1
Variant B - AWS Konsool:
Mine EC2 konsool'i → Key Pairs → Actions → Import key pair. Name "terraform-key". Kopeeri ~/.ssh/terraform-key.pub sisu ja paste. Vajuta "Import".
Kontrolli:
Validation:
- SSH key paar loodud
- Private key õigused 600
- Key AWS'is nähtav
5. Terraform Projekti Struktuur
5.1 Kausta Loomine
Loo projektile kaust ja failid:
5.2 .gitignore Loomine
KRIITILISELT OLULINE - ei pane paroole ja võtmeid Git'i:
cat > .gitignore << 'EOF'
# Terraform
.terraform/
*.tfstate
*.tfstate.*
.terraform.lock.hcl
# Secrets
terraform.tfvars
*.auto.tfvars
*.tfvars.json
# AWS
.aws/
*.pem
# SSH keys
terraform-key
terraform-key.pub
# OS
.DS_Store
Thumbs.db
EOF
Miks see oluline:
- Ei pane AWS credentials Git'i
- Ei pane SSH võtmeid Git'i
- Ei pane terraform.tfvars Git'i (sisaldab tundlikku infot)
- Ei pane state faile Git'i (võivad sisaldada paroole)
5.3 Põhiline Struktuur
Loo failid:
Sinu projekti struktuur peaks välja nägema:
terraform-labs/
├── .gitignore
├── README.md
├── main.tf
├── variables.tf
├── outputs.tf
└── terraform.tfvars
Validation:
- Kaust loodud
- .gitignore on olemas
- Põhifailid loodud
- README.md on olemas
6. Kontrollnimekiri
Enne labori alustamist kontrolli:
Terraform:
- terraform version töötab
- Näitab versiooni 1.5+
Cloud Platform (vali üks):
- DigitalOcean: doctl account get töötab
- AWS: aws sts get-caller-identity töötab
- Codespaces: Codespace töötab ja AWS CLI seadistatud
SSH:
- SSH key paar loodud
- Private key õigused 600
- Key AWS'is (kui kasutad AWS'i)
Projekt:
- terraform-labs kaust loodud
- .gitignore on olemas ja õige
- Põhifailid loodud
Turvalisus:
- Credentials pole Git'is
- .gitignore sisaldab *.tfvars
- SSH private key pole Git'is
Probleemide Lahendamine
aws command not found
# Installi AWS CLI uuesti
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# Lisa PATH'i
export PATH="/usr/local/bin:$PATH"
No valid credential sources found
Permission denied publickey
# Kontrolli SSH key õigusi
chmod 600 ~/.ssh/terraform-key
# Kontrolli et key on AWS'is
aws ec2 describe-key-pairs --key-names terraform-key
Access Denied AWS'is
# Kontrolli IAM kasutaja õigusi
# AWS konsool → IAM → Users → terraform-user → Permissions
# Peaks olema AdministratorAccess
Valmis alustama Terraform lab'idega!