您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

使用 Terraform 计划部署 Amazon Web Services Amazon 弹性计算云实例,并将其连接到 Azure Arc

本文提供了有关使用提供的 Terraform 计划部署 AMAZON WEB SERVICES (AWS) Amazon 弹性计算云 (EC2) 实例并将其连接为启用了 Azure Arc 的服务器资源的指南。

先决条件

  1. 克隆 Azure Arc Jumpstart 存储库。

    git clone https://github.com/microsoft/azure_arc.git
    
  2. 安装或 Azure CLI 更新到版本2.7 及更高版本。 使用以下命令检查当前安装的版本。

    az --version
    
  3. 生成 ssh 密钥 (或使用现有 ssh 密钥)

  4. 创建免费的 AWS 帐户

  5. 安装 Terraform >= 0.12

  6. 创建 Azure 服务主体。

    若要将 AWS 虚拟机连接到 Azure Arc,需要具有 "参与者" 角色分配的 Azure 服务主体。 若要创建它,请登录到 Azure 帐户,并运行以下命令。 你还可以在 Azure Cloud Shell中运行此命令。

    az login
    az ad sp create-for-rbac -n "<Unique SP Name>" --role contributor
    

    例如:

    az ad sp create-for-rbac -n "http://AzureArcAWS" --role contributor
    

    输出应如下所示:

    {
      "appId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "displayName": "AzureArcAWS",
      "name": "http://AzureArcAWS",
      "password": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "tenant": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    }
    

    备注

    我们强烈建议你将服务主体的范围限定为特定的 Azure 订阅和资源组

创建 AWS 标识

为了使 Terraform 能够在 AWS 中创建资源,我们需要创建一个具有适当权限的新 AWS IAM 角色,并将 Terraform 配置为使用该角色。

  1. 登录到 AWS 管理控制台

  2. 登录后,选择左上角的 " 服务 " 下拉列表。 在 " 安全、标识和符合性" 下,选择 " IAM " 以访问 " 标识和访问管理" 页

    AWS cloud 控制台的屏幕截图。

    AWS cloud 控制台中的标识和访问管理的屏幕截图。

  3. 单击左侧菜单中的 " 用户 ",然后选择 " 添加用户 " 以创建新的 IAM 用户。

    在 AWS cloud 控制台中创建新用户的屏幕截图。

  4. 在 " 添加用户 " 页上,为用户命名 Terraform 并选择 " 编程访问 " 复选框,然后选择 " 下一步"。

    在 AWS cloud 控制台中创建新用户的第二个屏幕截图。

  5. 在 " 设置权限 " 页面上,选择 " 直接附加现有策略 ",然后选中 " AmazonEC2FullAccess " 旁边的框,如屏幕截图中所示,然后选择 " 下一步"。

    在 AWS cloud 控制台中创建新用户的第三个屏幕截图。

  6. 在 " 标记 " 页上,分配带有键的标记 azure-arc-demo ,然后选择 " 下一步 " 以转到 " 审阅 " 页。

    AWS 云控制台中标记的屏幕截图。

  7. 确认所有内容都正确,然后选择 "准备就绪时 创建用户 "。

    在 AWS cloud 控制台中创建用户的第四个屏幕截图。

  8. 创建用户后,你将看到用户的 "访问密钥 ID" 和 "密钥访问密钥"。 在选择 " 关闭" 之前复制这些值。 在下一页上,可以看到有关此内容的示例。 获得这些密钥后,即可将其与 Terraform 一起使用,以创建 AWS 资源。

    在 AWS cloud 控制台中成功创建用户的屏幕截图。

配置 Terraform

