View a markdown version of this page

Memulai dengan AWS DevOps Agen menggunakan Terraform - AWS DevOps Agen

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 menggunakan Terraform

Gambaran umum

Panduan ini menunjukkan cara menggunakan Terraform untuk membuat dan menerapkan AWS DevOps sumber daya 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 orientasi CLI dengan mendefinisikan semua sumber daya yang diperlukan sebagai infrastruktur sebagai kode.

AWS DevOps Agen tersedia di 6 AWS Wilayah berikut: AS Timur (Virginia N.), 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 kredensyal yang sesuai

  • Satu AWS akun untuk akun pemantauan (primer)

  • (Opsional) AWS Akun kedua jika Anda ingin mengatur pemantauan lintas akun

Apa yang dicakup oleh panduan ini

Panduan ini dibagi menjadi tiga bagian:

  • Bagian 1 — Menyebarkan ruang agen dengan aplikasi operator dan AWS asosiasi di akun pemantauan Anda. Setelah menyelesaikan bagian ini, agen dapat memantau masalah di akun itu.

  • Bagian 2 (Opsional) - Tambahkan AWS asosiasi sumber untuk akun layanan dan gunakan peran IAM lintas akun ditambah Lambda gema ke akun itu. 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 dibuat

Bagian 1: Memantau akun

  • Peran IAM (DevOpsAgentRole-AgentSpace-*) — Diasumsikan oleh layanan DevOps Agen untuk memantau akun. Termasuk kebijakan AIDevOpsAgentAccessPolicy terkelola dan kebijakan inline yang memungkinkan pembuatan peran terkait layanan Resource Explorer. Dibuat hanya ketika existing_agentspace_role_arn tidak diatur.

  • Peran IAM (DevOpsAgentRole-WebappAdmin-*) — Peran aplikasi operator dengan kebijakan AIDevOpsOperatorAppAccessPolicy terkelola untuk operasi agen. Dibuat hanya ketika existing_operator_role_arn tidak diatur.

  • Ruang agen (nama yang dapat dikonfigurasi) - Ruang agen pusat, dibuat menggunakan awscc_devopsagent_agent_space sumber daya. Termasuk konfigurasi aplikasi operator.

  • Asosiasi (AWS monitor) — Menautkan akun pemantauan ke ruang agen menggunakan awscc_devopsagent_association sumber 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. Termasuk kebijakan AIDevOpsAgentAccessPolicy terkelola dan kebijakan inline yang memungkinkan pembuatan peran terkait layanan Resource Explorer.

  • Fungsi Lambda (echo-service-tf) - Layanan contoh sederhana yang menggemakan peristiwa masukan kembali.

Pengaturan

Langkah 1: Kloning 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 AWS asosiasi di akun pemantauan Anda.

Gunakan skrip penerapan yang disediakan untuk penyiapan yang disederhanakan:

./deploy.sh

Skrip ini secara otomatis:

  • Memeriksa prasyarat (Terraform, CLI, kredensyal) AWS

  • Membuat terraform.tfvars dari contoh jika diperlukan

  • Menginisialisasi, 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 agent_space_arn nilainya. Anda akan membutuhkannya untuk mengkonfigurasi sumber daya akun layanan.

Langkah 3: Verifikasi penyebaran

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 memperpanjang pengaturan sehingga ruang agen dapat memantau sumber daya di AWS akun kedua (akun layanan). Ini melibatkan dua tindakan:

  1. Menambahkan AWS asosiasi sumber yang menunjuk ke akun layanan.

  2. Menerapkan peran IAM lintas akun dan fungsi Lambda gema ke dalam akun layanan.

penting

Anda harus menyelesaikan Bagian 1 sebelum melanjutkan. Sumber daya akun layanan memerlukan output penyebaran agent_space_arn dari Bagian 1.

Langkah 1: Konfigurasikan ID akun layanan

Diterraform.tfvars, setel 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 mencakup 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 kredensyal 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 peran asumsi:

provider "aws" { alias = "service" region = var.aws_region assume_role { role_arn = "arn:aws:iam::<SERVICE_ACCOUNT_ID>:role/OrganizationAccountAccessRole" } }

Langkah 4: Menyebarkan

Terapkan konfigurasi yang diperbarui:

terraform apply

Ini menciptakan sumber daya berikut di akun layanan:

  • Peran IAM (DevOpsAgentRole-SecondaryAccount-TF) yang mempercayai ruang agen di akun pemantauan

  • Sebuah echo Lambda function echo-service-tf () sebagai contoh layanan

Ini juga menciptakan AWS asosiasi sumber di akun pemantauan yang menautkan akun layanan.

Langkah 5: Verifikasi penyebaran

