Ansible Galaxy fait référence au site Web de Galaxy où les utilisateurs peuvent partager des rôles et à un outil en ligne de commande pour l’installation, la création et la gestion de rôles.

Galaxy, est un site gratuit permettant de rechercher, de télécharger et de partager des rôles développés par la communauté. Le téléchargement de rôles depuis Galaxy est un excellent moyen de relancer vos projets d’automatisation.

Vous pouvez également utiliser le site pour partager les rôles que vous avez créés. En vous authentifiant sur le site à l'aide de votre compte GitHub, vous pouvez importer des rôles et les mettre à la disposition de la communauté Ansible. Les rôles importés deviennent disponibles dans l'index de recherche Galaxy et visibles sur le site, ce qui permet aux utilisateurs de les découvrir et de les télécharger.

La commande “ansible-galaxy” est fournie avec Ansible. Vous pouvez l'utiliser pour installer des rôles à partir de Galaxy ou directement à partir d'un SCM basé sur git. Vous pouvez également l'utiliser pour créer un nouveau rôle, supprimer des rôles ou effectuer des tâches sur le site Web de Galaxy.

L'outil de ligne de commande communique par défaut avec l'API du site Web Galaxy à l'aide de l'adresse du serveur “https://galaxy.ansible.com”. Le projet Galaxy étant un projet open source, vous pouvez utiliser votre propre serveur Galaxy interne et souhaiter remplacer l'adresse du serveur par défaut.

Vous pouvez le faire en utilisant l'option –server ou en définissant la valeur du serveur Galaxy dans votre fichier “ansible.cfg”. Pour plus d'informations sur la définition de la valeur dans “ansible.cfg”, visitez “Galaxy Settings”.

Utilisez la commande “ansible-galaxy” pour télécharger des rôles à partir du site Web de Galaxy.

$ ansible-galaxy install nom_utilisateur.nom_rôle

Par défaut, Ansible télécharge les rôles dans le premier répertoire accessible en écriture dans la liste de chemins d'accès par défaut “~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles”. Cela installera les rôles dans le répertoire de base de l'utilisateur exécutant “ansible-galaxy”.

Vous pouvez le remplacer en définissant la variable d'environnement “ANSIBLE_ROLES_PATH” dans votre session, en définissant “roles_path” dans un fichier “ansible.cfg” ou en utilisant l'option "--roles-path".

Voici un exemple d'utilisation de "--roles-path" pour installer le rôle dans le répertoire de travail actuel:

$ ansible-galaxy install --roles-path . geerlingguy.apache

Vous pouvez installer une version spécifique d'un rôle de Galaxy en ajoutant une virgule et la valeur d'un tag de version GitHub.

Par exemple:

$ ansible-galaxy install geerlingguy.apache,v1.0.0

Il est également possible de pointer directement vers le référentiel git et de spécifier un nom de branche ou un hachage de validation en tant que version.

Par exemple, ce qui suit installera un commit spécifique:

$ ansible-galaxy install git+https: //github.com/geerlingguy/ansible-role-apache.git,0b7cd353c0250e87a26e0499e59e7fd265cc2f25

À partir de Ansible 1.8, il est possible d’installer plusieurs rôles en les incluant dans un fichier “requirements.yml”. Le format du fichier est YAML et son extension doit être “.yml” ou “.yaml”.

Utilisez la commande suivante pour installer les rôles inclus dans “requirements.yml”:

$ ansible-galaxy install -r requirements.yml

Encore une fois, l'extension est importante. Si l'extension “.yml” est laissée désactivée, l'interface de ligne de commande “ansible-galaxy” suppose que le fichier est dans un format «de base» plus ancien, maintenant obsolète.

Chaque rôle dans le fichier aura un ou plusieurs des attributs suivants:

  • src :
    • La source du rôle. Utilisez le format nom_utilisateur.nom_rôle, si vous téléchargez à partir de Galaxy; sinon, fournissez une URL pointant vers un référentiel au sein d'un GDS basé sur git. Voir les exemples ci-dessous. C'est un attribut requis.
  • scm :
    • Spécifiez le SCM. A ce jour, seuls git ou hg sont supportés. Voir les exemples ci-dessous. La valeur par défaut est git.
  • version :
    • La version du rôle à télécharger. Indiquez une valeur de balise de publication, un hachage de validation ou un nom de branche. Par défaut, la branche est définie par défaut dans le référentiel, sinon, elle est définie par défaut sur le maître.
  • name :
    • Téléchargez le rôle sous un nom spécifique. Par défaut, le nom de Galaxy est téléchargé lors du téléchargement à partir de Galaxy. Sinon, le nom du référentiel est utilisé par défaut.

