本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在本機驗證地形表單 (AFT) 程式碼的 Account Factory
由亞歷山大流行(AWS)和米哈爾·戈爾尼亞克(AWS)創建
環境:生產 | 技術:基礎設施 DevOps; 現代化; DevelopmentAndTesting | 工作負載:開源 |
AWS 服務:AWS Control Tower |
Summary
此模式顯示如何在本機測試 HashiCorp 由 AWS Control Tower Account Factory 管理的地形表單程式碼 (AFT)。Terraform 是一種開放原始碼基礎結構即程式碼 (IaC) 工具,可協助您使用程式碼來佈建和管理雲端基礎架構和資源。AFT 設定 Terraform 管道,協助您在 AWS 控制塔中佈建和自訂多個 AWS 帳戶。
在程式碼開發期間,在 AFT 管線之外,在本機測試 Terraform 基礎結構做為程式碼 (IaC) 會很有幫助。此模式顯示了如何執行以下操作:
擷取存放在 AFT 管理帳戶中 AWS 儲存 CodeCommit 庫中的 Terraform 程式碼的本機副本。
使用擷取的程式碼在本機模擬 AFT 管線。
此程序也可以用來執行不屬於一般 AFT 管線一部分的 Terraform 命令。例如,您可以使用此方法執行命令terraform validate
,例如terraform plan
、terraform destroy
、和terraform import
。
先決條件和限制
先決條件
使用 AWS 控制塔的有效 AWS
多帳戶環境 完全部署的 AFT 環境
Python 3. x
Git
,在本地計算機上安裝和配置 git-remote-commit 公用程式, 已安裝和設定
地形
,安裝和配置(本地 Terraform 軟件包版本必須與 AFT 部署中使用的版本匹配)
限制
此模式不涵蓋 AWS Control Tower、AFT 或任何特定 Terraform 模組所需的部署步驟。
在此程序期間本機產生的輸出不會儲存在 AFT 管線執行階段記錄中。
架構
目標技術堆疊
在 AWS Control Tower 部署中部署的 AFT 基礎設施
地形
Git
AWS CLI 第 2 版
自動化和規模
此模式顯示如何在單一 AFT 受管 AWS 帳戶中針對 AFT 全球帳戶自訂呼叫 Terraform 程式碼。驗證 Terraform 代碼後,您可以將其套用至多帳戶環境中的剩餘帳戶。如需詳細資訊,請參閱 AWS Control Tower 文件中的重新叫用自訂。
您也可以使用類似的程序,在本機終端機中執行 AFT 帳戶自訂。若要從 AFT 帳戶自訂本機叫用 Terraform 程式碼,請從 AFT 管理帳戶複製aft-global-account-customizations儲存aft-account-customizations 庫而非儲存庫。 CodeCommit
工具
AWS 服務
AWS Control Tower 可協助您按照規範的最佳實務來設定和管理 AWS 多帳戶環境。
AWS Command Line Interface (AWS CLI) (AWS CLI) 是一種開放原始碼工具,可協助您透過命令列殼層中的命令與 AWS 服務互動。
其他服務
HashiCorp Terraform
是一種開放原始碼基礎結構即程式碼 (IaC) 工具,可協助您使用程式碼來佈建和管理雲端基礎架構和資源。 Git
是一個開放原始碼的分散式版本控制系統。
Code
以下是一個可用於本地運行由 AFT 管理的 Terraform 代碼的示例 bash 腳本。若要使用指令碼,請遵循此模式「Epics」一節中的指示。
#! /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 "$@"
史诗
任務 | 描述 | 所需技能 |
---|---|---|
將範例程式碼儲存為本機檔案。 |
| AWS 管理員 |
使範例程式碼可執行。 | 執行下列其中一個動作,開啟終端機視窗並在 AWS AFT 管理帳戶中進行驗證:
注意:您的組織可能也有自訂工具,可為 AWS 環境提供身份驗證登入資料。 | AWS 管理員 |
在正確的 AWS 區域中驗證對 AFT 管理帳戶的存取權。 | 重要事項:請確定您使用的終端機工作階段與驗證 AFT 管理帳戶相同。
| AWS 管理員 |
建立新的本機目錄以儲存 AFT 儲存庫程式碼。 | 在相同的終端工作階段中,執行下列命令:
| AWS 管理員 |
克隆遠程 AFT 存儲庫代碼。 |
| AWS 管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
開啟先前執行的 AFT 管線,並將 Terraform 組態檔案複製到本機資料夾。 | 注意:AFT 管道在本地運行需要在此史詩中創建的後端 .tf 和後提供程序 .tf 配置文件。這些檔案會在雲端式 AFT 管線中自動建立,但必須手動建立,管線才能在本機執行。在本機執行 AFT 管道需要一組檔案,代表在單一 AWS 帳戶內執行管道。
自動生成的後端 .tf 語句示例
注意: | AWS 管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
實作您要驗證的 Terraform 組態變更。 |
| AWS 管理員 |
執行 ct_terraform.sh 指令碼並檢閱輸出。 |
重要:
| AWS 管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
將後端 .tf 和後端提供者 .tf 檔案的參考資料新增到 .gitignore 檔案中。 | 執行下列指令,將您建立的
注意:將文件移動到文 | AWS 管理員 |
將您的代碼更改提交並推送到遠程 AFT 存儲庫。 |
重要事項:您遵循此程序所引入的程式碼變更,直到此時間僅套用至一個 AWS 帳戶為止。 | AWS 管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
對 AFT 管理的所有帳戶推出更改。 | 若要對 AFT 管理的多個 AWS 帳戶進行變更,請按照 AWS Control Tower 文件中重新叫用自訂項目中的指示進行操作。 | AWS 管理員 |