Comment puis-je exécuter l'agent CodeDeploy avec un profil utilisateur qui n'est pas le profil racine ?

Lecture de 6 minute(s)
0

Je veux exécuter l'agent AWS CodeDeploy avec un profil utilisateur qui n'est pas le profil racine.

Brève description

Pour exécuter l'agent CodeDeploy avec un profil utilisateur qui n'est pas le profil racine, procédez comme suit :

1.    (Prérequis) Vérifiez que l'agent CodeDeploy est installé sur votre instance Amazon Elastic Compute Cloud (Amazon EC2).

2.    Modifiez l'utilisateur dans votre fichier de configuration de l'agent CodeDeploy et accordez à l'utilisateur les autorisations requises.

3.    Créez un modèle de configuration du lancement Amazon EC2 et un groupe Auto Scaling pour automatiser le processus de modification d'utilisateur.

4.    Testez la configuration en vérifiant que l'agent CodeDeploy est installé et en cours d'exécution avec le bon utilisateur sur votre instance Amazon EC2.

Remarque : ces étapes s'appliquent aux instances qui utilisent Amazon Machine Image (AMI) Amazon Linux 1 ou Amazon Linux 2. Toutefois, l'AMI Amazon Linux 1 est en état desupport de maintenance. Dans cet état, l'AMI reçoit uniquement les mises à jour de sécurité critiques et importantes pour un ensemble réduit de packages. Il n'est également plus garanti que l'AMI prenne en charge les nouvelles capacités de la plateforme EC2 ou les nouvelles fonctions d'AWS.

Solution

Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS Command Line Interface (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI.

(Prérequis) Vérifier que l'agent CodeDeploy est installé sur votre instance Amazon EC2

Suivez les instructions dans la section Vérifiez que l'agent CodeDeploy est en cours d'exécution dans le Guide de l'utilisateur CodeDeploy.

Pour obtenir des instructions sur comment installer l'agent CodeDeploy, consultez la section Installer l'agent CodeDeploy.

Modifiez l'utilisateur dans votre fichier de configuration de l'agent CodeDeploy et accordez à l'utilisateur les autorisations requises

1.    Connectez-vous à votre instance Amazon EC2 à l'aide de SSH.

2.    Arrêtez l'agent hôte CodeDeploy installé sur l'instance en exécutant la commande suivante :

sudo service codedeploy-agent stop

3.    Modifiez l'utilisateur dans le fichier de configuration de l'agent CodeDeploy en exécutant la commande sed stream editor suivante :

Remarque : remplacez ec2-user par le nom d'utilisateur sur lequel vous voulez que l'agent hôte CodeDeploy s'exécute.

sudo sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent

Important : pour les AMI Amazon Linux 2, vous devez également exécuter les deux commandes suivantes :

sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
sudo systemctl daemon-reload

4.    Accordez au nouvel utilisateur des autorisations sur les répertoires requis en exécutant les deux commandes suivantes :

Remarque : remplacez ec2-user par le nom d'utilisateur sur lequel vous voulez que l'agent hôte CodeDeploy s'exécute.

sudo chown ec2-user:ec2-user -R /opt/codedeploy-agent/
sudo chown ec2-user:ec2-user -R /var/log/aws/

5.    Redémarrez l'agent CodeDeploy et confirmez que vos mises à jour du fichier de configuration sont réussies en exécutant les commandes suivantes :

sudo service codedeploy-agent start
sudo service codedeploy-agent status

Exemple de sortie de commande réussie

The AWS CodeDeploy agent is running as PID ####

6.    Vérifiez quels processus sont en cours d'exécution et quel utilisateur exécute ces processus en exécutant la commande suivante :

ps aux | grep codedeploy-agent

Créez un modèle de configuration du lancement Amazon EC2 et un groupe Auto Scaling pour automatiser le processus de modification d'utilisateur

Pour confirmer que l'agent CodeDeploy est installé et en cours d'exécution avec le bon utilisateur lorsque de nouvelles instances sont lancées, procédez comme suit :

1.    Ouvrez la console Amazon EC2.

2.    Dans le volet de navigation, sélectionnez Configurations de lancement.

3.    Sélectionnez Créer une configuration de lancement.

4.    Sélectionnez l'AMI Amazon Linux.

5.    Sélectionnez Suivant : Configurer les détails.

6.    Pour le rôle IAM, choisissez un rôle AWS Identity and Access Management (IAM) préconfiguré. Le rôle doit accorder à votre instance EC2 l'autorisation d'accéder aux ressources Amazon Simple Storage Service (Amazon S3).

7.    Sélectionnez Détails avancés.

8.    Dans la section Données utilisateur du fichier de configuration de l'agent, saisissez les commandes permettant d'installer l'agent CodeDeploy. Ensuite, mettez à jour le fichier pour utiliser un utilisateur spécifique.

Exemple de fichier de configuration d'agent

Remarque : remplacez ec2-user par le nom d'utilisateur sur lequel vous voulez que l'agent hôte CodeDeploy s'exécute. L'exemple de code suivant s'exécute automatiquement lorsqu'une nouvelle instance est lancée à l'aide de la configuration du lancement définie.

#!/bin/bash
REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//')
yum -y update
yum install ruby wget -y
cd /home/ec2-user
wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install
chmod +x ./install
./install auto
service codedeploy-agent stop
#adduser username <--- this is only required if you use a username that does not already exist
sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent
#sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service  <--- Uncomment this line for Amazon Linux 2
systemctl daemon-reload
chown ec2-user:ec2-user -R /opt/codedeploy-agent/
chown ec2-user:ec2-user -R /var/log/aws/
service codedeploy-agent start

9.    Effectuez les étapes restantes dans AWS Launch Wizard, si nécessaire. Choisissez ensuite Create launch configuration (Créer la configuration du lancement).

10.    Sélectionnez Créer un groupe Auto Scaling à l'aide de cette configuration de lancement.

11.    Dans Nom du groupe, saisissez un nom pour votre groupe Auto Scaling.

12.    Dans Sous-réseau, saisissez un sous-réseau qui autorise votre instance à accéder à Internet.

13.    Choisissez Next: Configure Scaling policies (Suivant : Configurer les politiques de mise à l'échelle). Choisissez ensuite une politique en fonction de vos besoins.

14.    Effectuez le reste des étapes dans Launch Wizard. Choisissez ensuite Créer un groupe Auto Scaling (Creer un groupe Auto Scaling).

Tester la configuration en vérifiant que l'agent CodeDeploy est installé et en cours d'exécution avec le bon utilisateur sur une nouvelle instance Amazon EC2

Confirmez que votre instance Amazon EC2 est en cours d'exécution. Puis, procédez comme suit :

1.    Connectez-vous à votre instance Amazon EC2 à l'aide SSH.

2.    Vérifiez que l'agent CodeDeploy est en cours d'exécution sur l'instance Amazon EC2 en exécutant la commande suivante :

sudo service codedeploy-agent status

3.    Vérifiez que l'agent CodeDeploy est en cours d'exécution avec le bon nom d'utilisateur en exécutant la commande suivante :

ps aux | grep codedeploy-agent

Exemple de sortie de commande réussie

The AWS CodeDeploy agent is running as PID ####

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans