File Terraform IAc - AWS Proton

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

File Terraform IAc

Pelajari cara menggunakan infrastruktur Terraform sebagai file kode (IAc) dengan. AWS ProtonTerraform adalah mesin iAC open-source yang banyak digunakan yang dikembangkan oleh. HashiCorp Modul Terraform dikembangkan dalam bahasa HashiCorp HCL, dan mendukung beberapa penyedia infrastruktur backend, termasuk Amazon Web Services.

AWS Proton mendukung penyediaan yang dikelola sendiri untuk Terraform IAc.

Untuk contoh lengkap repositori penyediaan yang merespons permintaan tarik dan mengimplementasikan penyediaan infrastruktur, lihat Templat otomatisasi Tindakan Terraform untuk on. OpenSource GitHub AWS Proton GitHub

Cara kerja penyediaan yang dikelola sendiri dengan file bundel template Terraform IAc:
  1. Saat Anda membuat lingkungan dari bundel template Terraform, AWS Proton kompilasi .tf file Anda dengan parameter konsol atau input. spec file

  2. Itu membuat permintaan tarik untuk menggabungkan file IAC yang dikompilasi ke repositori yang telah Anda daftarkan. AWS Proton

  3. Jika permintaan disetujui, AWS Proton tunggu status penyediaan yang Anda berikan.

  4. Jika permintaan ditolak, pembuatan lingkungan dibatalkan.

  5. Jika waktu permintaan tarik habis, pembuatan lingkungan tidak selesai.

AWS Proton dengan pertimbangan Terraform IAc:
  • AWS Proton tidak mengelola penyediaan Terraform Anda.

  • Anda harus mendaftarkan repositori penyediaan dengan. AWS Proton AWS Proton membuat permintaan tarik pada repositori ini.

  • Anda harus membuat CodeStar koneksi untuk terhubung AWS Proton dengan repositori penyediaan Anda.

  • Untuk menyediakan dari file IAc yang AWS Proton dikompilasi, Anda harus menanggapi permintaan AWS Proton tarik. AWS Proton membuat permintaan tarik setelah lingkungan dan layanan membuat dan memperbarui tindakan. Lihat informasi yang lebih lengkap di AWS Proton lingkungan dan Layanan AWS Proton.

  • Untuk menyediakan pipeline dari file IAc yang AWS Proton dikompilasi, Anda harus membuat repositori pipeline CI/CD.

  • Otomatisasi penyediaan berbasis permintaan tarik Anda harus menyertakan langkah-langkah untuk memberi tahu perubahan status AWS Proton sumber daya yang disediakan AWS Proton . Anda dapat menggunakan AWS Proton NotifyResourceDeploymentStatusChange API.

  • Anda tidak dapat menerapkan layanan, saluran pipa, dan komponen yang dibuat dari file CloudFormation IAc ke lingkungan yang dibuat dari file Terraform IAc.

  • Anda tidak dapat menerapkan layanan, saluran pipa, dan komponen yang dibuat dari file Terraform IAc ke lingkungan yang dibuat dari file IAc. CloudFormation

Saat menyiapkan file Terraform IAc Anda AWS Proton, Anda melampirkan ruang nama ke variabel input Anda, seperti yang ditunjukkan pada contoh berikut. Untuk informasi lebih lanjut, lihat Parameter.

terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 3.0" } } // This tells terraform to store the state file in s3 at the location // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate backend "s3" { bucket = "terraform-state-bucket" key = "tf-os-sample/terraform.tfstate" region = "us-east-1" } } // Configure the AWS Provider provider "aws" { region = "us-east-1" default_tags { tags = var.proton_tags } } resource "aws_ssm_parameter" "my_ssm_parameter" { name = "my_ssm_parameter" type = "String" // Use the Proton environment.inputs. namespace value = var.environment.inputs.ssm_parameter_value }

Infrastruktur yang dikompilasi sebagai kode

Saat Anda membuat lingkungan atau layanan, AWS Proton kompilasi infrastruktur Anda sebagai file kode dengan konsol atau spec file input. Ini membuat proton.resource-type.variables.tf dan proton.auto.tfvars.json file untuk input Anda yang dapat digunakan oleh Terraform, seperti yang ditunjukkan dalam contoh berikut. File-file ini terletak di repositori tertentu di folder yang cocok dengan nama instance lingkungan atau layanan.

Contoh ini menunjukkan bagaimana AWS Proton menyertakan tag dalam definisi variabel dan nilai variabel, dan bagaimana Anda dapat menyebarkan AWS Proton tag ini ke sumber daya yang disediakan. Untuk informasi selengkapnya, lihat Menandai propagasi ke sumber daya yang disediakan.

dev/environment.tf:

terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 3.0" } } // This tells terraform to store the state file in s3 at the location // s3://terraform-state-bucket/tf-os-sample/terraform.tfstate backend "s3" { bucket = "terraform-state-bucket" key = "tf-os-sample/terraform.tfstate" region = "us-east-1" } } // Configure the AWS Provider provider "aws" { region = "us-east-1" default_tags { tags = var.proton_tags } } resource "aws_ssm_parameter" "my_ssm_parameter" { name = "my_ssm_parameter" type = "String" // Use the Proton environment.inputs. namespace value = var.environment.inputs.ssm_parameter_value }

dev/proton.environment.variables.tf:

variable "environment" { type = object({ inputs = map(string) name = string }) } variable "proton_tags" { type = map(string) default = null }

dev/proton.auto.tfvars.json:

{ "environment": { "name": "dev", "inputs": { "ssm_parameter_value": "MyNewParamValue" } } "proton_tags" : { "proton:account" : "123456789012", "proton:template" : "arn:aws:proton:us-east-1:123456789012:environment-template/fargate-env", "proton:environment" : "arn:aws:proton:us-east-1:123456789012:environment/dev" } }

Jalur repositori

AWS Proton menggunakan input konsol atau spesifikasi dari tindakan pembuatan lingkungan atau layanan untuk menemukan repositori dan jalur tempat untuk menemukan file IAc yang dikompilasi. Nilai input diteruskan ke parameter input namespaced.

AWS Proton mendukung dua tata letak jalur repositori. Dalam contoh berikut, jalur diberi nama oleh parameter sumber daya namespaced dari dua lingkungan. Setiap lingkungan memiliki contoh layanan dari dua layanan, dan contoh layanan dari salah satu layanan memiliki komponen yang didefinisikan secara langsung.

Jenis sumber daya Parameter nama = Nama sumber daya
Environment environment.name = "env-prod"
Environment environment.name "env-staged"
Layanan service.name "service-one"
  Contoh layanan service_instance.name "instance-one-prod"
  Contoh layanan service_instance.name "instance-one-staged"
Layanan service.name "service-two"
  Contoh layanan service_instance.name "instance-two-prod"
    Komponen service_instance.components.default.name "component-prod"
  Contoh layanan service_instance.name "instance-two-staged"
    Komponen service_instance.components.default.name "component-staged"
Layout 1

Jika AWS Proton menemukan repositori yang ditentukan dengan environments folder, itu membuat folder yang menyertakan file IAC yang dikompilasi dan diberi nama dengan file. environment.name

Jika AWS Proton menemukan repositori yang ditentukan dengan environments folder yang berisi nama folder yang cocok dengan nama lingkungan yang kompatibel dengan instance layanan, itu membuat folder yang menyertakan file iAc instance yang dikompilasi dan diberi nama dengan file. service_instance.name

/repo /environments /env-prod # environment folder main.tf proton.environment.variables.tf proton.auto.tfvars.json /service-one-instance-one-prod # instance folder main.tf proton.service_instance.variables.tf proton.auto.tfvars.json /service-two-instance-two-prod # instance folder main.tf proton.service_instance.variables.tf proton.auto.tfvars.json /component-prod # component folder main.tf proton.component.variables.tf proton.auto.tfvars.json /env-staged # environment folder main.tf proton.variables.tf proton.auto.tfvars.json /service-one-instance-one-staged # instance folder main.tf proton.service_instance.variables.tf proton.auto.tfvars.json /service-two-instance-two-staged # instance folder main.tf proton.service_instance.variables.tf proton.auto.tfvars.json /component-staged # component folder main.tf proton.component.variables.tf proton.auto.tfvars.json
Layout 2

Jika AWS Proton menemukan repositori yang ditentukan tanpa environments folder, itu membuat environment.name folder di mana ia menemukan file IAc lingkungan yang dikompilasi.

Jika AWS Proton menemukan repositori yang ditentukan dengan nama folder yang cocok dengan nama lingkungan yang kompatibel dengan instance layanan, itu akan membuat service_instance.name folder tempat ia menempatkan file iAc instance yang dikompilasi.

/repo /env-prod # environment folder main.tf proton.environment.variables.tf proton.auto.tfvars.json /service-one-instance-one-prod # instance folder main.tf proton.service_instance.variables.tf proton.auto.tfvars.json /service-two-instance-two-prod # instance folder main.tf proton.service_instance.variables.tf proton.auto.tfvars.json /component-prod # component folder main.tf proton.component.variables.tf proton.auto.tfvars.json /env-staged # environment folder main.tf proton.variables.tf proton.auto.tfvars.json /service-one-instance-one-staged # instance folder main.tf proton.service_instance.variables.tf proton.auto.tfvars.json /service-two-instance-two-staged # instance folder main.tf proton.service_instance.variables.tf proton.auto.tfvars.json /component-staged # component folder main.tf proton.component.variables.tf proton.auto.tfvars.json