Déployez une image composée de Tomcat, Java et MySQL à l'aide d'Ansible et Jenkins

Dans ce tutoriel, vous utiliserez ** Ansible ** et ** Jenkins ** pour déployer une image composée de Tomcat, ** Java ** et MySQL sur ** Alibaba Cloud **.

Conditions préalables

  1. Au moins un [serveur Jenkins](https://www.alibabacloud.com/blog/ci%2Fcd-with-jenkins --- part-1% 3A-install-jenkins-on-ubuntu_593717? Spm = a2c65.11461447.0.0.53a46c64aNElRK) est requis (pour les paramètres maître uniquement ou maître / esclave).

Ensuite, après avoir configuré l'environnement maître / esclave (agent) pour le serveur Jenkins, vérifiez l'état du serveur pour vous assurer que l'agent fonctionne normalement. Surtout dans ma configuration, j'utilise le nœud maître comme serveur Jenkins et la machine d'agent pour Ansible. Si vous le souhaitez, vous ne pouvez avoir qu'une seule machine en installant Ansible sur le maître lui-même.

image.png

  1. Ensuite, installez Ansible Tool sur les machines maître et agent.

  2. Présentez Ansible. Ansible est un outil puissant d'automatisation informatique qui peut être utilisé dans le processus CI / CD pour provisionner un environnement cible et y déployer des applications. Cependant, sachez qu'Ansible est fastidieux à maintenir et réutilisera les scripts à long terme. Ceci est utile si vous souhaitez effectuer la même tâche sur différents serveurs / environnements à partir d'un emplacement centralisé où Ansible est installé. Ansible est totalement sans agent, donc Chef et Puppet Il a un avantage par rapport aux autres outils IaC (Infrastructure-as-Code) tels que a2c65.11461447.0.0.53a46c64aNElRK). Avec Ansible, il n'est pas nécessaire d'installer un agent sur le système client, et la communication SSH entre le client et le serveur permet l'automatisation. Avec des centaines d'instances dans une région donnée, toute l'automatisation est facile. Les playbooks Ansible sont écrits en langage YAML / YML.

En ce qui concerne Ansible, les connaissances suivantes sont également nécessaires.

Installation des modules Ansible et Ansible Alicloud

Tout d'abord, installez le plug-in Ansible sur Jenkins. Pour faire ça, suit les étapes suivantes.

  1. Cliquez sur Gérer Jenkins dans le tableau de bord.

image.png

  1. Cliquez sur Gérer les plugins et recherchez le plugin Ansible dans la barre de recherche en haut à droite de la page.

image.png

  1. Sélectionnez Ansible et cliquez sur Télécharger maintenant pour l'installer après le redémarrage.

Remarque: n'installez pas Ansible Tower, qui n'est pas nécessaire pour la configuration actuelle utilisée dans ce didacticiel.

image.png

Après avoir installé le plug-in Ansible sur Jenkins, l'étape suivante consiste à installer Ansible sur la machine client / agent.

Installer Ansible sur la machine client / agent

Le module Alibaba Ansible est mis à jour fréquemment, veuillez donc vous référer au GitHub lien pour la dernière version. Je le recommande.

  1. Ouvrez une fenêtre de terminal sur la machine de l'agent et exécutez la commande suivante.
sudo yum check-update; sudo yum install -y gcc libffi-devel python-devel openssl-devel epel-release
sudo yum install -y python-pip python-wheel
sudo apt-get update && sudo apt-get install -y libssl-dev libffi-dev python-dev python-pip
  1. Entrez la commande suivante pour installer le package requis Ansible pour Alibaba.
sudo pip install ansible

sudo pip install ansible_alicloud

sudo pip install ansible_alicloud_module_utils

Configurer le playbook Ansible

J'ai créé le script de playbook d'Ansible pour provisionner Alibaba ECS ici. Vous pouvez bifurquer le code source et modifier la valeur du paramètre en fonction de votre environnement.

    alicloud_access_key: <Alibaba Access Key>
    alicloud_secret_key: <Alibaba Secret Key>
    alicloud_region: <Alibaba Region for your resource> e.g. - ap-south-1
    alicloud_zone: <Alibaba Zone for your resource> e.g. ap-south-1a
    password: <New VM Password>
    image: "m-a2d4qmk8v2w9s5wmh0rw"  

Remarque: j'importe des images à partir des piles d'applications Alibaba fournies par Zhuyun. Veuillez vérifier ici. Il se compose de Linux, Nginx, MySQL et Jdk-Tomcat (Nginx1.6-jdk1.7-tomcat7-mysql5.5-vsFTPd2.2.2).

Clé d'accès et génération de secrets

Il est maintenant temps de générer la clé d'accès et le secret. Pour faire ça, suit les étapes suivantes.

  1. Pour obtenir la «clé d'accès» et la «clé secrète», accédez à la Alibaba Cloud Console Sélectionnez ensuite Resource Access Management (RAM) dans le menu du produit.

image.png

  1. Cliquez sur l'option Utilisateur dans le volet de navigation de gauche et sélectionnez Créer un utilisateur.

image.png

  1. Créez un nouvel utilisateur et entrez votre identifiant et votre nom d'affichage. Ensuite, dans [Access Mode], cochez [Program Access]. Il n'est pas nécessaire de fournir à cet utilisateur un accès par mot de passe à la console.

image.png

  1. Copiez ʻAccessKeyId et ʻAccessKeySecret, qui sont les valeurs de ʻalicloud_access_key et ʻalicloud_secret_key dans le playbook.

Remarque: Si vous fermez la boîte de dialogue, les informations AccessKey ne seront plus disponibles. Par conséquent, il est important de copier et d'enregistrer ces informations avant de fermer la boîte de dialogue.

image.png

  1. Fournissez les autorisations appropriées pour provisionner des ressources telles que des VPC, des V-Switch, des groupes de sécurité ou des instances ECS. Je fournis un accès administrateur, qui fournit un accès complet aux services et aux ressources d'Alibaba Cloud.

image.png

image.png

Régions et zones du cloud Alibaba

image.png

image.png

image.png

image.png

Note 1.

  1. Pour obtenir la liste complète, vous pouvez utiliser les outils Alibaba Cloud CLI. Il crache également le mur JSON, il est donc également pratique d'être sur * nix et d'utiliser l'outil jq. Cela étant, tout ce dont vous avez besoin est ce court script shell.
#!/usr/bin/env bash

for region in $( aliyun ecs DescribeRegions | jq '.Regions.Region[].RegionId' )
do
    echo $region
    reg=$( echo $region | sed s/\"//g )
    echo '---'
    for zone in $( aliyun ecs DescribeZones --RegionId $reg | jq '.Zones.Zone[].ZoneId' | sort )
    do
        echo $zone
    done
    echo ''
done
  1. Si vous souhaitez fournir des ressources aux régions / zones suivantes, veuillez enregistrer votre vrai nom à partir de ce lien. ..
alicloud_region: cn-beijing
alicloud_zone: cn-beijing-a

L'ID d'image de chaque région est indiqué ci-dessous (pour les images Linux, Nginx, MySQL, Jdk-Tomcat). Bien sûr, vous devez changer l'ID de l'image en fonction de la région.

image.png

Créer et déployer une machine virtuelle Alibaba à l'aide d'un travail Jenkins

Pour créer et déployer une machine virtuelle Alibaba à l'aide d'un travail Jenkins, procédez comme suit:

  1. Dans le tableau de bord Jenkins, sélectionnez Nouvel élément.

image.png

  1. Entrez un nom, sélectionnez Projet Freestyle et cliquez sur OK.

image.png

  1. (Facultatif) Ci-dessous Général, veuillez fournir une brève description pour référence.

image.png

  1. Sélectionnez l'onglet Gestion du code source (SCM) en haut ou faites défiler vers le bas et entrez les informations suivantes:

SCM: - Git URL du référentiel: -Lien GitHub avec paramètres modifiés Exemple: https://github.com/nadaraj15/alibaba_ansible/ Informations d'identification: -Aucun (référentiel public, donc stockez les informations d'identification dans Jenkins si elles sont privées) Spécificateur de branche (vide pour «any»): - * / master

image.png

  1. Ensuite, ignorez le déclencheur de génération pour l'instant et accédez à l'environnement de génération. Plusieurs paramètres sont disponibles lors de la création d'un nouveau projet. Cette page de paramètres vous donne également la possibilité d'ajouter des étapes de construction pour effectuer des actions supplémentaires telles que l'exécution de scripts. Exécutez plutôt un script shell pour télécharger le fichier Ansible Playbook à partir de GitHub. Utilisez la commande suivante.
sudo apt-get update  (Optional)
sudo apt-get install -y libssl-dev libffi-dev python-dev python-pip (Optional)
sudo pip install ansible[azure]==2.7.0rc2 (Optional)
sudo apt-get install -y maven (Optional)
cd /usr/bin
sudo wget https://raw.githubusercontent.com/nadaraj15/alibaba_ansible/master/AliVM.yml

image.png

image.png

  1. Je voudrais ajouter une étape de construction et lancer un playbook ansible. Cette étape exécute un playbook ansible. Entrez les informations suivantes.

--Playbook path: --AliVM.yml (nom du playbook) --Inventaire: --Sélectionnez "Ne pas spécifier l'inventaire" --Credentials: -Select None (J'ai intégré les informations d'identification dans le fichier de déploiement afin que je puisse transmettre les informations d'identification en tant que variable d'environnement)

image.png

image.png

  1. Nettoyez l'espace de travail post-déploiement et ajoutez une étape d'exécution de script shell avec la commande suivante:

Remarque: Si jenkins_home est votre emplacement, le chemin par défaut est défini sur / var / jenkins_home. Cependant, si vous disposez d'un emplacement personnalisé, vous pouvez utiliser cet emplacement à la place.

sudo rm -rf /var/jenkins_home/workspaces/<workspace_name>

image.png

  1. Ajoutez des actions post-construites si nécessaire. Enfin, lorsque toutes les étapes sont définies, cliquez sur Enregistrer.

image.png

  1. Accédez au tableau de bord du projet Jenkins et cliquez sur Construire maintenant pour déclencher manuellement la génération.

image.png

  1. Accédez à la sortie de la console pour voir l'état de construction déclenché. Si toutes les ressources sont correctement provisionnées, la sortie affichera un état de réussite.

image.png

image.png

  1. Accédez à la console Alibaba pour voir l'ECS et la configuration d'Alibaba provisionnés.

image.png

image.png

Vous avez maintenant déployé une instance avec Tomcat, Java et MySQL installés. Si vous entrez l'adresse IP publique correspondant au navigateur, vous pouvez voir que la page Apache Tomcat est en cours d'exécution car le serveur Web est exposé via le port 80 de l'adresse IP publique de la VM.

image.png

Les références

1、https://www.alibabacloud.com/blog/ci%2Fcd-with-jenkins---part-1%3A-install-jenkins-on-ubuntu_593717 2、https://www.alibabacloud.com/blog/continuous-integration-with-jenkins-on-alibaba-cloud_594512 3、https://www.alibabacloud.com/blog/594449 4、https://github.com/alibaba/ansible-provider 5、https://mohitgoyal.co/2017/02/14/add-linux-slave-node-in-the-jenkins/ 6、https://marketplace.alibabacloud.com/products/56728001/Tomcat_Nginx_My_SQL_Stack_Package_on_Ubuntu-cmjj011399.html?innerSource=search#product-details

Recommended Posts

Déployez une image composée de Tomcat, Java et MySQL à l'aide d'Ansible et Jenkins
Installez Java et Tomcat avec Ansible
Déployer automatiquement des applications Web développées en Java à l'aide de Jenkins [Tomcat App Edition]
Installation simple de nginx et Docker à l'aide d'ansible
Essayez une recherche similaire de recherche d'images à l'aide du SDK Java [Recherche]
[Java10] Veillez à utiliser ensemble var et génériques
[Java] Méthode de comparaison de chaînes de caractères et méthode de comparaison utilisant des expressions régulières
Un exemple CRUD simple utilisant Java Servlet / JSP et MySQL
À propos des instances Java
Avantages et inconvénients de Java
Déployer automatiquement des applications Web développées en Java à l’aide de Jenkins [Préparation]