تخطَّ إلى المحتوى

Terraform

تيراफورم

أمروصف
terraform versionأظهر إصدار Terraform
terraform -helpعرض معلومات المساعدة
terraform -help planاعرض المساعدة للأمر المحدد
أمروصف
terraform initتهيئة دليل العمل
terraform planإنشاء خطة التنفيذ
terraform applyتطبيق التغييرات
terraform destroyتدمير البنية التحتية
terraform validateتحقق من صحة التكوين
terraform fmtتنسيق ملفات التكوين

Installation & Setup

أمروصف
terraform plan -out=tfplanاحفظ الخطة في ملف
terraform apply tfplanتطبيق الخطة المحفوظة
terraform plan -target=resource.nameخطة مورد محدد
terraform plan -var="key=value"التخطيط باستخدام المتغيرات
terraform plan -var-file="vars.tfvars"خطط مع ملف متغير

Core Workflow

أمروصف
terraform state listقائمة الموارد في الولاية
terraform state show resource.nameعرض تفاصيل المورد
terraform state mv old_name new_nameنقل المورد في الحالة
terraform state rm resource.nameإزالة المورد من الحالة
terraform state pullتنزيل الحالة البعيدة
terraform state pushرفع الحالة إلى المكان البعيد

Basic Operations

أمروصف
terraform state backupإنشاء نسخة احتياطية للحالة
terraform force-unlock LOCK_IDفتح الحالة بالقوة
terraform refreshقم بتحديث الحالة بالموارد الحقيقية

Advanced Planning

أمروصف
terraform workspace listقائمة مساحات العمل
terraform workspace new devإنشاء مساحة عمل جديدة
terraform workspace select devالتبديل إلى مساحة العمل
terraform workspace delete devحذف مساحة العمل
terraform workspace showإظهار مساحة العمل الحالية

State Management

أمروصف
terraform import resource.name idاستيراد المورد الموجود
terraform import aws_instance.example i-1234567890abcdef0استيراد مثيل AWS

State Operations

أمروصف
terraform outputإظهار جميع المخرجات
terraform output instance_ipإظهار مخرجات محددة
terraform output -jsonأظهر المخرجات بتنسيق JSON
### State Backup and Recovery
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
\\\\}
```## مساحات العمل
    ## Workspaces
```hcl
variable "instance_type" \\\\{
  description = "EC2 instance type"
  type        = string
  default     = "t2.micro"
\\\\}

variable "environment" \\\\{
  description = "Environment name"
  type        = string
\\\\}
```## الاستيراد والإخراج
    ## Import and Output
```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-*"]
  \\\\}
\\\\}
```### استيراد الموارد
    ### Import Resources
```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
\\\\}
```### المخرجات
    ### Outputs
```hcl
terraform \\\\{
  backend "s3" \\\\{
    bucket = "my-terraform-state"
    key    = "state/terraform.tfstate"
    region = "us-west-2"
  \\\\}
\\\\}
```## أمثلة التكوين
    ## Configuration Examples
```hcl
terraform \\\\{
  backend "azurerm" \\\\{
    resource_group_name  = "tfstate"
    storage_account_name = "tfstate"
    container_name       = "tfstate"
    key                  = "prod.terraform.tfstate"
  \\\\}
\\\\}
```### مثال أساسي لمثيل AWS EC2
    ### Basic AWS EC2 Instance
```hcl
terraform \\\\{
  backend "gcs" \\\\{
    bucket = "tf-state-bucket"
    prefix = "terraform/state"
  \\\\}
\\\\}
```### المتغيرات
    ### Variables
```hcl
provider "aws" \\\\{
  region  = "us-west-2"
  profile = "default"

  default_tags \\\\{
    tags = \\\\{
      Environment = "production"
      Project     = "my-project"
    \\\\}
  \\\\}
\\\\}
```### مصادر البيانات
    ### Data Sources
```hcl
provider "azurerm" \\\\{
  features \\\\{\\\\}

  subscription_id = "00000000-0000-0000-0000-000000000000"
  tenant_id       = "00000000-0000-0000-0000-000000000000"
\\\\}
```### الوحدات
    ### Modules
```hcl
provider "google" \\\\{
  project = "my-project-id"
  region  = "us-central1"
  zone    = "us-central1-c"
\\\\}
```## تكوين الحالة البعيدة
    ## Remote State Configuration
```hcl
resource "aws_instance" "example" \\\\{
  count = var.create_instance ? 1 : 0

  ami           = data.aws_ami.ubuntu.id
  instance_type = var.instance_type
\\\\}
```**حماية الحالة**: استخدم الحالة البعيدة مع التشفير```hcl
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
  \\\\}
\\\\}
```**إدارة الأسرار**: استخدم مخازن أسرار خارجية```hcl
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
    \\\\}
  \\\\}
\\\\}
```**التحكم في الوصول**: طبق سياسات IAM المناسبة
| أمر | وصف |
|---------|-------------|
| `terraform validate` | تحقق من بناء الجملة |
| `terraform validate -json` | التحقق باستخدام مخرجات JSON |**مراجعة الكود**: راجع جميع التغييرات في البنية التحتية
| أمر | وصف |
|---------|-------------|
| `terraform plan -detailed-exitcode` | خطط مع أكواد خروج مفصلة |
| `terraform show` | إظهار الحالة الحالية |
| `terraform show -json` | عرض الحالة في JSON |**المسح الأمني**: استخدم أدوات مسح أمنية

### Performance Optimization
| أمر | وصف |
|---------|-------------|
| `tflint` | مراجع Terraform |
| `terraform-docs` | إنشاء توثيق |
| `checkov -f main.tf` | المسح الأمني |
| `tfsec .` | التحليل الأمني |**التوازي**: استخدم 
| أمر | وصف |
|---------|-------------|
| `TF_LOG=DEBUG terraform plan` | تمكين التسجيل التفصيلي للتصحيح |
| `TF_LOG=TRACE terraform apply` | تمكين التسجيل التفصيلي |
| `TF_LOG_PATH=terraform.log terraform plan` | سجل في الملف |للنشر الكبير
| أمر | وصف |
|---------|-------------|
| `terraform refresh` | مزامنة الحالة مع الواقع |
| `terraform taint resource.name` | حدد المورد للترفيه |
| `terraform untaint resource.name` | إزالة التلوث من المورد |**الاستهداف**: استخدم ```
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
```للموارد المحددة```hcl
terraform \\\\{
  required_version = ">= 1.0"

  required_providers \\\\{
    aws = \\\\{
      source  = "hashicorp/aws"
      version = "~> 5.0"
    \\\\}
  \\\\}
\\\\}
```**تقسيم الحالة**: قسّم الحالات الكبيرة إلى حالات أصغر```hcl
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
  \\\\}
\\\\}
```**تصميم الوحدات**: صمم وحدات قابلة لإعادة الاستخدام

Would you like me to clarify or expand on any part of the translation?`-parallelism` flag for large deployments
2. **Targeting**: Use `-target` for specific resources
3. **State Splitting**: Split large states into smaller ones
4. **Module Design**: Design reusable modules