Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan CodePipeline untuk menyebarkan Terraform dan template CloudFormation
Pemberitahuan
AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Di DPA, Anda menggunakan blok bangunan untuk membuat akselerator AWS CodePipeline untuk Terraform dan IAc. CloudFormation Bagian ini menjelaskan hal berikut untuk kasus penggunaan ini:
-
Struktur pipa standar
-
Tahapan dan pekerjaan yang dapat digunakan kembali
-
Alat terintegrasi untuk pemindaian keamanan
Repositori DPA berisi folder untuk Terraform dan. CloudFormation
-
pipeline-modules — Folder ini berisi kode untuk menyebarkan struktur pipa standar.
-
berbagi - Folder ini berisi file ready-to-use buildspec untuk tahapan dan pekerjaan DPA.
Prasyarat
-
Aktif Akun AWS
-
Izin untuk menyediakan sumber daya menggunakan templat IAc
-
Izin untuk membuat AWS CodeCommit repositori dan komponen CodePipeline
Alat
-
cfn-lint
adalah linter yang memeriksa template CloudFormation YAMB atau JSON terhadap spesifikasi sumber daya.AWS CloudFormation Ini juga melakukan pemeriksaan lain, seperti memeriksa nilai yang valid untuk properti sumber daya dan kepatuhan terhadap praktik terbaik. -
cfn_nag
adalah alat open source yang mengidentifikasi potensi masalah keamanan dalam CloudFormation template dengan mencari pola. -
Checkov
adalah alat analisis kode statis yang memeriksa IAc untuk kesalahan konfigurasi keamanan dan kepatuhan. -
TFLint
adalah linter yang memeriksa kode Terraform untuk potensi kesalahan dan kepatuhan terhadap praktik terbaik. -
tfsec
adalah alat analisis kode statis yang memeriksa kode Terraform untuk potensi kesalahan konfigurasi.
Petunjuk
Buat CodeCommit repositori
-
Buat dua CodeCommit repositori terpisah sebagai berikut:
-
common-repo
— Repositori ini berisi pustaka bersama, file buildspec, dan dependensi. -
app-repo
— Repositori ini berisi Terraform atau CloudFormation template untuk menyebarkan infrastruktur Anda.
Untuk petunjuk, lihat Membuat AWS CodeCommit repositori.
-
-
Di
common-repo
repo, buat folder bernamashared
. Salin file buildspec dari Terraformatau folder CloudFormation bersama di repo GitHub DPA ke folder baru. Untuk petunjuk, lihat Membuat atau menambahkan file ke AWS CodeCommit repositori. -
Di
app-repo
repositori, buat folder bernama.entrypoint
Salin file dari folder Terraformatau CloudFormation entrypoint di repo GitHub DPA ke folder baru. Untuk informasi selengkapnya tentang file-file ini, lihatMemahami file JSON titik masuk. -
Tinjau direktori Terraform
atau CloudFormation contoh, lalu susun app-repo
folder Anda sesuai dengan contoh ini. Direktori ini berisi contoh penerapan instance Amazon Elastic Compute Cloud (Amazon EC2) atau bucket Amazon Simple Storage Service (Amazon S3). -
Lanjutkan ke salah satu dari dua bagian berikut:
Buat pipeline dan tentukan tahapan (Terraform)
-
Kloning repositori DevOps Pipeline Accelerator (DPA)
dari GitHub ke workstation lokal Anda. -
Di repositori kloning, arahkan ke folder.
aws-codepipeline/terraform/pipeline-modules
-
Dalam file terraform.tfvars, perbarui dan validasi status Terraform dan variabel khusus peran (IAM). AWS Identity and Access Management
-
Buat gambar Docker. Untuk petunjuk, lihat Pembuatan gambar Docker untuk menggunakan in CodeBuild
(GitHub). -
Perbarui
builder_image
variabel yang ditentukan dalam file terraform.tfvars. -
Masukkan perintah berikut. Ini menginisialisasi, mempratinjau, dan menyebarkan infrastruktur melalui Terraform.
terraform init terraform plan terraform apply
-
Masuk ke Akun AWS. Di CodePipeline konsol
, konfirmasikan bahwa pipeline baru telah dibuat. Catatan: Jika run pertama dalam
failed
keadaan, ulangi langkah sebelumnya. -
Ketika CodePipeline pipeline baru dibuat, peran IAM baru dibuat AWS CodeBuild secara otomatis. Nama peran yang dibuat secara otomatis ini berakhir
-codebuild-role
. Perbarui peran ini dengan izin yang diperlukan untuk menerapkan infrastruktur Anda.
Buat pipeline dan tentukan tahapan (CloudFormation)
-
Kloning repositori DevOps Pipeline Accelerator (DPA)
dari GitHub ke workstation lokal Anda. -
Di repositori kloning, arahkan ke folder.
aws-codepipeline/cloudformation/pipeline-modules
-
Terapkan template CloudFormation pipeline-cft.yaml. Berikut ini adalah parameter yang diperlukan yang harus Anda lewatkan ke tumpukan.
-
ArtifactsBucket
— Nama repo yang berisi artefak pipa yang akan diperbarui -
EcrDockerRepository
— Uniform resource identifier (URI) dari repositori Amazon ECR dengan tagimage
-
CodeCommitAppRepo
— Nama CodeCommit repositori yang berisi template -
CodeCommitBaseRepo
— Nama CodeCommit repositori yang berisi file bersama -
CodeCommitRepoBranch
— Nama cabang CodeCommit repositori -
SNSMailAddress
— Alamat email yang akan menerima pemberitahuan Amazon Simple Notification Service (Amazon SNS) tentang status pipeline
Untuk petunjuk, lihat Bekerja dengan tumpukan dalam CloudFormation dokumentasi.
-
-
Masuk ke akun AWS. Di CodePipeline konsol
, konfirmasikan bahwa pipeline baru telah dibuat. -
Ketika CodePipeline pipeline baru dibuat, peran IAM baru dibuat AWS CodeBuild secara otomatis. Nama peran yang dibuat secara otomatis ini berakhir
-codebuild-role
. Perbarui peran ini dengan izin yang diperlukan untuk menerapkan infrastruktur Anda.
Memahami file JSON titik masuk
File titik masuk Terraform
Ini adalah file konfigurasi utama. Dalam file ini, Anda dapat menyesuaikan dan mengaktifkan atau menonaktifkan panggung. Jika Anda menonaktifkan panggung, itu tidak menghapus atau menghapus panggung dari pipa. Sebaliknya, panggung dilewati selama runtime.
{ "build_stage_required" : "true", "test_stage_required" : "true", "predeploy_stage_required": "true", "deploy_stage_required": "true", "postdeploy_stage_required": "true", "destroy_stage_required": "true", "bucket":"tf-state-dpa", # S3 bucket used for Terraform backend "key":"terraform_test.tfstate", # S3 key to be used "region":"us-east-1", "dynamodb_table":"tf-state-dpa" # DynamoDB Table for Terraform backend }
CloudFormation file titik masuk
Ini adalah file konfigurasi utama. Dalam file ini, Anda menyesuaikan tahapan dan mengaktifkan atau menonaktifkannya. Jika Anda menonaktifkan panggung, itu tidak menghapus atau menghapus panggung dari pipa. Sebagai gantinya, pipeline melewatkan panggung selama runtime.
{ "init_stage_required" : "true", "test_stage_required" : "true", "createinfra_stage_required": "true", "envType" : "cloudformation", "stage_required" : "true", "cft_s3_bucket" : "pipeline-bucket", #S3 bucket from the destination account to keep CFT templates "stack_name" : "aws-cft-poc", #CloudFormation stack name "account" : "************", #Destination AWS account to deploy stack "roleName" : "codestack-poc-cross-account-role", #Cross-account IAM role name "region" : "us-east-1", "destroy_stack" : "false" #To destroy the provisioned stack, set this value to "true" }