Resources attached to the Road To DevOps tutorial https://blog.noobtoroot.xyz/road-to-devops/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

6.8 KiB

Logo Ansible

Ansible Galaxy

Créer et partager ses propres roles.

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.

Travaux pratiques

Travaux pratiques

TP Ansible Galaxy