Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memulai dengan AWS DevOps Agen yang menggunakan Terraform
Gambaran umum
Panduan ini menunjukkan cara menggunakan Terraform untuk membuat dan menyebarkan sumber daya AWS DevOps Agen. Konfigurasi Terraform mengotomatiskan pembuatan ruang agen, peran IAM, aplikasi operator, dan asosiasi akun. AWS
Pendekatan Terraform mengotomatiskan langkah-langkah manual yang dijelaskan dalam panduan onboarding CLI dengan mendefinisikan semua sumber daya yang diperlukan sebagai infrastruktur sebagai kode.
AWS DevOps Agen tersedia di 6 Wil AWS ayah berikut: AS Timur (Virginia Utara), AS Barat (Oregon), Asia Pasifik (Sydney), Asia Pasifik (Tokyo), Eropa (Frankfurt), dan Eropa (Irlandia). Untuk informasi selengkapnya tentang Wilayah yang didukung, lihatWilayah yang Didukung.
Prasyarat
Sebelum Anda mulai, pastikan Anda memiliki yang berikut:
Terraform >= 1.0 diinstal
AWS CLI diinstal dan dikonfigurasi dengan kredenSIAL yang sesuai
Satu AWS akun untuk akun pemantauan (primer)
(Opsional) AWS Akun kedua jika Anda ingin mengatur pemantauan lintas akun
Apa yang dicakup panduan ini
Panduan ini dibagi menjadi tiga bagian:
Bagian 1 - Menyebarkan ruang agen dengan aplikasi operator dan asosi AWS asi di akun pemantauan Anda. Setelah menyelesaikan bagian ini, agen dapat memantau masalah di akun itu.
Bagian 2 (Opsional) — Tambahkan as AWS osiasi sumber untuk akun layanan dan terapkan peran IAM lintas akun ditambah echo Lambda ke akun tersebut. Hal ini memungkinkan ruang agen untuk memantau sumber daya di seluruh akun.
Bagian 3 (Opsional) - Daftarkan layanan pihak ketiga (Dynatrace, ServiceNow, Splunk, New Relic, GitLab, PagerDuty) dan kaitkan dengan ruang agen.
Sumber daya yang dibuat
Bagian 1: Akun pemantauan
IAM role (
DevOpsAgentRole-AgentSpace-*) — Diasumsikan oleh layanan DevOps Agen untuk memantau akun. TermasukAIDevOpsAgentAccessPolicykebijakan terkelola dan kebijakan sebaris yang memungkinkan pembuatan peran terkait layanan Resource Explorer. Dibuat hanya ketikaexisting_agentspace_role_arntidak disetel.IAM role (
DevOpsAgentRole-WebappAdmin-*) — Peran aplikasi operator dengan kebijakan terAIDevOpsOperatorAppAccessPolicykelola untuk operasi agen. Dibuat hanya ketikaexisting_operator_role_arntidak disetel.Ruang agen (nama yang dapat dikonfigurasi) — Ruang agen pusat, dibuat menggunakan
awscc_devopsagent_agent_spacesumber daya. Termasuk konfigurasi aplikasi operator.Asosiasi (AWS monitor) — Menautkan akun pemantauan ke ruang agen menggunakan
awscc_devopsagent_associationsumber daya.Asosiasi (AWS sumber) — (Opsional) Menautkan akun layanan ke ruang agen untuk pemantauan lintas akun.
Bagian 2: Akun layanan (opsional)
IAM role (
DevOpsAgentRole-SecondaryAccount-TF) — Cross-account peran dengan nama tetap. Dipercaya oleh ruang agen di akun pemantauan. TermasukAIDevOpsAgentAccessPolicykebijakan terkelola dan kebijakan sebaris yang memungkinkan pembuatan peran terkait layanan Resource Explorer.Lambda function (
echo-service-tf) — Sebuah contoh layanan sederhana yang menggemakan kembali peristiwa input.
Pengaturan
Langkah 1: Mengkloning repositori sampel
git clone https://github.com/aws-samples/sample-aws-devops-agent-terraform.git cd sample-aws-devops-agent-terraform
Langkah 2: Konfigurasikan variabel
Salin file variabel contoh dan sesuaikan untuk lingkungan Anda:
cp terraform.tfvars.example terraform.tfvars
Edit terraform.tfvars dengan nama dan deskripsi ruang agen Anda:
agent_space_name = "MyCompanyAgentSpace" agent_space_description = "DevOps Agent Space for monitoring production workloads"
Bagian 1: Menyebarkan ruang agen
Di bagian ini, Anda membuat ruang agen, peran IAM, aplikasi operator, dan as AWS osiasi di akun pemantauan Anda.
Langkah 1: Terapkan dengan otomatisasi (disarankan)
Gunakan skrip penerapan yang disediakan untuk pengaturan yang efisien:
./deploy.sh
Skrip ini secara otomatis:
Memeriksa prasyarat (Terraform, AWS CLI, kredenSIAL)
Membuat
terraform.tfvarsdari contoh jika diperlukanMenginisialisasi, memvalidasi, merencanakan, dan menerapkan Terraform
Atau, jika Anda lebih suka kontrol manual:
terraform init terraform plan terraform apply
Ketik yes saat diminta untuk mengonfirmasi penerapan.
Langkah 2: Rekam output
Setelah penerapan selesai, Terraform mencetak output. Catat nilai-nilai ini untuk digunakan nanti:
Outputs: agent_space_id = "abc123" agent_space_arn = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/abc123" agent_space_name = "MyCompanyAgentSpace" devops_agentspace_role_arn = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-AgentSpace-a1b2c3d4" devops_operator_role_arn = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-WebappAdmin-a1b2c3d4" primary_account_id = "<MONITORING_ACCOUNT_ID>" primary_account_association_id = "assoc-xyz"
Jika Anda berencana untuk menyelesaikan Bagian 2, simpan nil agent_space_arn ainya. Anda akan membutuhkannya untuk mengkonfigurasi sumber daya akun layanan.
Langkah 3: Verifikasi penerapan
Jalankan skrip verifikasi pasca-penerapan:
./post-deploy.sh
Atau gunakan AWS CLI untuk memverifikasi bahwa ruang agen berhasil dibuat:
aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>
Pada titik ini, ruang agen Anda digunakan dengan aplikasi operator diaktifkan dan akun pemantauan Anda terkait. Agen dapat memantau masalah di akun ini.
Bagian 2 (Opsional): Tambahkan pemantauan lintas akun
Di bagian ini, Anda memperluas pengaturan sehingga ruang agen dapat memantau sumber daya di AWS akun kedua (akun layanan). Ini melibatkan dua tindakan:
Menambahkan as AWS osiasi sumber yang menunjuk ke akun layanan.
Menyebarkan peran IAM lintas akun dan fungsi echo Lambda ke akun layanan.
penting
Anda harus menyelesaikan Bagian 1 sebelum melanjutkan. Sumber daya akun layanan memerlukan output penerapan agent_space_arn dari Bagian 1.
Langkah 1: Konfigurasikan ID akun layanan
Diterraform.tfvars, atur ID akun layanan Anda:
service_account_id = "<YOUR_SERVICE_ACCOUNT_ID>"
Langkah 2: Atur ruang agen ARN
Salin agent_space_arn nilai dari output Bagian 1 (Langkah 2) dan atur diterraform.tfvars:
agent_space_arn = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>"
Sumber daya akun layanan menggunakan nilai ini untuk menjangkau kebijakan kepercayaan pada peran akun sekunder. Sumber daya ini hanya dibuat ketika nilai ini ditetapkan.
Langkah 3: Konfigurasikan penyedia `aws.service`
Dimain.tf, konfigurasikan alias aws.service penyedia dengan kredenSIAL untuk akun layanan. Anda dapat menggunakan profil bernama atau peran asumsi:
Menggunakan profil:
provider "aws" { alias = "service" region = var.aws_region profile = "your-service-account-profile" }
Atau menggunakan asumsi peran:
provider "aws" { alias = "service" region = var.aws_region assume_role { role_arn = "arn:aws:iam::<SERVICE_ACCOUNT_ID>:role/OrganizationAccountAccessRole" } }
Langkah 4: Terapkan
Terapkan konfigurasi yang diperbarui:
terraform apply
Ini membuat sumber daya berikut di akun layanan:
Peran IAM (
DevOpsAgentRole-SecondaryAccount-TF) yang mempercayai ruang agen di akun pemantauanFungsi echo Lambda (
echo-service-tf) sebagai contoh layanan
Ini juga membuat as AWS osiasi sumber di akun pemantauan yang menghubungkan akun layanan.
Langkah 5: Verifikasi penerapan
Uji layanan gema untuk mengonfirmasi bahwa fungsi Lambda berhasil digunakan:
aws lambda invoke \ --function-name echo-service-tf \ --payload '{"test": "hello world"}' \ --profile <your-service-account-profile> \ --region <REGION> \ response.json cat response.json
Bagian 3 (Opsional): Daftarkan integrasi pihak ketiga
Di bagian ini, Anda mendaftarkan layanan eksternal (Dynatrace, ServiceNow, Splunk, New Relic, GitLab, PagerDuty) dengan ruang agen. Integrasi ini memungkinkan AWS DevOps Agen mengakses telemetri, data insiden, dan informasi kontrol sumber selama penyelidikan.
Berbeda dengan sampel AWS CDK — yang memerlukan IntegrationsStack fase terpisah dan kabel manual dari ID ruang agen — sumber daya ini mereferensikan ruang agen secara langsung dan dapat digunakan terraform apply sama dengan Bagian 1.
Integrasi yang didukung
| Layanan | Jenis Layanan | Autentikasi |
|---|---|---|
| Dynatrace | dynatrace |
Kredenensi klien OAuth |
| ServiceNow | servicenow |
Kredenensi klien OAuth |
| Splunk | mcpserversplunk |
Token pembawa |
| New Relic | mcpservernewrelic |
Kunci API |
| GitLab | gitlab |
Token akses |
| PagerDuty | pagerduty |
Kredenensi klien OAuth |
catatan
Datadog tidak termasuk dalam konfigurasi Terraform. Menghubungkan Datadog memerlukan otorisasi OAuth pengguna interaktif (login dan persetujuan browser) seperti yang dijelaskan diMenghubungkan DataDog, yang tidak dapat diotomatiskan oleh Terraform. Daftarkan Datadog secara manual melalui halaman Penyedia Kemampuan di konsol.
Langkah 1: Konfigurasikan kredenSIAL integrasi
Tambahkan integrations blok keterraform.tfvars, isi hanya layanan yang Anda inginkan. Contoh berikut menunjukkan integrasi Dynatrace:
integrations = { dynatrace = { account_urn = "<DYNATRACE_ACCOUNT_URN>" client_id = "<DYNATRACE_CLIENT_ID>" client_name = "<DYNATRACE_CLIENT_NAME>" client_secret = "<DYNATRACE_CLIENT_SECRET>" env_id = "<DYNATRACE_ENVIRONMENT_ID>" resources = ["<DYNATRACE_RESOURCE_1>"] } }
Untuk bentuk lengkap dari setiap integrasi, lihat terraform.tfvars.example di repositori sampel.
ServiceNow persyaratan: Selalu atur instance_id secara eksplisit ke nama instance pendek (misalnya, "ven04972" — bukan lengkapinstance_url). Jika instance_id dihilangkan, asosiasi akan kembali keinstance_url, yang ditolak oleh API DevOps Agen dengan a400 GeneralServiceException: instanceId '<url>' does not match the registered ServiceNow instance.
Keamanan: integrations Variabel ditandaisensitive, sehingga nilainya disunting dari rencana dan terapkan output. Jangan mengikat kredensi nyata untukterraform.tfvars. Untuk produksi, sumber rahasia dari AWS Secrets Manager atau AWS System Manager Parameter Store (misalnya, menggunakan data sumber) daripada plaintext.
Langkah 2: Menyebarkan
Terapkan konfigurasi:
terraform apply
Ini membuat pendaftaran layanan dan asosiasi untuk setiap integrasi yang diaktifkan.
Langkah 3: Tinjau output
Setelah penerapan selesai, output integrasi memetakan setiap layanan yang diaktifkan ke ID terdaftarnya:
integration_service_ids = { "dynatrace" = "service-abc123" } integration_association_ids = { "dynatrace" = "assoc-xyz789" }
Untuk informasi selengkapnya tentang mengonfigurasi kredenSIAL untuk setiap layanan, lihat:
Menggunakan peran IAM yang ada (Opsional)
Secara default, konfigurasi Terraform membuat peran IAM baru untuk ruang agen dan aplikasi operator. Jika Anda sudah memiliki peran IAM dengan kebijakan yang diperlukan, Anda dapat melewatkan pembuatan peran dan menyediakan ARN peran yang ada sebagai gantinya.
Persyaratan
Peran yang ada harus memenuhi persyaratan berikut:
Peran ruang agen
Kebijakan kepercayaan memungkinkan
aidevops.amazonaws.com.rproxy.goskope.comuntuk mengambil peran dengansts:AssumeRoleMemiliki kebijakan terkel
AIDevOpsAgentAccessPolicyola terlampir(Opsional) Memiliki kebijakan sebaris yang memungkinkan pembuatan peran terkait layanan Resource Explorer
Peran aplikasi operator
Kebijakan kepercayaan memungkinkan
aidevops.amazonaws.com.rproxy.goskope.comuntuk mengambil peran dengansts:AssumeRoledansts:TagSessionMemiliki kebijakan terkel
AIDevOpsOperatorAppAccessPolicyola terlampir
Konfigurasi
Diterraform.tfvars, atur satu atau kedua ARN peran:
existing_agentspace_role_arn = "arn:aws:iam::ACCOUNT_ID:role/YourAgentSpaceRole" existing_operator_role_arn = "arn:aws:iam::ACCOUNT_ID:role/YourOperatorRole"
Ketika nilai-nilai ini ditetapkan, sumber daya peran yang sesuai iam.tf dilewati. Pendekatan ini sepenuhnya kompatibel ke belakang — konfigurasi yang ada dengan nilai kosong (default) mempertahankan perilaku pembuatan peran saat ini.
Pemecahan masalah
Penundaan propagasi IAM
Konfigurasi mencakup 30 detik
time_sleepantara pembuatan peran IAM dan pembuatan Ruang Agen. Layanan DevOps Agen memvalidasi kebijakan kepercayaan peran operator selama pembuatan Ruang Agen, dan ini dapat gagal jika IAM belum sepenuhnya disebarkan. Jika Anda masih melihat kesalahan kebijakan kepercayaan, tunggu sebentar dan jalankanterraform applylagi — peran IAM sudah ada dan aplikasi akan berlanjut di tempat yang ditinggalkan.
ServiceNow instanceId does not matchkesalahan
Tetapkan
instance_idsecara eksplisit di blokservice_nowintegrasi ke nama instance pendek (misalnya,"ven04972"), bukan lengkapinstance_url. Lihat catatan di Bagian 3 di atas.
Asosiasi Dynatrace status: invalid
Jika
terraform applyberhasil tetapi laporan asosiasi yang dihasilkanstatus = "invalid"(terlihat menggunakanaws devops-agent get-associationatau konsol), ini menunjukkan Dynatrace menolak kredenSIAL klien OAuth. Double-checkclient_id,client_secret, danaccount_urnterhadap akun Dynatrace, bukan masalah konfigurasi Terraform.
Kesalahan izin
Pastikan AWS kredensi Anda memiliki izin IAM yang diperlukan untuk membuat peran dan kebijakan.
Periksa apakah kondisi kebijakan kepercayaan cocok dengan ID akun Anda.
Cross-account penerapan gagal
aws.servicePenyedia harus dikonfigurasi dengan kredenSIAL untuk akun layanan. Gunakan profil bernama atau blok peran asumsi.Verifikasi bahwa
agent_space_arnnilainya cocok dengan ARN dari output Bagian 1.
Jenis sumber daya terraform tidak ditemukan
Pastikan Anda memiliki versi
awsccpenyedia~> 1.0atau yang lebih baru. Sumberawscc_devopsagent_associationdayaawscc_devopsagent_agent_spacedan membutuhkan penyedia AWS Cloud Control.
Pembersihan
Untuk menghapus semua sumber daya, hancurkan dalam urutan terbalik jika Anda menggunakan Bagian 2:
./cleanup.sh
Atau secara manual:
terraform destroy
Peringatan: Ini menghapus ruang agen Anda dan semua data terkait secara permanen. Pastikan Anda telah membuat cadangan informasi penting sebelum melanjutkan.
Pertimbangan keamanan
Konfigurasi Terraform membuat peran IAM dengan kebijakan kepercayaan yang hanya memungkinkan prinsipal
aidevops.amazonaws.com.rproxy.goskope.comlayanan untuk mengasumsinya.Kebijakan kepercayaan mencakup kondisi yang membatasi akses ke AWS akun spesifik Anda dan ruang agen ARN.
Semua kebijakan mengikuti prinsip hak istimewa paling sedikit. Tinjau dan sesuaikan kebijakan IAM berdasarkan persyaratan keamanan organisasi Anda.
Peran lintas akun (
DevOpsAgentRole-SecondaryAccount-TF) menggunakan nama tetap dan dicakup ke ruang agen tertentu ARN.
Langkah selanjutnya
Setelah Anda menyebarkan A AWS DevOps gen Anda menggunakan Terraform:
Pelajari tentang berbagai kemampuan DevOps Agen di Panduan Pengguna AWS DevOps Agen.
Pertimbangkan untuk mengintegrasikan penerapan Terraform ke dalam CI/CD pipeline Anda untuk manajemen infrastruktur otomatis.
Sumber daya tambahan
sumber daya awscc_devopsag
ent_agent_space di Registry Terraform sumber daya awscc_devopsag
ent_association di Registry Terraform sumber daya awscc_devopsag
ent_private_connection di Registry Terraform