Configuration d'Ansible avec Gitlab CI⚓︎
Configuration effectuée sur une Raspberry pi avec Rasbian (debian).
Summary
Ansible est un logiciel permettant la configuration et la gestion d’environnements ou de groupes d’environnements. Gitlab CI est un outil permettant de faire du CICD qui est l'automatisation des tâches réalisées dans votre développement (test) et le déploiement dde votre code.
01 - Installation⚓︎
Quote
Cette installation est pour un environnement physique (ici directement sur la raspberry pi), mais je vous conseille de faire un container docker afin d'externaliser Anisble pour une gestion plus facile de votre environnement.
Mise à jour de votre environnement :
Commande(s) bash | |
---|---|
1 2 |
|
Installation des pré-requis à Ansible :
Commande(s) bash | |
---|---|
1 |
|
Installation d'Ansible :
Commande(s) bash | |
---|---|
1 |
|
02 - Configuration⚓︎
02.1 - Configuration des environnements⚓︎
La configuration des environnements à pour but de créer un couple de clés ssh pour pouvoir se connecter sur les environnements que vous souhaitez gérer. Nous allons également configurer un utilisateur ansible
avec des droits sudo pour pouvoir gérer votre machine.
- Environnement du runner (gitlab-runner)
-
Se connecter avec l'utilisateur
gitlab-runner
(sudo -iH
etsu gitlab-runner
), puis créer une clé ssh :Commande(s) bash 1
ssh-keygen -t rsa
- Chaque environnement à gérer
-
Pour chaque host (environnement) que vous souhaitez configurer/gérer créez l'utilisateur
ansible
:1 2
sudo useradd ansible --home /ansible --create-home --shell /bin/bash --gid staff -G sudo # (1) sudo passwd ansible # (2)
- Création de l'utilisateur
ansible
avec le home/ansible
, et les groupes staff (principal) et sudo. - Changement du mot de passe de l'utilisateur.
- Création de l'utilisateur
- Environnement du runner (gitlab-runner)
-
Ajouter la connexion avec la clé ssh sur chaque host :
Commande(s) bash 1
ssh-copy-id -p <port-ssh> ansible@<nom-environnement>
02.2 - Configuration de votre projet ansible sur Gitlab⚓︎
Pour la configuration de votre projet, vous pouvez suivre les conseils disponibles sur la documentation officiel d'Ansible.
Pour ce tutoriel on va se baser sur l'arborescence suivante :
arborescence du projet | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 |
|
Dans votre dossier group_vars/all
de votre environnement créez le fichier vars
tel que :
inventory/group_vars/all/vars | |
---|---|
1 2 3 4 5 6 7 8 |
|
Les variables vont être déclarées par la suite pour être encryptées dans un fichier vault
.
Ensuite créez ce fichier encrypté avec ansible vault
:
Commande(s) bash | |
---|---|
1 |
|
Hint
Vous allez devoir définir un mot de passe, sauvegardez le dans votre tête.
Cela va ensuite ouvrir l'éditeur de fichier vi
, donc pour écrire dans le fichier appuyez sur la touche insert
puis écrivez les lignes suivantes :
inventory/group_vars/all/vault | |
---|---|
1 2 3 4 |
|
02.3 - Configuration de Gitlab CI⚓︎
Dans les paramètres de votre projet gitlab ansible, ajouter une variable de type fichier contenant votre mot de passe de cryptage ansible vault.
Je vous conseille également de cocher les cases
protected
etmasked
.
Puis dans votre fichier .gitlab-ci.yml
ajoutez les lignes suivantes pour appeler un playbook :
.gitlab-ci.yml | |
---|---|
1 2 |
|
03 - Annexes⚓︎
03.1 - Exemple du contenu du fichier .gitlab-ci.yml⚓︎
.gitlab-ci.yml | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
workflow
Cette règle permet d'authoriser l'exécution seulement à la main.
Enjoy !