Fermer

juillet 2, 2024

Guide ultime pour configurer le serveur Jenkins avec les outils DevSecOps sur AWS EC2. / Blogs / Perficient

Guide ultime pour configurer le serveur Jenkins avec les outils DevSecOps sur AWS EC2.  / Blogs / Perficient


Dans cet article de blog, je vais vous guider tout au long du processus de configuration d’un serveur Jenkins intégré aux outils essentiels nécessaires à la construction d’un pipeline DevSecOps robuste. Ce didacticiel est conçu pour les personnes possédant des connaissances de base sur la navigation dans la console AWS.

Prérequis:

Compte AWS gratuit

Étape 1 : configuration du serveur Jenkin sur l’instance EC et installation de Jenkin, Docker, Trivy, Sonarqube, Terraform, AWS CLI, Kubectl.

Installer Jenkin

1.1) Lancez un Instance EC2 avec stratégie d’accès administrateur attachée. Dans mon cas, j’ai utilisé AMI Ubuntu 22.04 et le type d’instance T2 Large.

1.2) Installez les outils Jenkins, Docker et Trivy sur l’instance EC2 que nous créons ci-dessus. SSH dans l’instance EC2 en utilisant le client SSH et créez un fichier de script Jenkins.sh avec le code ci-dessous.

#!/bin/bash
sudo apt update -y
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
sudo apt update -y
sudo apt install temurin-17-jdk -y
/usr/bin/java --version
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
                  /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
                  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
                              /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update -y
sudo apt-get install jenkins -y
sudo systemctl start Jenkins

Après avoir créé le fichier script.sh, accordez l’autorisation d’exécution et exécutez le fichier de script. Cela installera Jenkins dans votre instance EC2.

sudo chmod 777 jenkins.sh
sudo su   #move into root and run
./jenkins.sh    # this will installl jenkins

Après avoir installé Jenkins, ouvrez le port entrant 8080 sur votre groupe de sécurité AWS EC2, car Jenkins opère sur ce port. Maintenant, récupérez votre adresse IP publique

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Pour continuer, déverrouillez Jenkins à l’aide du mot de passe administratif et installez les plugins recommandés.

Jenkins va maintenant installer et configurer toutes les bibliothèques requises.

Créez un utilisateur, cliquez sur « Enregistrer » et continuez.

Installer Docker

1.3) Exécutez la commande ci-dessous pour installer Docker sur la même instance EC2.

sudo apt-get update
sudo apt-get install docker.io -y
sudo usermod -aG docker $USER   #my case is ubuntu
newgrp docker
sudo chmod 777 /var/run/docker.sock

1.4) Après l’installation du docker, nous créons un conteneur sonarqube (N’oubliez pas d’ajouter 9000 ports dans le groupe de sécurité).

docker run -d --name sonar -p 9000:9000 sonarqube:lts-community

Notre Sonarqube est désormais opérationnel

Image2

Récupérez maintenant l’adresse IP publique de l’instance EC2 et accédez à la page de connexion Sonarqube sur le port 9000.

Entrez le nom d’utilisateur et le mot de passe comme administrateur/administrateurcliquez sur connexion et changez le mot de passe.

1.5) Installer Trivy, Kubectl, Terraform

Créez un autre fichier de script nommé script.sh et copiez le script ci-dessous dans le fichier et exécutez-le, il installera Terraform, Trivy, Kubectl, AWS cli.

#!/bin/bash
sudo apt-get install wget apt-transport-https gnupg lsb-release -y
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy -y
# Install Terraform
sudo apt install wget -y
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
# Install kubectl
sudo apt update
sudo apt install curl -y
curl -LO https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
# Install AWS CLI 
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo apt-get install unzip -y
unzip awscliv2.zip
sudo ./aws/install

Donnez des autorisations et exécutez le script.

sudo chmod 777 script.sh
./script.sh

Ensuite, nous nous connecterons à Jenkins et commencerons à configurer nos outils requis dans Jenkins.

Étape 2 : Installez des plugins tels que JDK, Sonarqube Scanner, NodeJs, OWASP Dependency Check

2.1) Installer le plugin

Allez dans Gérer Jenkins -> Plugins -> Plugins disponibles -> Installer les plugins ci-dessous.

1. Océan bleu8. API Docker
2. Programme d’installation d’Eclipse Temurin9. Étape de construction de Docker
3. Scanner SonarQube10. Vérification des dépendances Owasp
4. Plugin NodeJs11. Kubernetes
5. Docker12. CLI Kubernetes
6. Docker communs13. API client Kubernetes
7. Pipeline Docker14. Étapes DevOps du pipeline Kubernetes

2.2) Configurer Java et Nodejs dans la configuration globale de l’outil

Allez dans Gérer Jenkins -> Outils -> Installer JDK (17) et NodeJs (19) -> Cliquez sur Appliquer et Enregistrer

Jdk

Nodej

Saisissez l’adresse IP publique de votre instance EC2, Sonarqube fonctionne sur le port 9000, donc  :9000. Accédez à votre serveur Sonarqube.

2.3) Cliquez sur Administration -> Sécurité -> Utilisateurs -> Cliquez sur Jetons et mettre à jour le jeton -> Donnez-lui un nom -> et cliquez sur Générer un jeton

Sonarqube2

Créez un jeton avec un nom et cliquez sur générer. Copiez maintenant le jeton généré

Sonarqube3

2.4) Accédez au tableau de bord Jenkins -> Gérer Jenkins -> Informations d’identification -> Ajouter un texte secret. ça devrait ressembler à ça

Sonarcred

Vous verrez cette page une fois que vous aurez cliqué sur créer.

Sonarcredout

2.5) Maintenant, allez dans Tableau de bord -> Gérer Jenkins -> Système et Ajouter, comme l’image ci-dessous.

Plugin Sonar

Cliquez sur Appliquer et Enregistrer.

2.6) Maintenant, nous allons installer un scanner sonar dans les outils. Accédez à Gérer Jenkins -> Outils -> SonarQube Scanner.

Scanner sonar

2.7) Dans le tableau de bord Sonarqube, ajoutez également une porte de qualité, Administration -> Configuration -> Webhooks -> Cliquez sur Créer

Nom : Essai
URL : http://:8080/sonarqube-webhook/

Sonarwebhook

Pour afficher le rapport, accédez au serveur Sonarqube et accédez à la section Projets.

Dans un premier temps, nous avons configuré le plugin, suivi de la configuration de l’outil.

2.8) Accédez au tableau de bord -> Gérer Jenkins -> Outils -> Installation de vérification des dépendances.

Dpchecker

Cliquez sur Appliquer et enregistrez ici.

2.9) Maintenant, allez dans Tableau de bord -> Gérer Jenkins -> Outils -> Installation de Docker

Plugin Docker

2.10) Outils -> Terraform ajoutez ceci, dans Jenkins, mettez à jour le chemin de Terraform installé dans l’instance EC2 à l’aide de la commande ci-dessous.

which terraform

Dockerplug2

2.11) Allez gérer Jenkins -> Informations d’identification

Ajoutez le nom d’utilisateur et le mot de passe DockerHub sous les informations d’identification globales

Dockercred

Avec notre serveur Jenkins entièrement configuré, nous sommes prêts à commencer la construction de notre pipeline DevSecOps pour le déploiement.






Source link