

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
<a name="getting-started-with-aws-devops-agent-getting-started-with-aws-devops-agent-using-terraform"></a>

## Ikhtisar
<a name="overview"></a>

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](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html) 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, lihat[Wilayah yang Didukung](about-aws-devops-agent-supported-regions.md).

## Prasyarat
<a name="prerequisites"></a>

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
<a name="what-this-guide-covers"></a>

Panduan ini dibagi menjadi dua 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.

## Sumber daya dibuat
<a name="resources-created"></a>

### Bagian 1: Memantau akun
<a name="part-1-monitoring-account"></a>
+ **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.
+ **Peran IAM** (`DevOpsAgentRole-WebappAdmin-*`) — Peran aplikasi operator dengan kebijakan `AIDevOpsOperatorAppAccessPolicy` terkelola untuk operasi agen.
+ **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)
<a name="part-2-service-account-optional"></a>
+ **Peran IAM** (`DevOpsAgentRole-SecondaryAccount-TF`) - Peran lintas akun 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
<a name="setup"></a>

### Langkah 1: Kloning repositori sampel
<a name="step-1-clone-the-sample-repository"></a>

```
git clone https://github.com/aws-samples/sample-aws-devops-agent-terraform.git
cd sample-aws-devops-agent-terraform
```

### Langkah 2: Konfigurasikan variabel
<a name="step-2-configure-variables"></a>

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
<a name="part-1-deploy-the-agent-space"></a>

Di bagian ini, Anda membuat ruang agen, peran IAM, aplikasi operator, dan AWS asosiasi di akun pemantauan Anda.

### Langkah 1: Terapkan dengan otomatisasi (disarankan)
<a name="step-1-deploy-with-automation-recommended"></a>

Gunakan skrip penerapan yang disediakan untuk penyiapan yang disederhanakan:

```
./deploy.sh
```

Script 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
<a name="step-2-record-the-outputs"></a>

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
<a name="step-3-verify-the-deployment"></a>

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
<a name="part-2-optional-add-cross-account-monitoring"></a>

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.

1. 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
<a name="step-1-configure-the-service-account-id"></a>

Di`terraform.tfvars`, setel ID akun layanan Anda:

```
service_account_id = "<YOUR_SERVICE_ACCOUNT_ID>"
```

### Langkah 2: Atur ruang agen ARN
<a name="step-2-set-the-agent-space-arn"></a>

Salin `agent_space_arn` nilai dari output Bagian 1 (Langkah 2) dan atur di`terraform.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`
<a name="step-3-configure-the-awsservice-provider"></a>

Di`main.tf`, konfigurasikan alias `aws.service` penyedia dengan kredensi 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
<a name="step-4-deploy"></a>

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
<a name="step-5-verify-the-deployment"></a>

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
```

## Pemecahan masalah
<a name="troubleshooting"></a>

**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.

**Kesalahan izin**
+ Verifikasi bahwa AWS kredensional Anda memiliki izin IAM yang diperlukan untuk membuat peran dan kebijakan.
+ Periksa apakah ketentuan kebijakan kepercayaan sesuai dengan ID akun Anda.

**Penerapan lintas akun gagal**
+ `aws.service`Penyedia harus dikonfigurasi dengan kredensi 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_association`Sumber daya `awscc_devopsagent_agent_space` dan sumber daya membutuhkan penyedia AWS Cloud Control.

## Pembersihan
<a name="cleanup"></a>

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
<a name="security-considerations"></a>
+ 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
<a name="next-steps"></a>

Setelah Anda menerapkan AWS DevOps Agen Anda menggunakan Terraform:

1. Pelajari tentang berbagai kemampuan DevOps Agen dalam [Panduan Pengguna AWS DevOps Agen](https://docs.aws.amazon.com/devopsagent/latest/userguide/).

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

## Sumber daya tambahan
<a name="additional-resources"></a>
+ [AWS DevOps Panduan Pengguna Agen](https://docs.aws.amazon.com/devopsagent/latest/userguide/)
+ [Contoh repositori Terraform](https://github.com/aws-samples/sample-aws-devops-agent-terraform)
+ [Panduan orientasi CLI](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html)