Impossible d'installer CodeDeploy dans l'instance Lightsail avec Amazon Linux 2

Oct 02 2020

Comme n'était pas particulièrement satisfait de pouvoir utiliser uniquement Amazon Linux (voulait également utiliser Amazon Linux 2), a créé deux instances en utilisant les deux versions de système d'exploitation et en ajoutant le même 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 différence que j'ai notée entre les deux est que dans l'instance qui a Linux 2, le dossier /etc/codedeploy-agent/conf/n'a qu'un seul fichier

et sous Linux a deux fichiers

Sachant cela, j'ai créé un nouveau fichier dans l'instance Linux 2 avec le même nom

touch codedeployagent.yml

, a changé ses autorisations de

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

à

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

, et a ajouté le même contenu

: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

puis redémarré la machine. Pourtant, cela n'a pas résolu le problème lorsque je cours

sudo service codedeploy-agent status

obtiendra toujours

Redirection vers / bin / systemctl status codedeploy-agent.service L'unité codedeploy-agent.service est introuvable.

S'assurer également que toutes les mises à jour étaient en place, redémarrer la machine mais cela n'a pas fonctionné non plus.

Réponses

2 Marcin Oct 02 2020 at 11:42

Je peux fournir des détails sur ma configuration pour les instances Amazon Linux 2 pour déployer CodeDeployGitHubDemo (en fonction de la question précédente ).

1. Agent CodeDeploy

Utilisé comme suit UserData(vous devrez peut-être ajuster la région si ce n'est pas le cas 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

Il ne nécessitait pas d'informations d'identification de codage en dur. Ce qui suit fonctionne parfaitement sur les Amazon Linux 2instances que j'ai utilisées.

2. Rôle d'instance

Votre instance a besoin d'un rôle adapté à CodeDeploy. J'ai utilisé un rôle d'instance EC2 avec la stratégie répertoriée ici :

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

3. Groupe de déploiement

J'avais trois instances de tests dans un groupe AutoScaling, appelées myasg:

4. Déploiement

J'ai déployé depuis S3 sans Load Balancer:

5. Résultats

Aucun problème n'a été trouvé et le déploiement a réussi:

Et le site Web en cours d'exécution (besoin d'ouvrir le port 80 dans les groupes de sécurité):

Mettre à jour

Pour une installation manuelle sur Amazon Linux 2. Vous pouvez sudo su -devenir root après la connexion.

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

Pour vérifier son état:

systemctl status codedeploy-agent

Avec cela, vous devriez obtenir quelque chose comme ça

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

Si vous courez

sudo service codedeploy-agent status

vous obtiendrez (ce qui signifie que cela fonctionne comme prévu)

The AWS CodeDeploy agent is running as PID 3623

Pour démarrer s'il n'est pas en cours d'exécution:

systemctl start codedeploy-agent