Utilisez l'exemple suivant comme guide pour la spécification de rôles dans “requirements.yml” :

# from galaxy
- src: yatesr.timezone
 
# from GitHub
- src: https://github.com/bennojoy/nginx
 
# from GitHub, overriding the name and specifying a specific tag
- src: https://github.com/bennojoy/nginx
  version: master
  name: nginx_role
 
# from a webserver, where the role is packaged in a tar.gz
- src: https://some.webserver.example.com/files/master.tar.gz
  name: http-role
 
# from Bitbucket
- src: git+https://bitbucket.org/willthames/git-ansible-galaxy
  version: v1.4
 
# from Bitbucket, alternative syntax and caveats
- src: https://bitbucket.org/willthames/hg-ansible-galaxy
  scm: hg
 
# from GitLab or other git-based scm, using git+ssh
- src: git@gitlab.company.com:mygroup/ansible-base.git
  scm: git
  version: "0.1"  # quoted, so YAML doesn't parse this as a floating-point value

Au niveau de base, l'inclusion du fichiers “requirements.yml” vous permet de diviser des rôles en plusieurs fichiers. Le rôle inclut extraire les rôles d'autres fichiers.

Utilisez la commande suivante pour installer les rôles inclus dans “requirements.yml” + “webserver.yml”

$ ansible-galaxy install -r requirements.yml

Contenu du fichier “requirements.yml”:

# from galaxy
- src: yatesr.timezone
 
- include: <path_to_requirements>/webserver.yml

Contenu du fichier “webserver.yml” :

# from github
- src: https://github.com/bennojoy/nginx
 
# from Bitbucket
- src: git+https://bitbucket.org/willthames/git-ansible-galaxy
  version: v1.4

Les rôles peuvent également dépendre d'autres rôles. Lorsque vous installez un rôle comportant des dépendances, ces dépendances sont automatiquement installées.

Vous spécifiez les dépendances de rôle dans le fichier “meta/main.yml” en fournissant une liste de rôles. Si la source d'un rôle est Galaxy, vous pouvez simplement spécifier le rôle au format “nom_utilisateur.nom_role”. Le format plus complexe utilisé dans “requirements.yml” est également pris en charge, ce qui vous permet de fournir “src”, “scm”, “version” et “name”.

Les TAG sont héritées dans la chaîne de dépendance. Pour que les TAG puissent être appliquées à un rôle et à toutes ses dépendances, ils doivent être appliquée au rôle et non à toutes les tâches d'un rôle.

Les rôles répertoriés en tant que dépendances sont soumis à des conditions et à un filtrage des TAG et peuvent ne pas s'exécuter complètement en fonction des TAG et des conditions appliquées.

Les dépendances trouvées dans Galaxy peuvent être spécifiées comme suit:

dépendances:
   - geerlingguy.apache
   - geerlingguy.ansible

La forme complexe peut également être utilisée comme suit:

dependencies:
  - src: geerlingguy.ansible
  - src: git+https://github.com/geerlingguy/ansible-role-composer.git
    version: 775396299f2da1f519f0d8885022ca2d6ee80ee8
    name: composer

Utilisez la commande “init” pour initialiser la structure de base d'un nouveau rôle, ce qui vous permet de gagner du temps lors de la création des divers répertoires et fichiers “main.yml” requis par le rôle.

$ ansible-galaxy init role_name

Ce qui précède créera la structure de répertoire suivante dans le répertoire de travail actuel:

role_name/
    README.md
    .travis.yml
    defaults/
        main.yml
    files/
    handlers/
        main.yml
    meta/
        main.yml
    templates/
    tests/
        inventory
        test.yml
    vars/
        main.yml

Si vous souhaitez créer un repository pour le rôle, la racine du repository doit être “nom_role”.

