Comment puis-je exécuter l'agent CodeDeploy avec un profil non racine ?

Date de la dernière mise à jour : 19/11/2019

Comment puis-je exécuter l'agent AWS CodeDeploy avec un profil non racine ?

Résolution

Vous pouvez exécuter l'agent avec un profil utilisateur en définissant les autorisations utilisateur, en automatisant le processus de modification utilisateur, puis en confirmant ce processus.

Avant de commencer, vérifiez que l'agent CodeDeploy est installé sur votre instance Amazon Elastic Compute Cloud (Amazon EC2).

Remarque :les étapes suivantes s'appliquent aux instances qui utilisent Amazon Machine Image (AMI), Amazon Linux 1 ou Amazon Machine Image (AMI), Amazon Linux 2.

Modifiez l'utilisateur et définissez les autorisations pour l'utilisateur sur lequel l'agent s'exécute.

1.    Connectez-vous à l’instance en utilisant SSH.

2.    Pour arrêter l'agent hôte CodeDeploy, exécutez la commande suivante :

sudo service codedeploy-agent stop

3.    Pour modifier le fichier de configuration de l'agent CodeDeploy, exécutez la commande sed stream editor :

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

Important : pour les AMI Amazon Linux 2, exécutez les commandes supplémentaires suivantes :

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

Remarque : dans les commandes précédentes, remplacez ec2-user par le nom d'utilisateur sur lequel vous souhaitez que l'agent hôte CodeDeploy s'exécute.

4.    Pour accorder à l'utilisateur des autorisations pour les répertoires nécessaires, exécutez les commandes suivantes :

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

5.    Pour redémarrer l'agent CodeDeploy et confirmer que vos mises à jour du fichier de configuration sont réussies, exécutez les commandes suivantes :

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

Vous obtenez une sortie analogue à ce qui suit si vos mises à jour sont réussies :

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

6.    Pour voir quels processus sont en cours d'exécution et quel utilisateur exécute ces processus, exécutez la commande suivante :

ps aux | grep codedeploy-agent

Automatisez le processus de modification de l'utilisateur.

Pour vérifier que l'agent CodeDeploy est bien installé et en cours d'exécution avec l'utilisateur approprié lorsque de nouvelles instances sont lancées (par exemple, lors d'événements de dimensionnement), suivez les étapes suivantes pour automatiser le processus de modification de l'utilisateur :

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 préconfiguré qui accorde à votre instance EC2 l'autorisation d'accès aux ressources d'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. Consultez l'exemple suivant :

#!/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

Remarque : Remplacez ec2-user par le nom d'utilisateur sur lequel vous souhaitez que l'agent hôte CodeDeploy s'exécute. Le code précédent s'exécute automatiquement lorsqu'une nouvelle instance qui utilise cette configuration de lancement est lancée.

9.    Suivez les étapes restantes dans l'assistant de lancement si nécessaire, puis sélectionnez Créer une configuration de lancement.

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

11.    Complétez les étapes suivantes :
Dans Nom du groupe, saisissez un nom pour votre groupe Auto Scaling.
Dans Sous-réseau, saisissez un sous-réseau qui autorise votre instance à accéder à Internet.

12.    Sélectionnez Suivant : Configurer les stratégies de dimensionnement, puis choisissez une stratégie en fonction de vos besoins.

13.    Complétez les autres étapes de l'assistant de lancement, puis sélectionnez Créer un groupe Auto Scaling.

Confirmez que l'agent CodeDeploy est en cours d'exécution sur l'instance que vous avez créée pour automatiser le processus de modification de l'utilisateur.

Vérifiez que votre instance est en cours d'exécution, puis effectuez les opérations suivantes :

1.    Connectez-vous à l’instance en utilisant SSH.

2.    Exécutez la commande suivante :

sudo service codedeploy-agent status

3.    Pour vérifier que le nom d'utilisateur approprié est utilisé, exécutez la commande suivante :

ps aux | grep codedeploy-agent

Si l'agent CodeDeploy est en cours d'exécution, vous obtenez une sortie analogue à ce qui suit :

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

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?