Configuration Ansible

AnsibleAnsibleBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez apprendre à propos des fichiers de configuration Ansible et à personnaliser le comportement d'Ansible. Ansible utilise des fichiers de configuration pour définir diverses paramètres qui contrôlent son fonctionnement. Vous allez explorer la configuration par défaut, créer un fichier de configuration personnalisé et comprendre comment différentes options de configuration affectent le comportement d'Ansible. À la fin de ce laboratoire, vous aurez acquis une expérience pratique de la configuration d'Ansible pour différents scénarios, ce qui est essentiel pour adapter Ansible à vos besoins et à votre environnement spécifiques.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 93%. Il a reçu un taux d'avis positifs de 98% de la part des apprenants.

Comprendre la configuration par défaut d'Ansible

Commençons par examiner la configuration par défaut d'Ansible. Ansible recherche les fichiers de configuration à plusieurs emplacements, chacun ayant une priorité différente.

Tout d'abord, vérifions s'il existe un fichier de configuration Ansible système :

cat /etc/ansible/ansible.cfg

Vous pourriez voir un message d'erreur si ce fichier n'existe pas, ce qui est normal dans de nombreux environnements.

Maintenant, examinons les valeurs de configuration par défaut d'Ansible. Nous pouvons le faire en exécutant :

ansible-config dump

Cette commande vous montrera tous les paramètres de configuration actuels d'Ansible. C'est une longue liste, alors décomposons quelques paramètres importants :

  • DEFAULT_HOST_LIST : Le chemin du fichier d'inventaire par défaut.
  • DEFAULT_REMOTE_USER : L'utilisateur SSH par défaut que Ansible utilisera pour se connecter aux hôtes distants.
  • DEFAULT_BECOME_METHOD : La méthode par défaut que Ansible utilisera pour l'élévation de privilèges (comme sudo).

Ne vous inquiétez pas si vous ne comprenez pas encore tous ces paramètres. Au fur et à mesure que vous utiliserez Ansible, vous vous familiariserez avec ceux qui sont les plus pertinents pour vos besoins.

Appuyez sur Q pour quitter la sortie.

Maintenant, créons un simple fichier d'inventaire à utiliser dans les étapes suivantes :

echo "localhost ansible_connection=local" > /home/labex/project/inventory

Cela crée un fichier d'inventaire minimal avec seulement le localhost défini.

Créer un fichier de configuration Ansible personnalisé

Maintenant que nous comprenons la configuration par défaut, créons un fichier de configuration Ansible personnalisé. Cela nous permet de remplacer les paramètres par défaut et d'adapter le comportement d'Ansible à nos besoins.

Créez un nouveau fichier nommé ansible.cfg dans le répertoire /home/labex/project :

nano /home/labex/project/ansible.cfg

Ajoutez le contenu suivant au fichier :

[defaults]
inventory = /home/labex/project/inventory
remote_user = labex
host_key_checking = False
stdout_callback = yaml

