Use um plano Terraform para implantar uma instância do Amazon Web Services Amazon Elastic Compute Cloud e conectá-la ao Azure Arc

Este artigo fornece orientação para usar o plano Terraform fornecido para implantar uma instância do Amazon Web Services (AWS) Amazon Elastic Compute Cloud (EC2) e conectá-la como um recurso de servidor habilitado para Azure Arc.

Pré-requisitos

  1. Clone o repositório do Azure Arc Jumpstart.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Instale ou atualize a CLI do Azure para a versão 2.7 e superior. Use o seguinte comando para verificar sua versão instalada atual.

    az --version
    
  3. Gerar chave SSH (ou usar chave SSH existente)

  4. Crie uma conta gratuita da AWS

  5. Instalar Terraform >= 0.12

  6. Crie uma entidade de serviço do Azure.

    Para conectar a máquina virtual da AWS ao Azure Arc, é necessária uma entidade de serviço do Azure atribuída à função de Colaborador. Para criá-lo, entre em sua conta do Azure e execute o seguinte comando. Você também pode executar esse comando no Azure Cloud Shell.

    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>"
    

    Por exemplo:

    az ad sp create-for-rbac -n "http://AzureArcAWS" --role contributor --scopes "/subscriptions/00000000-0000-0000-0000-000000000000"
    

    A saída deverá ter o seguinte aspeto:

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

    Nota

    É altamente recomendável que você defina o escopo da entidade de serviço para uma assinatura específica do Azure e um grupo de recursos.

Criar uma identidade da AWS

Para que o Terraform crie recursos na AWS, precisaremos criar uma nova função do AWS IAM com as permissões apropriadas e configurar o Terraform para usá-la.

  1. Faça login no console de gerenciamento da AWS

  2. Depois de entrar, selecione a lista suspensa Serviços no canto superior esquerdo. Em Segurança, identidade e conformidade, selecione IAM para acessar a página de gerenciamento de identidade e acesso

    A screenshot of an AWS cloud console.

    A screenshot of identity and access management in the AWS cloud console.

  3. Clique em Usuários no menu à esquerda e selecione Adicionar usuário para criar um novo usuário do IAM.

    A screenshot of creating a new user in an AWS cloud console.

  4. Na página Adicionar Usuário, nomeie o usuário Terraform e marque a caixa de seleção Acesso Programático e selecione Avançar.

    Second screenshot of creating a new user in an AWS cloud console.

  5. Na página Definir permissões, selecione Anexar políticas existentes diretamente e, em seguida, selecione a caixa ao lado de AmazonEC2FullAccess, como visto na captura de tela, e selecione Avançar.

    Third screenshot of creating a new user in an AWS cloud console.

  6. Na página Etiquetas, atribua uma etiqueta com uma chave de azure-arc-demo e selecione Seguinte para prosseguir para a página Rever.

    A screenshot of tags in an AWS cloud console.

  7. Verifique se tudo está correto e selecione Criar usuário quando estiver pronto.

    Fourth screenshot of creating a user in an AWS cloud console.

  8. Depois que o usuário for criado, você verá o ID da chave de acesso e a chave de acesso secreta do usuário. Copie esses valores antes de selecionar Fechar. Na página seguinte, você pode ver um exemplo de como isso deve ser. Depois de ter essas chaves, você poderá usá-las com o Terraform para criar recursos da AWS.

    A screenshot of creating a user successfully in an AWS cloud console.

Configurar o Terraform

