

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

# Menggunakan GitLab CI/CD untuk menerapkan Terraform, AWS CDK, dan template CloudFormation
Menggunakan GitLab CI/CD

DPA berisi templat GitLab CI/CD yang Anda gunakan sebagai blok bangunan untuk menerapkan Terraform,, dan kode IAc. AWS Cloud Development Kit (AWS CDK) CloudFormation Bagian ini menjelaskan hal berikut untuk kasus penggunaan ini:
+ Struktur pipa standar
+ Tahapan dan pekerjaan yang dapat digunakan kembali
+ Aturan struktur pipa
+ Alat terintegrasi untuk pemindaian keamanan

## Prasyarat

+ Aktif Akun AWS
+ Izin untuk menyediakan sumber daya dengan menggunakan templat IAc
+ GitLab akun dengan semua jenis versi bebas lisensi, premium, atau perusahaan yang mendukung GitLab fitur CI/CD
+ GitLab pelari yang diperlukan dikonfigurasi untuk menjalankan pekerjaan dengan gambar Docker tertentu

## Alat

+ [cdk\$1nag](https://github.com/cdklabs/cdk-nag#readme) adalah alat open source yang menggunakan kombinasi paket aturan untuk memeriksa kepatuhan AWS CDK aplikasi terhadap praktik terbaik.
+ [AWS CloudFormation Linter (cfn-lint)](https://github.com/aws-cloudformation/cfn-lint) [adalah linter yang memeriksa template CloudFormation YAMB atau JSON terhadap spesifikasi sumber daya.AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html) Ini juga melakukan pemeriksaan lain, seperti memeriksa nilai yang valid untuk properti sumber daya dan kepatuhan terhadap praktik terbaik.
+ [cfn\$1nag](https://github.com/stelligent/cfn_nag) adalah alat open source yang mengidentifikasi potensi masalah keamanan dalam CloudFormation template dengan mencari pola.
+ [Checkov](https://www.checkov.io/1.Welcome/What%20is%20Checkov.html) adalah alat analisis kode statis yang memeriksa IAc untuk kesalahan konfigurasi keamanan dan kepatuhan.
+ [Menjaga Infrastruktur sebagai Kode Aman (KICS)](https://github.com/Checkmarx/kics) adalah alat open source yang mengidentifikasi kerentanan keamanan, masalah kepatuhan, dan kesalahan konfigurasi infrastruktur di awal siklus pengembangan.
+ [tfsec](https://github.com/aquasecurity/tfsec) adalah alat analisis kode statis yang memeriksa kode Terraform untuk potensi kesalahan konfigurasi.

## Petunjuk


1. Salin `gitlab-ci` direktori dan host ke grup GitLab organisasi Anda.

1. Pastikan bahwa aplikasi dapat mengakses grup GitLab organisasi yang berisi template DPA.

1. Untuk aplikasi, sertakan titik masuk khusus DPA untuk pipa sebagai berikut:
   + Terraform

     ```
       include:
           - project: <GITLAB_GROUP_PATH/<REPOSITORY_NAME>
             ref: main # best practise to create release tag and use the same 
             file: gitlab-ci/entrypoints/gitlab/terraform-infrastructure.yml
     ```
   + AWS CDK

     ```
       include:
           - project: <GITLAB_GROUP_PATH/<REPOSITORY_NAME>
             ref: main # best practise to create release tag and use the same 
             file: gitlab-ci/entrypoints/gitlab/cdk-infrastructure.yml
     ```
   + CloudFormation

     ```
       include:
           - project: <GITLAB_GROUP_PATH/<REPOSITORY_NAME>
             ref: main # best practise to create release tag and use the same 
             file: gitlab-ci/entrypoints/gitlab/cf-infrastructure.yml
     ```

1. Untuk aplikasi, tentukan variabel berikut untuk mengaktifkan penerapan `DEV` dan `INTEGRATION` lingkungan.

   ```
     AWS_REGION: us-east-2 # region where deployment should happen
     DEV_AWS_ACCOUNT: 123456789012 # Dev environment AWS account number
     DEV_ARN_ROLE: arn:aws:iam::123456789012:role/dpa-gitlab-access-role # IAM role ARN that will be used to provision resources in Dev 
     DEV_DEPLOY: "true" # true / false to enable deployment to DEV environment
     DEV_ENV: "dev" # Dev environment name
     INT_AWS_ACCOUNT: 123456789012 # Integration environment AWS account number
     INT_ARN_ROLE: arn:aws:iam::123456789012:role/dpa-gitlab-access-role # IAM role ARN that will be used to provision resources in Integration 
     INT_DEPLOY: "true" # true / false to enable deployment to Integration environment
     INT_ENV: "int" # Integration environment name
   ```