[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False

Décortiquons ces paramètres :

  • inventory : Spécifie le chemin vers notre fichier d'inventaire.
  • remote_user : Définit l'utilisateur SSH par défaut pour les connexions.
  • host_key_checking : Désactive la vérification des clés d'hôte SSH, ce qui peut être utile dans les environnements de test (mais devrait être activé en production pour des raisons de sécurité).
  • stdout_callback : Change le format de sortie en YAML pour une meilleure lisibilité.
  • become : Active l'élévation de privilèges par défaut.
  • become_method : Définit sudo comme méthode d'élévation de privilèges.
  • become_user : Spécifie l'utilisateur auquel passer lors de l'élévation de privilèges.
  • become_ask_pass : Désactive la demande du mot de passe sudo.

Enregistrez et quittez l'éditeur. Dans nano, vous pouvez le faire en appuyant sur Ctrl+X, puis sur Y pour confirmer, et sur Enter pour enregistrer.

Maintenant, vérifions que Ansible utilise notre nouveau fichier de configuration. Exécutez :

ansible-config dump --only-changed
DEFAULT_BECOME(/home/labex/project/ansible.cfg) = True
DEFAULT_BECOME_ASK_PASS(/home/labex/project/ansible.cfg) = False
DEFAULT_BECOME_METHOD(/home/labex/project/ansible.cfg) = sudo
DEFAULT_BECOME_USER(/home/labex/project/ansible.cfg) = root
DEFAULT_HOST_LIST(/home/labex/project/ansible.cfg) = ['/home/labex/project/inventory']
DEFAULT_REMOTE_USER(/home/labex/project/ansible.cfg) = labex
DEFAULT_STDOUT_CALLBACK(/home/labex/project/ansible.cfg) = yaml
HOST_KEY_CHECKING(/home/labex/project/ansible.cfg) = False

Cette commande affichera uniquement les paramètres qui diffèrent de la configuration par défaut. Vous devriez voir les modifications que nous avons apportées dans notre fichier ansible.cfg personnalisé.

Tester la configuration personnalisée

Maintenant que nous avons notre configuration personnalisée en place, créons un simple playbook pour la tester. Cela nous aidera à comprendre comment nos modifications de configuration affectent le comportement d'Ansible.

Créez un nouveau fichier nommé test_config.yml dans le répertoire /home/labex/project :

nano /home/labex/project/test_config.yml

Mettez à jour le contenu comme suit :

---
- name: Test Custom Configuration
  hosts: all
  tasks:
    - name: Display remote user
      debug:
        msg: "Connected as user: {{ ansible_user }}"

    - name: Display privilege escalation info
      debug:
        msg: "Privilege escalation is {{ 'enabled' if ansible_become | default(false) else 'disabled' }}"

    - name: Show Ansible configuration
      debug:
        msg: "Inventory file: {{ lookup('config', 'DEFAULT_HOST_LIST') }}"

    - name: Check if become is enabled in ansible.cfg
      command: grep "become = True" /home/labex/project/ansible.cfg
      register: become_check
      changed_when: false
      failed_when: false

    - name: Display become setting from ansible.cfg
      debug:
        msg: "Become is {{ 'enabled' if become_check.rc == 0 else 'disabled' }} in ansible.cfg"

Ce playbook mis à jour apporte les modifications suivantes :

  1. Nous avons ajouté une valeur par défaut pour ansible_become pour éviter l'erreur de variable non définie.
  2. Nous avons ajouté deux nouvelles tâches qui vérifient directement le fichier ansible.cfg pour le paramètre become, offrant une représentation plus précise de votre configuration.

Maintenant, exécutons le playbook mis à jour :

ansible-playbook /home/labex/project/test_config.yml

Cela devrait s'exécuter sans erreurs et vous fournir des informations sur votre configuration Ansible.

De plus, attaquons le message d'avertissement de dépréciation en mettant à jour notre fichier ansible.cfg :

nano /home/labex/project/ansible.cfg

Ajoutez la ligne suivante sous la section [defaults] :

interpreter_python = /usr/bin/python3

Votre fichier ansible.cfg devrait maintenant ressembler à ceci :

[defaults]
inventory = /home/labex/project/inventory
remote_user = labex
host_key_checking = False
stdout_callback = yaml
interpreter_python = /usr/bin/python3

[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False

Enregistrez et quittez l'éditeur.

Maintenant, lorsque vous exécutez le playbook à nouveau :

ansible-playbook /home/labex/project/test_config.yml

Vous devriez voir la sortie sans le message d'avertissement de dépréciation, et elle devrait afficher correctement vos paramètres de configuration.

Résumé

Dans ce laboratoire, vous avez appris à propos des fichiers de configuration Ansible et à personnaliser le comportement d'Ansible. Voici les points clés à retenir :

  1. Ansible utilise des fichiers de configuration pour contrôler son comportement. La configuration par défaut peut être visualisée à l'aide de la commande ansible-config dump.

  2. Vous pouvez créer des fichiers de configuration personnalisés pour remplacer les paramètres par défaut. Ces fichiers sont généralement nommés ansible.cfg et peuvent être placés à différents emplacements, avec des priorités différentes.

  3. Les paramètres de configuration importants incluent :

    • inventory : Spécifie le chemin vers le fichier d'inventaire.
    • remote_user : Définit l'utilisateur SSH par défaut pour les connexions.
    • host_key_checking : Contrôle la vérification des clés d'hôte SSH.
    • become et les paramètres associés : Contrôlent l'élévation de privilèges.
  4. La commande ansible-config dump --only-changed est utile pour afficher uniquement les paramètres qui diffèrent de la configuration par défaut.

  5. Vous pouvez tester vos modifications de configuration en créant et en exécutant des playbooks qui affichent des informations de configuration.

  6. L'option --config vous permet de spécifier un fichier de configuration particulier lors de l'exécution de commandes Ansible, ce qui peut être utile pour les tests ou lorsque vous avez besoin d'utiliser différentes configurations pour différents scénarios.

Comprendre et être capable de personnaliser la configuration d'Ansible est essentiel pour adapter Ansible à votre environnement et à vos besoins spécifiques. Au fur et à mesure que vous continuerez à travailler avec Ansible, vous trouverez probablement utile d'ajuster ces paramètres pour optimiser vos flux de travail d'automatisation.

Entraînez-vous en créant différents fichiers de configuration pour différents scénarios. Par exemple, vous pourriez créer une configuration pour les environnements de test où les paramètres de sécurité sont moins stricts, et une autre pour les environnements de production avec des paramètres de sécurité plus rigoureux.

N'oubliez pas que certains paramètres, comme la désactivation de host_key_checking, peuvent être pratiques pour les tests, mais doivent être soigneusement étudiés dans les environnements de production où la sécurité est primordiale. Vérifiez toujours votre configuration Ansible dans le cadre de votre stratégie globale de sécurité du système.

Dans les prochains laboratoires, vous apprendrez à exploiter ces paramètres de configuration dans des scénarios plus complexes, en les intégrant avec des rôles, des inventaires dynamiques et d'autres fonctionnalités avancées d'Ansible.