Não é possível instalar CodeDeploy na instância Lightsail com Amazon Linux 2

Oct 02 2020

Como não estava particularmente satisfeito em poder usar apenas o Amazon Linux (queria usar o Amazon Linux 2 também), criei duas instâncias usando as duas versões do sistema operacional e adicionando o mesmo script

mkdir /etc/codedeploy-agent/

mkdir /etc/codedeploy-agent/conf

cat <<EOT >> /etc/codedeploy-agent/conf/codedeploy.onpremises.yml

---

aws_access_key_id: ACCESS

aws_secret_access_key: SECRET

iam_user_arn: arn:aws:iam::525221857828:user/GeneralUser

region: eu-west-2

EOT

wget https://aws-codedeploy-us-west-2.s3.us-west-2.amazonaws.com/latest/install

chmod +x ./install

sudo ./install auto

A diferença que observei entre os dois é que na instância que tem Linux 2, a pasta /etc/codedeploy-agent/conf/tem apenas um arquivo

e no Linux tem dois arquivos

Sabendo disso, criei um novo arquivo na instância do Linux 2 com o mesmo nome

touch codedeployagent.yml

, alterou suas permissões de

-rw-r--r-- 1 root root 261 Oct  2 10:43 codedeployagent.yml

para

-rwxr-xr-x 1 root root 261 Oct  2 10:43 codedeployagent.yml

, e adicionou o mesmo conteúdo

:log_aws_wire: false
:log_dir: '/var/log/aws/codedeploy-agent/'
:pid_dir: '/opt/codedeploy-agent/state/.pid/'
:program_name: codedeploy-agent
:root_dir: '/opt/codedeploy-agent/deployment-root'
:verbose: false
:wait_between_runs: 1
:proxy_uri:
:max_revisions: 5

e reiniciei a máquina. Ainda assim, isso não corrigiu o problema de quando eu executei

sudo service codedeploy-agent status

ainda vai conseguir

Redirecionando para / bin / systemctl status codedeploy-agent.service A unidade codedeploy-agent.service não foi encontrada.

Também garanti que todas as atualizações estivessem no lugar, reiniciei a máquina, mas também não funcionou.

Respostas

2 Marcin Oct 02 2020 at 11:42

Posso fornecer detalhes de minha configuração para instâncias do Amazon Linux 2 para implantar CodeDeployGitHubDemo (com base na pergunta anterior ).

1. Agente CodeDeploy

Usou o seguinte como UserData(pode ser necessário ajustar a região, se não us-east-1):

#!/bin/bash

yum update -y
yum install -y ruby wget

cd /home/ec2-user

wget https://aws-codedeploy-us-east-1.s3.us-east-1.amazonaws.com/latest/install

chmod +x ./install
./install auto

Não exigia credenciais de codificação permanente. O seguinte funciona perfeitamente bem nas Amazon Linux 2instâncias que usei.

2. Função de instância

Sua instância precisa de uma função adequada para CodeDeploy. Usei uma função de instância EC2 com a política listada aqui :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

3. Grupo de implantação

Tive três instâncias de testes em um grupo de AutoScaling, chamado myasg:

4. Implantação

Implantei do S3 sem balanceador de carga:

5. Resultados

Nenhum problema foi encontrado e a implantação foi bem-sucedida:

E o site em execução (é necessário abrir a porta 80 em grupos de segurança):

Atualizar

Para instalação manual no Amazon Linux 2. Você pode sudo su -se tornar root após o login.

mkdir -p /etc/codedeploy-agent/conf

cat <<EOT >> /etc/codedeploy-agent/conf/codedeploy.onpremises.yml
---

aws_access_key_id: ACCESS

aws_secret_access_key: SECRET

iam_user_arn: arn:aws:iam::525221857828:user/GeneralUser

region: eu-west-2

EOT

yum install -y wget ruby

wget https://aws-codedeploy-us-west-2.s3.us-west-2.amazonaws.com/latest/install

chmod +x ./install

env AWS_REGION=eu-west-2 ./install rpm

Para verificar seu status:

systemctl status codedeploy-agent

Com isso, você deve obter algo assim

● codedeploy-agent.service - AWS CodeDeploy Host Agent
   Loaded: loaded (/usr/lib/systemd/system/codedeploy-agent.service; enabled; vendor prese
t: disabled)
   Active: active (running) since Sat 2020-10-03 07:18:57 UTC; 3s ago
  Process: 3609 ExecStart=/bin/bash -a -c [ -f /etc/profile ] && source /etc/profile; /opt
/codedeploy-agent/bin/codedeploy-agent start (code=exited, status=0/SUCCESS)
 Main PID: 3623 (ruby)
   CGroup: /system.slice/codedeploy-agent.service
           ├─3623 codedeploy-agent: master 3623
           └─3627 codedeploy-agent: InstanceAgent::Plugins::CodeDeployPlugin::CommandPo...

Oct 03 07:18:57 ip-172-26-8-137.eu-west-2.compute.internal systemd[1]: Starting AWS Cod...
Oct 03 07:18:57 ip-172-26-8-137.eu-west-2.compute.internal systemd[1]: Started AWS Code...
Hint: Some lines were ellipsized, use -l to show in full.

Se você correr

sudo service codedeploy-agent status

você obterá (o que significa que está funcionando conforme o esperado)

The AWS CodeDeploy agent is running as PID 3623

Para começar, se não estiver em execução:

systemctl start codedeploy-agent