Uji layanan gema untuk mengonfirmasi bahwa fungsi Lambda berhasil diterapkan:

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,, Splunk ServiceNow, New Relic, GitLab, PagerDuty) dengan ruang agen. Integrasi ini memungkinkan AWS DevOps Agen untuk 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 merujuk 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 dalamMenghubungkan DataDog, yang tidak dapat diotomatiskan oleh Terraform. Daftarkan Datadog secara manual melalui halaman Penyedia Kemampuan di konsol.

Langkah 1: Konfigurasikan kredensyal integrasi

Tambahkan integrations blok keterraform.tfvars, hanya mengisi 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 setel secara instance_id eksplisit ke nama instance pendek (misalnya, "ven04972" - bukan lengkapinstance_url). Jika instance_id dihilangkan, asosiasi akan kembali keinstance_url, yang ditolak DevOps Agent API dengan file. 400 GeneralServiceException: instanceId '<url>' does not match the registered ServiceNow instance

Keamanan: integrations Variabel ditandaisensitive, sehingga nilainya disunting dari rencana dan menerapkan output. Jangan melakukan kredensyal nyata untuk. terraform.tfvars Untuk produksi, sumber AWS rahasia dari Secrets Manager atau AWS Systems Manager Parameter Store (misalnya, menggunakan data sumber) daripada plaintext.

Langkah 2: Menyebarkan

Terapkan konfigurasi:

terraform apply

Ini menciptakan pendaftaran dan asosiasi layanan 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 kredensyal 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 melewati 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 untuk mengambil peran dengan sts:AssumeRole

  • Memiliki kebijakan AIDevOpsAgentAccessPolicy terkelola terlampir

  • (Opsional) Memiliki kebijakan inline yang memungkinkan pembuatan peran terkait layanan Resource Explorer

Peran aplikasi operator

  • Kebijakan kepercayaan memungkinkan aidevops.amazonaws.com untuk mengambil peran dengan sts:AssumeRole dan sts:TagSession

  • Memiliki kebijakan AIDevOpsOperatorAppAccessPolicy terkelola terlampir

Konfigurasi

Dalamterraform.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 akan 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_sleep antara pembuatan peran IAM dan pembuatan Agent Space. Layanan DevOps Agen memvalidasi kebijakan kepercayaan peran operator selama pembuatan Ruang Agen, dan ini bisa gagal jika IAM belum sepenuhnya disebarkan. Jika Anda masih melihat kesalahan kebijakan kepercayaan, tunggu sebentar dan jalankan terraform apply lagi — peran IAM sudah ada dan aplikasi akan mengambil tempat yang ditinggalkannya.

ServiceNow instanceId does not matchkesalahan

  • Setel secara instance_id eksplisit di blok service_now integrasi ke nama instance pendek (misalnya,"ven04972"), bukan penuh. instance_url Lihat catatan di Bagian 3 di atas.

Asosiasi Dynatrace status: invalid

  • Jika terraform apply berhasil tetapi asosiasi yang dihasilkan melaporkan status = "invalid" (terlihat menggunakan aws devops-agent get-association atau konsol), ini menunjukkan Dynatrace menolak kredenal klien OAuth. Double-check client_id,client_secret, dan account_urn terhadap akun Dynatrace, bukan masalah konfigurasi Terraform.

Kesalahan izin

  • Verifikasi bahwa AWS kredensyal Anda memiliki izin IAM yang diperlukan untuk membuat peran dan kebijakan.

  • Periksa apakah ketentuan kebijakan kepercayaan sesuai dengan ID akun Anda.

Cross-account penerapan gagal

  • aws.servicePenyedia harus dikonfigurasi dengan kredensyal untuk akun layanan. Gunakan profil bernama atau blok peran asumsi.

  • Verifikasi bahwa agent_space_arn nilainya cocok dengan ARN dari output Bagian 1.

Jenis sumber daya Terraform tidak ditemukan

  • Verifikasi bahwa Anda memiliki versi awscc penyedia ~> 1.0 atau yang lebih baru. awscc_devopsagent_associationSumber daya awscc_devopsagent_agent_space dan sumber daya 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 mencadangkan informasi penting apa pun sebelum melanjutkan.

Pertimbangan keamanan

  • Konfigurasi Terraform membuat peran IAM dengan kebijakan kepercayaan yang hanya memungkinkan kepala aidevops.amazonaws.com layanan untuk mengambilnya.

  • Kebijakan kepercayaan mencakup ketentuan yang membatasi akses ke AWS akun spesifik Anda dan ARN ruang agen.

  • 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 ARN ruang agen tertentu.

Langkah selanjutnya

Setelah Anda menerapkan AWS DevOps Agen Anda menggunakan Terraform:

  1. Pelajari tentang berbagai kemampuan DevOps Agen dalam Panduan Pengguna AWS DevOps Agen.

  2. Pertimbangkan untuk mengintegrasikan penerapan Terraform ke dalam CI/CD saluran pipa Anda untuk manajemen infrastruktur otomatis.

Sumber daya tambahan