使用 Terraform 方案在 Amazon Elastic Compute Cloud 上部署 Amazon Linux 2 實例,並將其連線至 Azure Arc
本文提供使用提供的 Terraform 計劃來部署 Amazon Web Services (AWS) Amazon Elastic Compute Cloud (EC2) Linux 2 實例的指引,並將其連線為已啟用 Azure Arc 的伺服器資源。
必要條件
複製 Azure Arc Jumpstart 存放庫。
git clone https://github.com/microsoft/azure_arc.git
安裝或更新 Azure CLI。 Azure CLI 應該執行 2.7.0 版或更新版本。 使用
az --version
來檢查您目前的已安裝版本。產生 SSH 金鑰 (或使用現有的 SSH 金鑰 )
建立 Azure 服務主體。
若要將 AWS 虛擬機連線至 Azure Arc,則需要指派具有參與者角色的 Azure 服務主體。 若要建立它,請登入您的 Azure 帳戶,然後執行下列命令:
az login az account set -s <Your Subscription ID> az ad sp create-for-rbac -n "<Unique SP Name>" --role contributor --scopes "/subscriptions/<Your Subscription ID>"
例如:
az ad sp create-for-rbac -n "http://AzureArcAWS" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
輸出應該看起來像這樣:
{ "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "displayName": "http://AzureArcAWS", "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", "tenant": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
注意
強烈建議您將服務主體的範圍設定為特定的 Azure 訂用帳戶和資源群組。
建立 AWS 身分識別
為了讓 Terraform 在 AWS 中建立資源,我們必須建立具有適當許可權的新 AWS IAM 角色,並將 Terraform 設定為使用它。
登入 AWS 管理主控台
登入之後,選取 左上方的 [服務 ] 下拉式清單。 在 [安全性、身分識別和合規性] 下,選取 [IAM] 以存取身分識別和存取管理頁面
單擊左側功能表中的 [ 使用者 ],然後選取 [ 新增使用者 ] 以建立新的 IAM 使用者。
在 [ 新增使用者] 頁面上,將使用者命名為 ,
Terraform
然後選取 [ 以程序設計方式存取 ] 複選框,然後選取 [ 下一步]在 [設定許可權] 頁面上,選取 [直接附加現有的原則],然後選取 AmazonEC2FullAccess 旁的方塊,如螢幕快照所示,然後選取 [下一步]。
在 [ 標記 ] 頁面上,指派具有 索引鍵的
azure-arc-demo
標記,然後選取 [下一步 ] 以繼續進行檢閱頁面。確認所有專案都正確無誤,然後選取 [ 建立使用者]。
建立用戶之後,您會看到使用者的存取金鑰標識碼和秘密存取密鑰。 選取 [關閉] 之前,請先將這些值複製下來。 在下一個頁面上,您可以看到這看起來應該像的範例。 擁有這些金鑰之後,您就可以搭配 Terraform 使用這些金鑰來建立 AWS 資源。
設定 Terraform
在執行 Terraform 方案之前,您必須匯出計劃將使用的環境變數。 這些變數取決於您的 Azure 訂用帳戶和租使用者、Azure 服務主體,以及您剛才建立的 AWS IAM 使用者和金鑰。
使用 命令擷取您的 Azure 訂用帳戶標識碼和租用戶
az account list
標識碼。Terraform 方案會在 Microsoft Azure 和 AWS 中建立資源。 接著,它會在 AWS EC2 虛擬機上執行腳本,以安裝 Azure Arc 代理程式和所有必要的成品。 此腳本需要 AWS 和 Azure 環境的特定資訊。 使用適當的值編輯
scripts/vars.sh
和更新每個變數。TF_VAR_subscription_id
= 您的 Azure 訂用帳戶識別碼TF_VAR_client_id
= 您的 Azure 服務主體應用程式識別碼TF_VAR_client_secret
= 您的 Azure 服務主體密碼TF_VAR_tenant_id
= 您的 Azure 租使用者識別碼AWS_ACCESS_KEY_ID
= AWS 存取金鑰AWS_SECRET_ACCESS_KEY
= AWS 秘密金鑰
從 Azure CLI 瀏覽至
azure_arc_servers_jumpstart/aws/al2/terraform
複製存放庫的目錄。使用source命令執行
scripts/vars.sh
來匯出您編輯的環境變數,如下所示。 Terraform 需要設定這些項目,計劃才能正確執行。 請注意,此腳本也會在 Terraform 部署中從遠端在 AWS 虛擬機上自動執行。source ./scripts/vars.sh
請確定您的 SSH 金鑰可在 與中
~/.ssh
取得,並命名id_rsa.pub
為 與id_rsa
。 如果您遵循ssh-keygen
上述指南來建立密鑰,則應該已正確設定此金鑰。 如果沒有,您可能需要修改main.tf
,才能使用不同的路徑使用索引鍵。terraform init
執行命令,以下載 Terraform AzureRM 提供者。
部署
terraform apply --auto-approve
執行 命令,並等候計劃完成。 完成後,您將會在新的資源群組內部署 AWS Amazon Linux 2 EC2 實例,並將其連線為已啟用 Azure Arc 的新伺服器。開啟 Azure 入口網站 並流覽至
arc-servers-demo
資源群組。 在 AWS 中建立的虛擬機會顯示為資源。
半自動化部署(選擇性)
如您所注意到,執行的最後一個步驟是將 VM 註冊為已啟用 Azure Arc 的新伺服器資源。
如果您想要示範/控制實際的註冊程式,請執行下列動作:
在腳本範本範本中
install_arc_agent.sh.tmpl
,將run connect command
區段批注化並儲存盤案。執行
terraform output
以取得 AWS VM 的公用 IP。使用
ssh ec2-user@xx.xx.xx.xx
SSH 連線到 VM,其中xx.xx.xx.xx
是主機 IP。匯出 中的所有環境變數
vars.sh
執行以下命令:
azcmagent connect --service-principal-id $TF_VAR_client_id --service-principal-secret $TF_VAR_client_secret --resource-group "Arc-Servers-Demo" --tenant-id $TF_VAR_tenant_id --location "westus2" --subscription-id $TF_VAR_subscription_id
完成時,您的 VM 將會向 Azure Arc 註冊,並透過 Azure 入口網站 顯示在資源群組中。
刪除部署
若要刪除您在此示範中建立的所有資源,請使用 terraform destroy --auto-approve
命令,如下所示。
或者,您可以從 AWS 控制台終止 AWS EC2 實例,直接刪除它。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應