在执行 Terraform 计划之前,必须导出将由计划使用的环境变量。 这些变量基于你的 Azure 订阅和租户、Azure 服务主体,以及你刚刚创建的 AWS IAM 用户和密钥。

  1. 使用命令检索 Azure 订阅 ID 和租户 ID az account list

  2. Terraform 计划在 Microsoft Azure 和 AWS 中都创建了资源。 然后,它将在 AWS EC2 虚拟机上执行脚本,以安装 Azure Arc 代理和所有必要的项目。 此脚本需要某些有关 AWS 和 Azure 环境的信息。 scripts/vars.sh用适当的值编辑和更新每个变量。

    • TF_VAR_subscription_id = 你的 Azure 订阅 ID
    • TF_VAR_client_id = Azure 服务主体应用 ID
    • TF_VAR_client_secret = 你的 Azure 服务主体密码
    • TF_VAR_tenant_id = 你的 Azure 租户 ID
    • AWS_ACCESS_KEY_ID = AWS 访问密钥
    • AWS_SECRET_ACCESS_KEY = AWS 密钥
  3. 在 Azure CLI 中,导航到克隆的存储库的 azure_arc_servers_jumpstart/aws/ubuntu/terraform 目录。

  4. 使用 source 命令导出你编辑的环境变量,如下 scripts/vars.sh 所示。 Terraform 要求对其进行设置,以便计划正确执行。 请注意,在 Terraform 部署过程中,此脚本还会在 AWS 虚拟机上以远程方式自动执行。

    source ./scripts/vars.sh
    
  5. 确保在 ~/.ssh 中提供 SSH 密钥,并将其命名为 id_rsa.pubid_rsa 。 如果你按照上面的 ssh-ssh-keygen 指南创建你的密钥,则应该已正确设置此项。 如果没有,则可能需要修改 main.tf 才能使用具有不同路径的密钥。

  6. 运行 terraform init 命令,该命令将下载 Terraform AzureRM 提供程序。

    "Terraform init" 命令的屏幕截图。

部署

  1. 运行 terraform apply --auto-approve 命令并等待计划完成。 完成后,将会在新的资源组中部署 AWS Amazon Linux 2 EC2 实例,并将其作为新的启用了 Azure Arc 的服务器进行连接。

  2. 打开 Azure 门户并导航到 arc-aws-demo 资源组。 在 AWS 中创建的虚拟机将显示为资源。

    显示 Azure 门户中启用了 Azure Arc 的服务器的屏幕截图。

    显示 EC2 实例的 AWS 控制台的屏幕截图。

半自动部署 (可选)

正如您可能已经注意到的,运行的最后一步是将 VM 注册为启用了新的 Azure Arc 服务器资源。

"Azcmagent connect" 命令的屏幕截图。

如果要演示/控制实际注册过程,请执行以下操作:

  1. install_arc_agent.sh.tmpl 脚本模板中,注释掉 run connect command 部分并保存文件。

    屏幕截图显示 "main.tf" 被注释掉,以禁用自动载入 Azure Arc 代理。

  2. 通过运行获取 AWS VM 的公共 IP terraform output

    Terraform 输出的屏幕截图。

  3. 使用的 SSH VM, ssh ubuntu@xx.xx.xx.xx 其中 xx.xx.xx.xx 是主机 IP。

    连接到 EC2 服务器的 SSH 密钥的屏幕截图。

  4. 导出中的所有环境变量 vars.sh

    "Vars.sh" 中已导出环境变量的屏幕截图。

  5. 运行以下命令:

    azcmagent connect --service-principal-id $TF_VAR_client_id --service-principal-secret $TF_VAR_client_secret --resource-group "arc-aws-demo" --tenant-id $TF_VAR_tenant_id --location "westus2" --subscription-id $TF_VAR_subscription_id
    

    "Azcmagent connect" 命令的另一个屏幕截图。

  6. 完成后,VM 将注册到 Azure Arc,并通过 Azure 门户在资源组中可见。

删除部署

若要删除在此演示中创建的所有资源,请使用 terraform destroy --auto-approve 命令,如下所示。

"Terraform 销毁" 命令的屏幕截图。

或者,你可以通过从 AWS 控制台中终止 AWS EC2 实例来直接删除该实例。 请注意,实际删除实例需要几分钟时间。

如何在 AWS 控制台中终止实例的屏幕截图。

如果手动删除实例,则还应删除 *./scripts/install_arc_agent.sh 由 Terraform 计划创建的实例。