Use um plano Terraform para implementar um amazon Web Services Amazon Elastic Compute Cloud instância e conectá-lo ao Azure ArcUse a Terraform plan to deploy an Amazon Web Services Amazon Elastic Compute Cloud instance and connect it to Azure Arc

Este artigo fornece orientações para a utilização do plano Terraform fornecido para implementar uma instância amazon Web Services (AWS) Amazon Elastice Cloud (EC2) e conectá-lo como um recurso de servidor ativado pelo Arco Azure.This article provides guidance for using the provided Terraform plan to deploy an Amazon Web Services (AWS) Amazon Elastic Compute Cloud (EC2) instance and connect it as an Azure Arc enabled server resource.

Pré-requisitosPrerequisites

  1. Clone o repositório Azure Arc Jumpstart.Clone the Azure Arc Jumpstart repository.

    git clone https://github.com/microsoft/azure_arc.git
    
  2. Instale ou atualize o CLI do Azure para a versão 2.7 e superior.Install or update Azure CLI to version 2.7 and above. Utilize o seguinte comando para verificar a sua versão instalada atual.Use the following command to check your current installed version.

    az --version
    
  3. Gerar chave SSH (ou utilizar a chave SSH existente)Generate SSH key (or use existing SSH key)

  4. Criar conta AWS gratuitaCreate free AWS account

  5. Instalar >Terraform = 0,12Install Terraform >= 0.12

  6. Criar um diretor de serviço Azure.Create an Azure service principal.

    Para ligar a máquina virtual AWS ao Azure Arc, é necessário um responsável de serviço Azure atribuído à função Contribuinte.To connect the AWS virtual machine to Azure Arc, an Azure service principal assigned with the Contributor role is required. Para criá-lo, inscreva-se na sua conta Azure e execute o seguinte comando.To create it, sign in to your Azure account and run the following command. Também pode executar este comando em Azure Cloud Shell.You can also run this command in Azure Cloud Shell.

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

    Por exemplo:For example:

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

    A saída deve ser assim:Output should look like this:

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

    Nota

    Recomendamos vivamente que se encate o principal do serviço a um grupo específico de subscrição e recursos da Azure.We highly recommend that you scope the service principal to a specific Azure subscription and resource group.

Criar uma identidade AWSCreate an AWS identity

Para que a Terraform crie recursos em AWS, precisamos de criar uma nova função AWS IAM com permissões adequadas e configurar a Terraform para a utilizar.In order for Terraform to create resources in AWS, we will need to create a new AWS IAM role with appropriate permissions and configure Terraform to use it.

  1. Inscreva-se na consola de gestão AWSSign in to the AWS management console

  2. Depois de iniciar a sessão, selecione o dropdown dos Serviços no topo esquerdo.After signing in, select the Services dropdown in the top left. Sob Segurança, Identidade e Conformidade, selecione IAM para aceder à página de gestão de identidade e acessoUnder Security, Identity, and Compliance, select IAM to access the identity and access management page

    Uma imagem de uma consola de nuvem AWS.

    Uma imagem de gestão de identidade e acesso na consola de nuvem AWS.

  3. Clique nos Utilizadores a partir do menu esquerdo e, em seguida, selecione Adicionar utilizador para criar um novo utilizador IAM.Click on Users from the left menu, and then select Add user to create a new IAM user.

    Uma imagem de criação de um novo utilizador numa consola em nuvem AWS.

  4. Na página 'Adicionar Utilizador', nomeie o utilizador Terraform e selecione a caixa de verificação de Acesso Programático e, em seguida, selecione Seguinte.On the Add User page, name the user Terraform and select the Programmatic Access check box, and then select Next.

    Segunda imagem de criação de um novo utilizador numa consola em nuvem AWS.

  5. Na página 'Permissões' set, selecione Fixe as políticas existentes diretamente e, em seguida, verifique a caixa ao lado do AmazonEC2FullAccess como visto na imagem e, em seguida, selecione Seguinte.On the Set Permissions page, select Attach existing policies directly and then check the box next to AmazonEC2FullAccess as seen in the screenshot, and then select Next.

    Terceira imagem de criação de um novo utilizador numa consola em nuvem AWS.

  6. Na página Tags, atribua uma etiqueta com uma chave azure-arc-demo e selecione Seguinte para proceder à página 'Rever'.On the Tags page, assign a tag with a key of azure-arc-demo and select Next to proceed to the Review page.

    Uma imagem de tags numa consola em nuvem AWS.

  7. Verifique se está tudo correto e selecione Criar utilizador quando estiver pronto.Verify that everything is correct and select Create user when ready.

    Quarta imagem de criação de um utilizador numa consola em nuvem AWS.

  8. Após a criação do utilizador, verá o ID da chave de acesso do utilizador e a chave de acesso secreta.After the user is created, you will see the user's access key ID and secret access key. Copie estes valores antes de selecionar Fechar.Copy these values before selecting Close. Na página seguinte, pode ver um exemplo de como deve ser.On the next page, you can see an example of what this should look like. Assim que tiver estas teclas, poderá usá-las com terraform para criar recursos AWS.Once you have these keys, you will be able to use them with Terraform to create AWS resources.

    Uma imagem de criação de um utilizador com sucesso numa consola em nuvem AWS.