Si un répertoire correspondant au nom du rôle existe déjà dans le répertoire de travail actuel, la commande “init” entraîne une erreur. Pour ignorer l'erreur, utilisez l'option "--force". Forcer créera les sous-répertoires et les fichiers ci-dessus, en remplacement de tout ce qui correspond.

Un répertoire squelette de rôle personnalisé peut être fourni comme suit:

$ ansible-galaxy init --role-skeleton=/chemin/vers/squelette role_name

Quand un squelette est fourni, “init” va:

  • copier tous les fichiers et répertoires du squelette vers le nouveau rôle
  • tout fichier “.j2” trouvé en dehors d'un dossier de modèles sera rendu sous forme de modèles. La seule variable utile pour le moment est “role_name”
  • Le dossier “.git” et tous les fichiers “.git_keep” ne seront pas copiés

Alternativement, le “role_skeleton” et l’ignorance des fichiers peuvent être configurés via “ansible.cfg”

[galaxie]
role_skeleton = / chemin / vers / squelette
role_skeleton_ignore = ^ .git $, ^. * /. git_keep $

Effectuez une recherche dans la base de données Galaxy par mots-clés, plates-formes, auteur et plusieurs mots-clés.

Par exemple:

$ ansible-galaxy search elasticsearch --author geerlingguy

La commande de recherche renverra une liste des 1000 premiers résultats correspondant à votre recherche:

Found 2 roles matching your search:
 
Name                              Description
----                              -----------
geerlingguy.elasticsearch         Elasticsearch for Linux.
geerlingguy.elasticsearch-curator Elasticsearch curator for Linux.

Utilisez la commande “info” pour afficher plus de détails sur un rôle spécifique :

$ ansible-galaxy info username.role_name

Ceci retourne tout ce qui est trouvé dans Galaxy pour le rôle :

Role: username.role_name
    description: Installs and configures a thing, a distributed, highly available NoSQL thing.
    active: True
    commit: c01947b7bc89ebc0b8a2e298b87ab416aed9dd57
    commit_message: Adding travis
    commit_url: https://github.com/username/repo_name/commit/c01947b7bc89ebc0b8a2e298b87ab
    company: My Company, Inc.
    created: 2015-12-08T14:17:52.773Z
    download_count: 1
    forks_count: 0
    github_branch:
    github_repo: repo_name
    github_user: username
    id: 6381
    is_valid: True
    issue_tracker_url:
    license: Apache
    min_ansible_version: 1.4
    modified: 2015-12-08T18:43:49.085Z
    namespace: username
    open_issues_count: 0
    path: /Users/username/projects/roles
    scm: None
    src: username.repo_name
    stargazers_count: 0
    travis_status_url: https://travis-ci.org/username/repo_name.svg?branch=master
    version:
    watchers_count: 1

Utilisez la commande “list” pour afficher le nom et la version de chaque rôle installé dans le “roles_path”.

$ ansible-galaxy list
 
- chouseknecht.role-install_mongod, master
- chouseknecht.test-role-1, v1.0.2
- chrismeyersfsu.role-iptables, master
- chrismeyersfsu.role-required_vars, master

Utilisez la commande “remove” pour supprimer un rôle de “roles_path” :

$ ansible-galaxy remove username.role_name

Utilisez l'option “–branch” pour importer une branche spécifique. Si non spécifié, la branche par défaut du référentiel sera utilisée.

Par défaut, le nom attribué au rôle sera dérivé du nom du référentiel GitHub. Cependant, vous pouvez utiliser l'option “–role-name” pour le remplacer et définir le nom.

Si l'option “–no-wait” est présente, la commande n'attendra pas les résultats. Les résultats de l'importation la plus récente pour l'un de vos rôles sont disponibles sur le site Web de Galaxy en visitant “My imports”.

La commande delete nécessite que vous vous authentifiiez d'abord à l'aide de la commande login. Une fois authentifié, vous pouvez supprimer un rôle du site Web de Galaxy. Vous êtes uniquement autorisé à supprimer des rôles pour lesquels vous avez accès au référentiel dans GitHub.

Utilisez ce qui suit pour supprimer un rôle:

$ ansible-galaxy delete github_user github_repo

Cela supprime uniquement le rôle de Galaxy. Il ne supprime ni ne modifie le référentiel GitHub actuel.

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus