Lors de la configuration de serveurs distants avec Ansible, vous pouvez rencontrer des cas où vous devez obtenir des fichiers à partir d'un référentiel Git. Il peut s'agir d'un package logiciel provenant de référentiels publics ou de fichiers de configuration sur un référentiel privé.
Pour cloner un référentiel git à distance à l'aide d'Ansible, vous pouvez ajouter des entrées comme celle-ci à votre Playbook.
---
- hosts: all
tasks:
- name: Clone a github repository
git:
repo: https://github.com/sqlite/sqlite.git
dest: /home/debian/repos/
clone: yes
update: yes
Ne vous inquiétez pas. Je vais vous expliquer ce que ces paramètres signifient et comment le faire avec un exemple de tutoriel.
Cloner des dépôts Git avec Ansible
Je suppose que vous connaissez déjà les bases d'Ansible comme l'inventaire, les playbooks, etc. Sinon, vous pouvez suivre notre série de tutoriels Ansible.
Prérequis
Ansible doit être installé sur votre machine locale. Cette instance Ansible agit comme nœud de contrôle pour tous les hôtes distants. À l'aide du nœud de contrôle, vous pouvez créer des playbooks et des tâches à exécuter sur les machines distantes spécifiées.
Si vous choisissez de suivre ce didacticiel, assurez-vous d'avoir :
- Un nœud de contrôle et un hôte distant.
- Paires de clés SSH. La clé publique du nœud de contrôle doit être disponible dans le fichier authorized_keys des hôtes distants.
- Un utilisateur non root avec
sudo
privilèges sur les hôtes distants. - Accès en écriture à un répertoire sur l'hôte distant pour stocker le contenu du référentiel cloné.
Configurer l'inventaire Ansible
Avant de continuer, vous devez configurer l'inventaire Ansible. L'inventaire Ansible est un fichier qui contient des informations sur les serveurs distants que vous souhaitez gérer avec Ansible.
Par défaut, le fichier se trouve dans /etc/ansible/hosts
. Créez ce fichier manuellement s'il ne se ferme pas.
Ajoutez l'adresse IP de l'hôte distant dans ce fichier :
vim /etc/ansible/hosts
Cela pourrait ressembler à ceci :
Enregistrez le fichier.
Cloner un référentiel Git avec Ansible playbook
Maintenant que le fichier d'inventaire est configuré et que les clés SSH sont en place pour accéder aux hôtes distants à partir du nœud de contrôle, vous pouvez créer le Playbook Ansible.
Utilisez un éditeur de texte comme Vim et créez un fichier YAML.
vim clone.yaml
Modifiez le fichier et ajoutez les entrées suivantes.
---
- hosts: all
tasks:
- name: Clone a github repository
git:
repo: https://github.com/sqlite/sqlite.git
dest: /home/debian/repos/
clone: yes
update: yes
Dans le playbook ci-dessus, vous avez commencé par définir une nouvelle tâche et lui avez donné le nom "Clone a GitHub repository".
Ensuite, vous utilisez le git
module pour spécifier le lien vers le référentiel SQLite GitHub.
Vous procédez ensuite à la définition de la destination du référentiel cloné. Il s'agit d'un répertoire local sur la machine distante.
Vous définissez l'attribut clone sur yes pour cloner le référentiel et le mettre à jour à l'aide de l'attribut update.
Pour exécuter le playbook, utilisez la commande :
ansible-playbook clone.yaml
Si le playbook échoue en raison de l'authentification SSH, vous pouvez spécifier le nom d'utilisateur à l'aide de l'indicateur -u comme :
ansible-playbook -u debian clone.yaml
Une fois les tâches exécutées, vous devriez avoir cloné le référentiel dans le répertoire spécifié.
Vous pouvez vous connecter à l'hôte distant pour vérifier que le référentiel a été correctement cloné :
Cela devrait vous donner une bonne idée du clonage d'un référentiel Git avec Ansible. Avec ces informations, vous devriez pouvoir utiliser les dépôts Git avec Ansible en fonction de vos besoins.
Si vous avez des questions ou des suggestions, veuillez laisser un commentaire ci-dessous.