Antes de executar o plano Terraform, você deve exportar as variáveis de ambiente que serão usadas pelo plano. Essas variáveis são baseadas em sua assinatura e locatário do Azure, na entidade de serviço do Azure e no usuário e nas chaves do AWS IAM que você acabou de criar.

  1. Recupere sua ID de assinatura do Azure e ID de locatário usando o az account list comando.

  2. O plano Terraform cria recursos no Microsoft Azure e na AWS. Em seguida, ele executa um script em uma máquina virtual do AWS EC2 para instalar o agente do Azure Arc e todos os artefatos necessários. Esse script requer determinadas informações sobre seus ambientes AWS e Azure. Edite scripts/vars.sh e atualize cada uma das variáveis com os valores apropriados.

    • TF_VAR_subscription_id = sua ID de assinatura do Azure
    • TF_VAR_client_id = sua ID do aplicativo principal de serviço do Azure
    • TF_VAR_client_secret = sua senha principal de serviço do Azure
    • TF_VAR_tenant_id = sua ID de locatário do Azure
    • AWS_ACCESS_KEY_ID = Chave de acesso da AWS
    • AWS_SECRET_ACCESS_KEY = Chave secreta da AWS
  3. Na CLI do Azure, navegue até o azure_arc_servers_jumpstart/aws/ubuntu/terraform diretório do repositório clonado.

  4. Exporte as variáveis de ambiente editadas executando scripts/vars.sh com o comando source, conforme mostrado abaixo. Terraform requer que estes sejam definidos para que o plano seja executado corretamente. Observe que esse script também será executado automaticamente remotamente na máquina virtual da AWS como parte da implantação do Terraform.

    source ./scripts/vars.sh
    
  5. Certifique-se de que suas chaves SSH estão disponíveis em ~/.ssh e nomeadas id_rsa.pub e id_rsa. Se você seguiu o ssh-keygen guia acima para criar sua chave, então isso já deve estar configurado corretamente. Caso contrário, talvez seja necessário modificar main.tf para usar uma chave com um caminho diferente.

  6. Execute o comando que baixará o terraform init provedor Terraform AzureRM.

    A screenshot of the terraform init command.

Implementação

  1. Execute o terraform apply --auto-approve comando e aguarde a conclusão do plano. Após a conclusão, você terá uma instância do AWS Amazon Linux 2 EC2 implantada e conectada como um novo servidor habilitado para Azure Arc dentro de um novo grupo de recursos.

  2. Abra o portal do Azure e navegue até o arc-aws-demo grupo de recursos. A máquina virtual criada na AWS ficará visível como um recurso.

    A screenshot showing an Azure Arc-enabled server in the Azure portal.

    A screenshot of AWS console displaying EC2 instances.

Implantação semiautomatizada (opcional)

Como você deve ter notado, a última etapa da execução é registrar a VM como um novo recurso de servidor habilitado para Azure Arc.

A screenshot of the azcmagent connect command.

Se você quiser demonstrar/controlar o processo de registro real, faça o seguinte:

  1. No modelo de install_arc_agent.sh.tmpl script, comente a run connect command seção e salve o arquivo.

    A screenshot showing main.tf being commented out to disable automatic onboarding of an Azure Arc agent.

  2. Obtenha o IP público da VM da AWS executando terraform outputo .

    A screenshot of output from Terraform.

  3. SSH a VM usando o onde xx.xx.xx.xx é o ssh ubuntu@xx.xx.xx.xx IP do host.

    A screenshot of an SSH key connecting to an EC2 server.

  4. Exporte todas as variáveis de ambiente em vars.sh.

    A screenshot of exported environment variables in vars.sh.

  5. Execute o seguinte comando:

    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
    

    Another screenshot of the azcmagent connect command.

  6. Quando concluída, sua VM será registrada no Azure Arc e visível no grupo de recursos por meio do portal do Azure.

Excluir a implantação

Para excluir todos os recursos que você criou como parte desta demonstração, use o terraform destroy --auto-approve comando como mostrado abaixo.

A screenshot of the terraform destroy command.

Como alternativa, você pode excluir a instância do AWS EC2 diretamente encerrando-a do console da AWS. Observe que levará alguns minutos para que a instância seja realmente removida.

A screenshot of how to terminate an instance in the AWS console.

Se você excluir a instância manualmente, então você também deve excluir *./scripts/install_arc_agent.sh, que é criado pelo plano Terraform.