Configuração de implantação automática de código com CodeDeploy - mvneves/codedeploy-example GitHub Wiki

Essa página é destinada aos alunos que estão usando uma conta AWS privada. Se você está usando uma conta AWS Academy, seguir o roteiro correspondente.

Passo 1: Preparar uma instância do EC2 para receber o deploy

Criar um IAM profile para permitir que a VM possa acessar o S3

  1. Acessar a console do serviço IAM em https://console.aws.amazon.com/iam
  2. Criar uma nova política de acesso:
  3. Acessar a opção Polices / Políticas no menu e depois criar no botão Create policy / Criar política
  4. Clicar na aba JSON e colar o seguinte conteúdo:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
  1. Depois, clicar em Review policy / Revisar política
  2. Especificar o nome CodeDeployDemo-EC2-Permissions e clicar em Create policy / Criar política
  3. Acessar a opção Roles / Funções no menu lateral e depois criar no botão Create role / Criar função
  4. Escolher AWS service / Serviço da AWS e, da lista que aparecerá abaixo, escolher EC2
  5. Clicar em Next / Próximo: permissões
  6. Na página Attach permissions policy / Attach políticas de permissões, escolher o nome da política criada anteriormente (com nome CodeDeployDemo-EC2-Permissions)
  7. Clicar em Next / Próximo até a etapa final, escolher o nome do role CodeDeployDemo-EC2-Instance-Profile e clicar em Create role / Criar função

Criar uma instância EC2

  1. Acessar a console do serviço EC2
  2. Iniciar o wizard através do botão Launch Instance / Executar instânica;
  3. Escolher o sistema operacional Ubuntu Server 18.04 LTS e tipo t2.micro (Free-tier eligible);
  4. Na etapa Step 3: Configure Instance Details, atribuir para a VM o IAM role criado anteriormente (com nome CodeDeployDemo-EC2-Instance-Profile);
  5. Na etapa Step 5: Add Tags, atribuir uma tag para a VM (ex: usar chave codedeploy e valor producao)
  6. Na etapa Step 6: Configure Security Group, configurar o security group para abrir a porta 8080
  7. Baixar chave de acesso (ou usar uma existente se já tiver a chave em sua máquina local);
  8. Conectar via SSH na VM e realizar a instação do agente do CodeDeploy:
sudo apt-get update
sudo apt-get install -y ruby wget
cd /home/ubuntu
wget https://aws-codedeploy-us-east-1.s3.us-east-1.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
  1. Verificar se o agente está executando:
sudo service codedeploy-agent status

Passo 2: Preparar a aplicação

  1. Obter o código fonte de https://github.com/mvneves/codedeploy-example
  2. Gerar um arquivo aplicacao.zip contendo o conteúdo do repositório e fazer upload em um bucket do S3

Passo 3: Configurar o serviço CodeDeploy

Criar um service role para serviço CodeDeploy

  1. Acessar a console do IAM: https://console.aws.amazon.com/iam/.
  2. Acessar a opção Roles / Funções no menu lateral e clicar em Create role / Criar função
  3. Escolher AWS service / Serviço da AWS e, da lista que aparecerá abaixo, escolher CodeDeploy
  4. Na opção Select your use case / Selecione seu caso de uso, selecionar CodeDeploy
  5. Clicar em Next / Próximo até a última etapa
  6. Por fim, atribuir o nome do role CodeDeployServiceRole e clicar em Create role / Criar função

Configurar uma nova aplicação no CodeDeploy

  1. Acessar o serviço CodeDeploy
  2. Acessar a opção Applications / Aplicativos no menu lateral e clicar em Create application / Criar aplicativo
  3. Escolher um nome qualquer para a aplicação, escolher a plataforma EC2/On-premises / EC2/local e clicar botão Create application / Criar aplicativo
  4. Acessar a aplicação récem criada e clicar em Create deployment group / Criar grupo de implantação
  5. Atribuir um nome para o grupo (ex: producao)
  6. Selecionar o service role criado anteriormente: CodeDeployServiceRole
  7. Selecionar o tipo do deploy como In-place / No local
  8. Escolher a configuração do ambiente como Amazon EC2 Instances / Instâncias do Amazon EC2 e escolher a mesma tag atribuída para a VM (ex: chave codedeploy e valor producao)
  9. Escolher a opção nunca na etapa Instalar o agente do AWS CodeDeploy
  10. Desabilitar a opção Enable load balancing / Habilitar balanceamento de carga
  11. Clicar em Create deployment group

Passo 4: Fazer deploy da aplicação

  1. Navegar novamente para a aplicação criada no serviço CodeDeploy
  2. Na aba Deploys / Implantações, clicar no botão Create deploy / Criar implantação
  3. Escolher o Deployment group / Grupo de implantação criado anteriormente (ex: producao)
  4. Escolher a opção de obter o código fonte do S3
  5. Especificar o caminho do arquivo .zip no S3 (ex: s3://nome-do-bucket/aplicacao.zip)
  6. Na seção Additional deployment behavior settings / Configurações adicionais do comportamento de implantação, marcar a opção Não causar a falha da implantação... e a Substituir o conteúdo
  7. Clicar em Create deployment / Criar implantação
  8. Acompanhar o progresso da implantação e, quando concluída, verificar se a aplicação subiu com sucesso (Obs: acessar o IP público da VM usando a porta 8080 pelo browser)

Referências:

⚠️ **GitHub.com Fallback** ⚠️