Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Validasi Account Factory untuk kode Terraform (AFT) secara lokal
Alexandru Pop dan Michal Gorniak, Amazon Web Services
Ringkasan
Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Pola ini menunjukkan cara menguji kode HashiCorp Terraform secara lokal yang dikelola oleh AWS Control Tower Account Factory for Terraform (AFT). Terraform adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud. AFT menyiapkan pipeline Terraform yang membantu Anda menyediakan dan menyesuaikan beberapa Akun AWS di. AWS Control Tower
Selama pengembangan kode, akan sangat membantu untuk menguji infrastruktur Terraform Anda sebagai kode (IAc) secara lokal, di luar pipa AFT. Pola ini menunjukkan bagaimana melakukan hal berikut:
Ambil salinan lokal kode Terraform yang disimpan di AWS CodeCommit repositori di akun manajemen AFT Anda.
Simulasikan pipeline AFT secara lokal dengan menggunakan kode yang diambil.
Prosedur ini juga dapat digunakan untuk menjalankan perintah Terraform yang bukan merupakan bagian dari pipeline AFT normal. Misalnya, Anda dapat menggunakan metode ini untuk menjalankan perintah sepertiterraform validate,terraform plan,terraform destroy, danterraform import.
Prasyarat dan batasan
Prasyarat
Lingkungan AWS multi-akun aktif yang menggunakan AWS Control Tower
Lingkungan AFT yang sepenuhnya digunakan
AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi
AWS CLI pembantu kredensi untuk AWS CodeCommit, diinstal dan dikonfigurasi
Python 3.x
Git
, diinstal dan dikonfigurasi pada mesin lokal Anda git-remote-commitutilitas, diinstal dan dikonfigurasiTerraform
, diinstal dan dikonfigurasi (versi paket Terraform lokal harus cocok dengan versi yang digunakan dalam penerapan AFT)
Batasan
Pola ini tidak mencakup langkah-langkah penerapan yang diperlukan untuk AWS Control Tower, AFT, atau modul Terraform tertentu.
Output yang dihasilkan secara lokal selama prosedur ini tidak disimpan di log runtime pipeline AFT.
Arsitektur
Tumpukan teknologi target
Infrastruktur AFT dikerahkan dalam penerapan AWS Control Tower
Terraform
Git
AWS CLI versi 2
Otomatisasi dan skala
Pola ini menunjukkan cara memanggil kode Terraform secara lokal untuk penyesuaian akun global AFT dalam satu yang dikelola AFT. Akun AWS Setelah kode Terraform Anda divalidasi, Anda dapat menerapkannya ke akun yang tersisa di lingkungan multi-akun Anda. Untuk informasi selengkapnya, lihat Memanggil ulang penyesuaian dalam dokumentasi. AWS Control Tower
Anda juga dapat menggunakan proses serupa untuk menjalankan kustomisasi akun AFT di terminal lokal. Untuk memanggil kode Terraform secara lokal dari penyesuaian akun AFT, kloning repositori alih-alih aft-account-customizationsrepositori dari akun manajemen AFT Anda. aft-global-account-customizations CodeCommit
Alat
Layanan AWS
AWS Control Towermembantu Anda mengatur dan mengatur lingkungan AWS multi-akun, mengikuti praktik terbaik preskriptif.
AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
Layanan lainnya
HashiCorp Terraform
adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud. Git
adalah sistem kontrol versi terdistribusi open-source.
Kode
Berikut ini adalah contoh skrip bash yang dapat digunakan untuk menjalankan kode Terraform secara lokal yang dikelola oleh AFT. Untuk menggunakan skrip, ikuti instruksi di bagian Epik dari pola ini.
#! /bin/bash # Version: 1.1 2022-06-24 Unsetting AWS_PROFILE since, when set, it interferes with script operation # 1.0 2022-02-02 Initial Version # # Purpose: For use with AFT: This script runs the local copy of TF code as if it were running within AFT pipeline. # * Facilitates testing of what the AFT pipline will do # * Provides the ability to run terraform with custom arguments (like 'plan' or 'move') which are currently not supported within the pipeline. # # © 2021 Amazon Web Services, Inc. or its affiliates. All Rights Reserved. # This AWS Content is provided subject to the terms of the AWS Customer Agreement # available at http://aws.amazon.com/agreement or other written agreement between # Customer and either Amazon Web Services, Inc. or Amazon Web Services EMEA SARL or both. # # Note: Arguments to this script are passed directly to 'terraform' without parsing nor validation by this script. # # Prerequisites: # 1. local copy of ct GIT repositories # 2. local backend.tf and aft-providers.tf filled with data for the target account on which terraform is to be run # Hint: The contents of above files can be obtain from the logs of a previous execution of the AFT pipeline for the target account. # 3. 'terraform' binary is available in local PATH # 4. Recommended: .gitignore file containing 'backend.tf', 'aft_providers.tf' so the local copy of these files are not pushed back to git readonly credentials=$(aws sts assume-role \ --role-arn arn:aws:iam::$(aws sts get-caller-identity --query "Account" --output text ):role/AWSAFTAdmin \ --role-session-name AWSAFT-Session \ --query Credentials ) unset AWS_PROFILE export AWS_ACCESS_KEY_ID=$(echo $credentials | jq -r '.AccessKeyId') export AWS_SECRET_ACCESS_KEY=$(echo $credentials | jq -r '.SecretAccessKey') export AWS_SESSION_TOKEN=$(echo $credentials | jq -r '.SessionToken') terraform "$@"
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Simpan kode contoh sebagai file lokal. |
| Administrator AWS |
Jadikan kode contoh dapat dijalankan. | Buka jendela terminal dan autentikasi ke akun manajemen AWS AFT Anda dengan melakukan salah satu hal berikut:
catatanOrganisasi Anda mungkin juga memiliki alat khusus untuk memberikan kredensil otentikasi ke lingkungan Anda. AWS | Administrator AWS |
Verifikasi akses ke akun manajemen AFT dengan benar Wilayah AWS. | pentingPastikan Anda menggunakan sesi terminal yang sama dengan yang Anda autentikasi ke akun manajemen AFT Anda.
| Administrator AWS |
Buat direktori lokal baru untuk menyimpan kode repositori AFT. | Dalam sesi terminal yang sama, jalankan perintah berikut:
| Administrator AWS |
Kloning kode repositori AFT jarak jauh. |
| Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buka pipeline AFT yang dijalankan sebelumnya dan salin file konfigurasi Terraform ke folder lokal. | catatanFile
Contoh pernyataan backend.tf yang dibuat secara otomatis
catatan
| Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Terapkan perubahan konfigurasi Terraform yang ingin Anda validasi. |
| Administrator AWS |
Jalankan |
penting
| Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tambahkan referensi ke | Tambahkan
catatanMemindahkan file ke | Administrator AWS |
Komit dan dorong perubahan kode Anda ke repositori AFT jarak jauh. |
pentingPerubahan kode yang Anda perkenalkan dengan mengikuti prosedur ini hingga titik ini diterapkan Akun AWS hanya untuk satu. | Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Luncurkan perubahan ke semua akun Anda yang dikelola oleh AFT. | Untuk meluncurkan perubahan ke beberapa Akun AWS yang dikelola oleh AFT, ikuti petunjuk di Re-invoke kustomisasi dalam dokumentasi. AWS Control Tower | Administrator AWS |