cli-tool
cross-platform
iac
infrastructure
intermediate
"Clase de la hoja"
########################################################################################################################################################################################################################################################## Copiar todos los comandos
■/div titulada
Comandos completos de Terraform y flujos de trabajo de Infraestructura como Código (IaC), incluyendo la gestión de recursos, operaciones estatales y despliegues multicloud.
Instalación
Command
Description
terraform version
Show Terraform version
terraform -help
Show help information
terraform -help plan
Show help for specific command
Corrientes básicas de trabajo
Operaciones básicas
Command
Description
terraform init
Initialize working directory
terraform plan
Create execution plan
terraform apply
Apply changes
terraform destroy
Destroy infrastructure
terraform validate
Validate configuration
terraform fmt
Format configuration files
Planificación avanzada
Command
Description
terraform plan -out=tfplan
Save plan to file
terraform apply tfplan
Apply saved plan
terraform plan -target=resource.name
Plan specific resource
terraform plan -var="key=value"
Plan with variables
terraform plan -var-file="vars.tfvars"
Plan with variable file
State Management
Operaciones estatales
Command
Description
terraform state list
List resources in state
terraform state show resource.name
Show resource details
terraform state mv old_name new_name
Move resource in state
terraform state rm resource.name
Remove resource from state
terraform state pull
Download remote state
terraform state push
Upload state to remote
State Backup and Recovery
Command
Description
terraform state backup
Create state backup
terraform force-unlock LOCK_ID
Force unlock state
terraform refresh
Update state with real resources
Espacios de trabajo
Command
Description
terraform workspace list
List workspaces
terraform workspace new dev
Create new workspace
terraform workspace select dev
Switch to workspace
terraform workspace delete dev
Delete workspace
terraform workspace show
Show current workspace
Importación y salida
Recursos de importación
Command
Description
terraform import resource.name id
Import existing resource
terraform import aws_instance.example i-1234567890abcdef0
Import AWS instance
Productos
Command
Description
terraform output
Show all outputs
terraform output instance_ip
Show specific output
terraform output -json
Show outputs in JSON
Ejemplos de configuración
Instalación básica AWS EC2
provider "aws" \\\\{
region = "us-west-2"
\\\\}
resource "aws_instance" "example" \\\\{
ami = "ami-0c55b159cbfafe1d0"
instance_type = "t2.micro"
tags = \\\\{
Name = "example-instance"
\\\\}
\\\\}
output "instance_ip" \\\\{
value = aws_instance.example.public_ip
\\\\}
Variables
variable "instance_type" \\\\{
description = "EC2 instance type"
type = string
default = "t2.micro"
\\\\}
variable "environment" \\\\{
description = "Environment name"
type = string
\\\\}
Fuentes de datos
data "aws_ami" "ubuntu" \\\\{
most_recent = true
owners = ["099720109477"] # Canonical
filter \\\\{
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
\\\\}
\\\\}
Módulos
module "vpc" \\\\{
source = "terraform-aws-modules/vpc/aws"
name = "my-vpc"
cidr = "10.0.0.0/16"
azs = ["us-west-2a", "us-west-2b"]
private_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
public_subnets = ["10.0.101.0/24", "10.0.102.0/24"]
enable_nat_gateway = true
enable_vpn_gateway = true
\\\\}
Configuración remota del Estado
S3 Backend
terraform \\\\{
backend "s3" \\\\{
bucket = "my-terraform-state"
key = "state/terraform.tfstate"
region = "us-west-2"
\\\\}
\\\\}
Azure Backend
terraform \\\\{
backend "azurerm" \\\\{
resource_group_name = "tfstate"
storage_account_name = "tfstate"
container_name = "tfstate"
key = "prod.terraform.tfstate"
\\\\}
\\\\}
Google Cloud Backend
terraform \\\\{
backend "gcs" \\\\{
bucket = "tf-state-bucket"
prefix = "terraform/state"
\\\\}
\\\\}
Configuración del proveedor
AWS Proveedor
provider "aws" \\\\{
region = "us-west-2"
profile = "default"
default_tags \\\\{
tags = \\\\{
Environment = "production"
Project = "my-project"
\\\\}
\\\\}
\\\\}
Azure Provider
provider "azurerm" \\\\{
features \\\\{\\\\}
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
\\\\}
Google Cloud Provider
provider "google" \\\\{
project = "my-project-id"
region = "us-central1"
zone = "us-central1-c"
\\\\}
Características avanzadas
Recursos condicionales
resource "aws_instance" "example" \\\\{
count = var.create_instance ? 1 : 0
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
\\\\}
Para cada uno
resource "aws_instance" "example" \\\\{
for_each = toset(var.instance_names)
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
tags = \\\\{
Name = each.key
\\\\}
\\\\}
Bloques dinámicos
resource "aws_security_group" "example" \\\\{
name = "example"
dynamic "ingress" \\\\{
for_each = var.ingress_rules
content \\\\{
from_port = ingress.value.from_port
to_port = ingress.value.to_port
protocol = ingress.value.protocol
cidr_blocks = ingress.value.cidr_blocks
\\\\}
\\\\}
\\\\}
Pruebas y validación
Command
Description
terraform validate
Validate syntax
terraform validate -json
Validate with JSON output
Command
Description
terraform plan -detailed-exitcode
Plan with detailed exit codes
terraform show
Show current state
terraform show -json
Show state in JSON
Herramientas de terceros
Command
Description
tflint
Terraform linter
terraform-docs
Generate documentation
checkov -f main.tf
Security scanning
tfsec .
Security analysis
Depuración y solución de problemas
Registro
Command
Description
TF_LOG=DEBUG terraform plan
Enable debug logging
TF_LOG=TRACE terraform apply
Enable trace logging
TF_LOG_PATH=terraform.log terraform plan
Log to file
Cuestiones comunes
Command
Description
terraform refresh
Sync state with reality
terraform taint resource.name
Mark resource for recreation
terraform untaint resource.name
Remove taint from resource
Buenas prácticas
Organización
project/
├── main.tf # Main configuration
├── variables.tf # Variable definitions
├── outputs.tf # Output definitions
├── versions.tf # Provider versions
├── terraform.tfvars # Variable values
└── modules/
└── vpc/
├── main.tf
├── variables.tf
└── outputs.tf
Versión Limita
terraform \\\\{
required_version = ">= 1.0"
required_providers \\\\{
aws = \\\\{
source = "hashicorp/aws"
version = "~> 5.0"
\\\\}
\\\\}
\\\\}
Resource Naming
resource "aws_instance" "web_server" \\\\{
# Use descriptive names
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
tags = \\\\{
Name = "$\\\\{var.project_name\\\\}-web-$\\\\{var.environment\\\\}"
Environment = var.environment
Project = var.project_name
\\\\}
\\\\}
Prácticas óptimas de seguridad
** Seguridad del Estado**: Use estado remoto con cifrado
Secrets Management : Use tiendas secretas externas
** Control de acceso**: Implementar políticas de IAM adecuadas
Code Review : Review all infrastructure changes
Scanning : Use herramientas de análisis de seguridad
Optimización del rendimiento
Parallelism : Use -parallelism
flag for large deployments
Targeting : Use -target
para recursos específicos
Separación del Estado : Dividir estados grandes en pequeños
Module Design : Diseño de módulos reutilizables