Impossibile installare CodeDeploy nell'istanza Lightsail con Amazon Linux 2

Oct 02 2020

Poiché non era particolarmente soddisfatto di poter utilizzare solo Amazon Linux (voleva utilizzare anche Amazon Linux 2), ha creato due istanze utilizzando entrambe le versioni del sistema operativo e aggiungendo lo stesso 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

La differenza che ho notato tra i due è che nell'istanza che ha Linux 2, la cartella /etc/codedeploy-agent/conf/ha un solo file

e in Linux ha due file

Sapendo questo, ho creato un nuovo file nell'istanza di Linux 2 con lo stesso nome

touch codedeployagent.yml

, ha modificato le sue autorizzazioni da

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

per

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

e ha aggiunto lo stesso contenuto

: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 quindi riavviato la macchina. Tuttavia, questo non ha risolto il problema come quando corro

sudo service codedeploy-agent status

otterrà ancora

Reindirizzamento a / bin / systemctl status codedeploy-agent.service Impossibile trovare l'unità codedeploy-agent.service.

Inoltre, assicurati che tutti gli aggiornamenti fossero a posto, riavviato la macchina ma neanche quello funzionava.

Risposte

2 Marcin Oct 02 2020 at 11:42

Posso fornire i dettagli della mia configurazione per le istanze di Amazon Linux 2 per distribuire CodeDeployGitHubDemo (in base alla domanda precedente ).

1. Agente CodeDeploy

Utilizzato quanto segue come UserData(potrebbe essere necessario regolare la regione in caso contrario 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

Non richiedeva credenziali hardcoding. Quanto segue funziona perfettamente sulle Amazon Linux 2istanze che ho usato.

2. Ruolo dell'istanza

La tua istanza necessita di un ruolo adatto per CodeDeploy. Ho utilizzato un ruolo di istanza EC2 con i criteri elencati qui :

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

3. Gruppo di distribuzione

Ho avuto tre istanze per i test in un gruppo AutoScaling, chiamato myasg:

4. Distribuzione

Ho distribuito da S3 senza Load Balancer:

5. Risultati

Non sono stati trovati problemi e la distribuzione è stata eseguita correttamente:

E il sito Web in esecuzione (è necessario aprire la porta 80 nei gruppi di sicurezza):

Aggiornare

Per l'installazione manuale su Amazon Linux 2. È possibile sudo su -diventare root dopo il 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

Per verificarne lo stato:

systemctl status codedeploy-agent

Con questo dovresti ottenere qualcosa di simile

● 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 corri

sudo service codedeploy-agent status

otterrai (il che significa che funziona come previsto)

The AWS CodeDeploy agent is running as PID 3623

Per iniziare se non in esecuzione:

systemctl start codedeploy-agent