Configurar TerraformConfigure Terraform

Antes de executar o plano Terraform, deve exportar as variáveis ambientais que serão utilizadas pelo plano.Before executing the Terraform plan, you must export the environment variables which will be used by the plan. Estas variáveis baseiam-se na subscrição do Azure e inquilino, no diretor de serviços Azure, e no utilizador e chaves AWS IAM que acabou de criar.These variables are based on your Azure subscription and tenant, the Azure service principal, and the AWS IAM user and keys you just created.

  1. Recupere o seu ID de assinatura Azure e iD do inquilino usando o az account list comando.Retrieve your Azure subscription ID and tenant ID using the az account list command.

  2. O plano Terraform cria recursos tanto no Microsoft Azure como no AWS.The Terraform plan creates resources in both Microsoft Azure and AWS. Em seguida, executa um script numa máquina virtual AWS EC2 para instalar o agente Azure Arc e todos os artefactos necessários.It then executes a script on an AWS EC2 virtual machine to install the Azure Arc agent and all necessary artifacts. Este script requer certas informações sobre os seus ambientes AWS e Azure.This script requires certain information about your AWS and Azure environments. Editar scripts/vars.sh e atualizar cada uma das variáveis com os valores apropriados.Edit scripts/vars.sh and update each of the variables with the appropriate values.

    • TF_VAR_subscription_id = O seu ID de assinatura AzureTF_VAR_subscription_id = Your Azure subscription ID
    • TF_VAR_client_id = O seu ID principal de serviço AzureTF_VAR_client_id = Your Azure service principal app ID
    • TF_VAR_client_secret = A sua senha principal de serviço AzureTF_VAR_client_secret = Your Azure service principal password
    • TF_VAR_tenant_id = A sua ID do seu inquilino azulTF_VAR_tenant_id = Your Azure tenant ID
    • AWS_ACCESS_KEY_ID = Chave de acesso AWSAWS_ACCESS_KEY_ID = AWS access key
    • AWS_SECRET_ACCESS_KEY = Chave secreta da AWSAWS_SECRET_ACCESS_KEY = AWS secret key
  3. Do CLI Azure, navegue até ao azure_arc_servers_jumpstart/aws/ubuntu/terraform diretório do repo clonado.From the Azure CLI, navigate to the azure_arc_servers_jumpstart/aws/ubuntu/terraform directory of the cloned repo.

  4. Exporte as variáveis ambientais que editou executando scripts/vars.sh com o comando de origem como mostrado abaixo.Export the environment variables you edited by running scripts/vars.sh with the source command as shown below. Terraform requer que sejam definidos para que o plano seja executado corretamente.Terraform requires these to be set for the plan to execute properly. Note que este script também será executado automaticamente na máquina virtual AWS como parte da implementação do Terraform.Note that this script will also be automatically executed remotely on the AWS virtual machine as part of the Terraform deployment.

    source ./scripts/vars.sh
    
  5. Certifique-se de que as suas teclas SSH estão disponíveis em ~/.ssh e com o nome id_rsa.pub e id_rsa .Make sure your SSH keys are available in ~/.ssh and named id_rsa.pub and id_rsa. Se seguiu o guia de ssh-keygen acima para criar a sua chave, então esta já deve ser configurada corretamente.If you followed the ssh-keygen guide above to create your key then this should already be setup correctly. Caso contrário, poderá ter de modificar main.tf para utilizar uma chave com um caminho diferente.If not, you may need to modify main.tf to use a key with a different path.

  6. Executar o terraform init comando que irá descarregar o fornecedor Terraform AzureRM.Run the terraform init command which will download the Terraform AzureRM provider.

    Uma imagem do comando "terraform init".

ImplementaçãoDeployment

  1. Executar o terraform apply --auto-approve comando e esperar que o plano termine.Run the terraform apply --auto-approve command and wait for the plan to finish. Após a conclusão, terá uma instância EC2 AWS Amazon Linux 2 implementada e conectada como um novo servidor Azure Arc ativado dentro de um novo grupo de recursos.Upon completion, you will have an AWS Amazon Linux 2 EC2 instance deployed and connected as a new Azure Arc enabled server inside a new resource group.

  2. Abra o portal Azure e navegue para o arc-aws-demo grupo de recursos.Open the Azure portal and navigate to the arc-aws-demo resource group. A máquina virtual criada em AWS será visível como um recurso.The virtual machine created in AWS will be visible as a resource.

    Uma imagem mostrando um servidor ativado pelo Azure Arc no portal Azure.

    Uma imagem da consola AWS que exibe instâncias EC2.

Implantação semi-automatizada (opcional)Semi-automated deployment (optional)

Como deve ter notado, o último passo da execução é registar o VM como um novo recurso de servidor ativado pelo Azure Arc.As you may have noticed, the last step of the run is to register the VM as a new Azure Arc enabled server resource.

Uma imagem do comando "azmagent connect".

Se pretender despromupro/controlar o processo de registo real, faça o seguinte:If you want to demo/control the actual registration process, do the following:

  1. No modelo de install_arc_agent.sh.tmpl script, comente a run connect command secção e guarde o ficheiro.In the install_arc_agent.sh.tmpl script template, comment out the run connect command section and save the file.

    Uma imagem que mostra "main.tf" a ser comentada para desativar o embarque automático de um agente do Azure Arc.

  2. Obtenha o IP público do VM AWS funcionando terraform output .Get the public IP of the AWS VM by running terraform output.

    Uma imagem de uma saída terraforme.

  3. SSH o VM utilizando o ssh ubuntu@xx.xx.xx.xx local onde está o IP do xx.xx.xx.xx hospedeiro.SSH the VM using the ssh ubuntu@xx.xx.xx.xx where xx.xx.xx.xx is the host IP.

    Uma imagem de uma chave SSH conectando-se a um servidor EC2.

  4. Exporte todas as variáveis ambientais em vars.sh .Export all the environment variables in vars.sh.

    Uma imagem de variáveis ambientais exportadas em "vars.sh".

  5. Execute o seguinte comando:Run the following command:

    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
    

    Outra imagem do comando "azcmagent connect".

  6. Quando estiver concluído, o seu VM será registado no Arco Azure e visível no grupo de recursos através do portal Azure.When complete, your VM will be registered with Azure Arc and visible in the resource group via the Azure portal.

Eliminar a implantaçãoDelete the deployment

Para eliminar todos os recursos que criou como parte desta demonstração, utilize o terraform destroy --auto-approve comando como mostrado abaixo.To delete all the resources you created as part of this demo use the terraform destroy --auto-approve command as shown below.

Uma imagem do comando "destruição de terraformes".

Em alternativa, pode eliminar diretamente a instância AWS EC2, terminando-a a partir da consola AWS.Alternatively, you can delete the AWS EC2 instance directly by terminating it from the AWS console. Note que levará alguns minutos para que o exemplo seja realmente removido.Note that it will take a few minutes for the instance to actually be removed.

Uma imagem de como terminar uma instância na consola AWS.

Se eliminar a instância manualmente, deve também apagar *./scripts/install_arc_agent.sh , que é criado pelo plano Terraform.If you delete the instance manually, then you should also delete *./scripts/install_arc_agent.sh, which is created by the Terraform plan.