6.8 KiB
Ansible Galaxy
Créer et partager ses propres roles.
Ansible Galaxy
-
Communauté pour trouver, télécharger, partager des rôles.
-
Site : https://galaxy.ansible.com/
-
CLI :
ansible-galaxy
Une communauté
-
Télécharger des roles depuis Galaxy est un bon moyen pour démarrer un projet.
-
On ne réinvente pas la roue.
-
Enormément de projets : environ 19'500 roles (jan. 2019).
Mais soyez vigilent
-
Tout le monde peut partager.
-
Beaucoup de duplications.
-
Vulnérabilités, malveillance, dangereux, mauvais fonctionnement...
Rechercher des rôles
$ ansible-galaxy search httpd
Found 182 roles matching your search:
Name Description
---- -----------
2kloc.trellis-monit Install and configure Monit service in Trellis.
acropia.httpd IT Professional
ahuffman.sat6_create_hosts An Ansible role to create new virtual and ba...
AlbanAndrieu.ansible-workstation A role for installing workstation
AnatolyRugalev.ansistrano-deploy Ansible role to deploy scripting application...
ansiblebit.httpd Ansible role to setup the Apache HTTP server.
ansiblebit.mod_wsgi Ansible role to install and setup mod_wsgi.
ansible-ThoTeam.nexus3-oss Nexus Repository Manager 3.x (Sonatype)
ansistrano.deploy Ansible role to deploy scripting application...
ansistrano.rollback Ansible role to rollback scripting applicati...
Anthony25.squid Installs Squid
archf.packages Ansible role to install packages on a host
awasilyev.apache-container Ansible Container role that adds an apache s...
awasilyev.drupal-container Ansible Container role that adds an apache s...
awasilyev.tomcat-container Ansible Container role that adds an tomcat s...
axmac.axmac_apache Apache2
beardyjay.firewalld Base role for firewalld
...
Télécharger un rôle
$ ansible-galaxy install geerlingguy.apache
- downloading role 'apache', owned by geerlingguy
- downloading role from https://github.com/geerlingguy/ansible-role/.../3.0.3.tar.gz
- extracting geerlingguy.apache to /home/ansible/.ansible/roles/geerlingguy.apache
- geerlingguy.apache (3.0.3) was installed successfully
Fichiers récupérés
/home/ansible/.ansible
└── roles
└── geerlingguy.apache
├── defaults
│ └── main.yaml
├── handlers
│ └── main.yaml
├── LICENSE
├── meta
│ └── main.yaml
├── README.md
├── tasks
│ ├── configure-Debian.yaml
│ ├── configure-RedHat.yaml
│ ├── configure-Suse.yaml
│ ├── main.yaml
│ ├── setup-Debian.yaml
│ ├── setup-RedHat.yaml
│ └── setup-Suse.yaml
├── templates
│ └── vhosts.conf.j2
└── vars
├── apache-22.yaml
├── apache-24.yaml
├── Debian.yaml
├── RedHat.yaml
└── Suse.yaml
Pourquoi utiliser Galaxy ?
-
Créer des roles Ansible réutilisables est une bonne pratique.
-
Partager des roles sur son propre SCM.
-
Apporter une notion de dépendances à la sauce Maven ou NPM.
Fonctionnement avancé
-
Installer plusieurs roles en une seule fois.
-
Récupérer des roles depuis plusieurs sources (Galaxy, Git, filer...).
-
Un seul fichier décrivant la liste des roles à installer :
requirements.yaml
$ ansible-galaxy install -r requirements.yaml
Plusieurs sources possibles
Depuis Galaxy
- src: zaxos.tomcat-ansible-role
- src: user.rolename
...
Avec l'utilisation de Galaxy, l'attribut src
représente simplement <nom du contributeur>
.<nom du role>
Depuis un serveur Git
- src: git@gitlab.sii-ouest.fr:ouest/projects/ansible/tomcat.git
scm: git
version: develop
L'attribut version
peut être un tag, un nom de branche ou un numéro de commit. La version par défaut est master.
Depuis GitHub, pas besoin d'indiquer de SCM
Depuis un serveur web
- src: https://url.du.serveur.com/ansible/roles/tomcat.tar.gz
name: tomcat-role
L'attribut name
sert à indiquer le nom du role lorsqu'il est téléchargé
Définir le chemin de téléchargement
Par défaut, les roles sont téléchargés à l'endroit spécifié par la variable d'environnement ANSIBLE_ROLE_PATH
.
Il est possible de définir le chemin directement en ligne de commande.
$ ansible-galaxy install -r requirements.yaml -p|-roles-path .
Créer des roles Ansible
Il est très facile de créer un role Ansible avec une structure de dossier pré-définit avec la commande init
.
$ ansible-galaxy init tomcat-custom
L'argument `-force` permet d'écraser un role existant portant le même nom.
La création du role génère la structure ci-dessous :
/tomcat-custom
├── README.md
├── .travis.yaml
├── defaults/
| └── main.yaml
├── files/
├── handlers/
| └── main.yaml
├── meta/
| └── main.yaml
├── templates/
├── tests/
| ├── inventory
| └── test.yaml
└── vars/
└──main.yaml
Utiliser une structure personalisée
$ ansible-galaxy init --role-skeleton=/chemin/squelette tomcat-custom
Quand une structure personalisée est utilisée, les points suivants sont respectés :
-
Copie tous les fichiers et dossiers vers le nouveau role.
-
Les dossiers
.git
et fichiers.git_keep
ne sont pas recopiés. -
Le fichier
meta/main.yaml
est obligatoire pour récupérer le role via Galaxy.