IBM Cloud Docs
Création de rôles et de la galaxie Ansible

Création de rôles et de la galaxie Ansible

Un rôle Ansible peut être utilisé pour séparer un playbook Ansible important en morceaux réutilisables appelés rôles. Un rôle définit un ensemble de tâches que vous souhaitez exécuter sur vos hôtes cible. Pour exécuter ces tâches sur vos hôtes, vous devez faire référence au rôle dans votre protocole Ansible.

La galaxie Ansible est un référentiel pour les rôles Ansible qui sont disponibles pour être déposer directement dans vos protocoles afin de rationaliser vos projets d'automatisation. Un nouvel administrateur système peut commencer à automatiser avec Ansible en quelques heures.

Vous pouvez créer vos propres rôles ou utiliser des rôles existants dans Ansible Galaxy.

Création de vos propres rôles dans Ansible

Pour simplifier votre protocole Ansible, vous pouvez décider de séparer les tâches du protocole en créant des rôles et en y faisant référence dans votre protocole. Utilisez-le pour charger automatiquement les variables, fichiers, tâches, gestionnaires et autres artefacts Ansible en fonction d'une structure de fichier connue.

  1. Identifiez les tâches de votre protocole que vous souhaitez réutiliser sur plusieurs hôtes. Par exemple, vous pouvez regrouper les tâches que vous souhaitez exécuter sur tous vos hôtes, ainsi que les tâches que vous souhaitez exécuter sur vos serveurs Web et vos bases de données. Chaque groupe de tâches peut devenir son propre rôle.

  2. Créez la structure de rôles Ansible dans votre référentiel GitHub. Les rôles doivent être stockés dans un répertoire roles relatif à votre protocole Ansible. Le répertoire roles peut comporter un sous-répertoire tel que /roles/db/ décrivant les tâches du fichier main.yml.

    ├── roles
        └── db
            └── tasks
                └── main.yml
    ├── playbook.yaml
    ├── README.md
    
  3. Ajoutez les tâches que vous souhaitez exécuter à un fichier main.yml. Dans l'exemple suivant, vous séparez la tâche de téléchargement du référentiel de communauté MySQL de votre protocole principal et la placez dans un fichier main.yml.

    - name: Download MySQL Community Repo
        get_url:
        url: https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
        dest: /tmp
    
  4. Référencez le rôle dans votre protocole Ansible.

     - name: deploy MySQL and configure the databases
       hosts: all
       remote_user: root
    
       roles:
         - db
       tasks:
         - shell: "hostname"
    

Pour plus d'informations sur les autres fichiers et conditions que vous pouvez ajouter à votre rôle, consultez la documentation Ansible.

Installation de rôles à partir d'Ansible Galaxy

Vous pouvez choisir d'utiliser les rôles existants d' Ansible Galaxy dans votre playbook. Ansible Galaxy propose des unités de travail pré-packagées, issues de la communauté Ansible, qui sont mises à disposition en tant que rôles et collections.

  1. Parcourez le référentiel Ansible Galaxy pour trouver les rôles que vous souhaitez.

  2. Créez un fichier requirements.yml dans lequel vous spécifiez tous les rôles dont vous avez besoin. Pour une vue d'ensemble de la manière de référencer les rôles Ansible Galaxy, voir la documentation Ansible. Dans l'exemple suivant, vous souhaitez utiliser le rôle andrewrothstein.kubectl d'Ansible Galaxy.

    ---
    roles:
      - name: andrewrothstein.kubectl
    
  3. Ajoutez un dossier roles à votre référentiel GitHub qui est relatif au protocole et stockez le fichier requirements.yml dans ce dossier, comme illustré dans cet exemple.

        ├── roles
            └── requirements.yml
        ├── playbook.yaml
        ├── README.md
    
  4. Référencez le rôle dans votre protocole Ansible. Dans cet exemple, le rôle dont le nom est andrewrothstein.kubectl est utilisé.

    - hosts: all
      roles:
        - role: andrewrothstein.kubectl
    

Pour plus d'informations sur les exemples de playbook Ansible, voir le playbook Ansible fourni par IBM®