cli-tool
cross-platform
iac
infrastructure
intermediate
Copier toutes les commandes
Générer PDF
Commandes et flux de travail complets Terraform pour Infrastructure as Code (IaC), y compris la gestion des ressources, les opérations de l'État et les déploiements multicloud.
Installation et configuration
Command
Description
terraform version
Show Terraform version
terraform -help
Show help information
terraform -help plan
Show help for specific command
Flux de travail de base
Opérations de base
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
Planification avancée
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
Administration de l ' État
Opérations de l'État
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
Soutien et rétablissement de l'État
Command
Description
terraform state backup
Create state backup
terraform force-unlock LOCK_ID
Force unlock state
terraform refresh
Update state with real resources
Espaces de travail
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
Importation et production
Importation de ressources
Command
Description
terraform import resource.name id
Import existing resource
terraform import aws_instance.example i-1234567890abcdef0
Import AWS instance
Produits
Command
Description
terraform output
Show all outputs
terraform output instance_ip
Show specific output
terraform output -json
Show outputs in JSON
Exemples de configuration
Instance AWS EC2 de base
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
\\\\}
```_
### Sources des données
```hcl
data "aws_ami" "ubuntu" \\\\{
most_recent = true
owners = ["099720109477"] # Canonical
filter \\\\{
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
\\\\}
\\\\}
```_
### Modules
```hcl
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
\\\\}
Configuration d'état distant
Moteur S3
terraform \\\\{
backend "s3" \\\\{
bucket = "my-terraform-state"
key = "state/terraform.tfstate"
region = "us-west-2"
\\\\}
\\\\}
Moteur Azure
terraform \\\\{
backend "azurerm" \\\\{
resource_group_name = "tfstate"
storage_account_name = "tfstate"
container_name = "tfstate"
key = "prod.terraform.tfstate"
\\\\}
\\\\}
Moteur Google Cloud
terraform \\\\{
backend "gcs" \\\\{
bucket = "tf-state-bucket"
prefix = "terraform/state"
\\\\}
\\\\}
Configuration du fournisseur
Fournisseur AWS
provider "aws" \\\\{
region = "us-west-2"
profile = "default"
default_tags \\\\{
tags = \\\\{
Environment = "production"
Project = "my-project"
\\\\}
\\\\}
\\\\}
Fournisseur Azure
provider "azurerm" \\\\{
features \\\\{\\\\}
subscription_id = "00000000-0000-0000-0000-000000000000"
tenant_id = "00000000-0000-0000-0000-000000000000"
\\\\}
Fournisseur Google Cloud
provider "google" \\\\{
project = "my-project-id"
region = "us-central1"
zone = "us-central1-c"
\\\\}
Caractéristiques avancées
Ressources conditionnelles
resource "aws_instance" "example" \\\\{
count = var.create_instance ? 1 : 0
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
\\\\}
Pour chaque
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
\\\\}
\\\\}
Blocs dynamiques
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
\\\\}
\\\\}
\\\\}
Essai et validation
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
Outils tiers
Command
Description
tflint
Terraform linter
terraform-docs
Generate documentation
checkov -f main.tf
Security scanning
tfsec .
Security analysis
Débogue et dépannage
Exploitation forestière
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
Questions communes
Command
Description
terraform refresh
Sync state with reality
terraform taint resource.name
Mark resource for recreation
terraform untaint resource.name
Remove taint from resource
Meilleures pratiques
Organisation du fichier
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
Contraintes de version
terraform \\\\{
required_version = ">= 1.0"
required_providers \\\\{
aws = \\\\{
source = "hashicorp/aws"
version = "~> 5.0"
\\\\}
\\\\}
\\\\}
Désignation des ressources
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
\\\\}
\\\\}
Pratiques exemplaires en matière de sécurité
Sécurité de l'État : Utiliser l'état distant avec chiffrement
** Gestion des actifs** : Utiliser des magasins secrets externes
Contrôle de l'accès : Mettre en œuvre des politiques appropriées de MAI
Examen des codes : Examiner tous les changements d'infrastructure
Scanning : Utiliser des outils de numérisation de sécurité
Parallélisme : utiliser -parallelism
drapeau pour les grands déploiements
Targissement : utiliser -target
pour des ressources spécifiques
Doublure de l'État : Diviser les grands états en plus petits.
Module Design : Modules de conception réutilisables