Recherche de site Web

Comment configurer GNOME à l’aide d’Ansible


GNOME (GNU Network Object Model Environment) est probablement l’environnement graphique le plus utilisé dans l’écosystème Linux, ne serait-ce que parce que toutes les principales distributions Linux telles que Fedora, RHEL, Debian et Ubuntu l’utilisent comme bureau par défaut. GNOME s’efforce d’être simple et facile à utiliser, et pour cette raison, non sans quelques critiques de la part d’une partie de la communauté Linux, a tendance à être moins personnalisable que d’autres environnements de bureau tels que KDE Plasma ou XFCE. Au lieu d’utiliser des fichiers de configuration en texte brut, GNOME stocke ses paramètres dans la base de données dconf, qui peut être manipulée à l’aide de l’interface graphique « dconf-editor », ou à partir de la ligne de commande à l’aide de l’utilitaire « dconf ».

Dans ce tutoriel, nous apprenons comment automatiser la configuration de GNOME à l’aide d’Ansible et plus particulièrement du module community.general.dconf, qui nous permet de lire et d’écrire des entrées dans la base de données dconf.

Dans ce tutoriel, vous allez apprendre :

  • Comment installer la collection Ansible générale de la communauté
  • Comment écrire un playbook pour configurer GNOME à l’aide d’Ansible

Introduction

Nous avons parlé d’Ansible par le passé, et nous avons vu à quel point c’est l’un des systèmes de provisionnement les plus utilisés et les plus faciles à apprendre sous Linux : si quelque chose peut être fait à partir de la ligne de commande, il existe probablement un module existant qui nous permet de l’intégrer dans le flux de travail d’Ansible, avec tous les avantages qu’il offre.

Pour configurer GNOME par programmation et répliquer facilement notre configuration partout où GNOME est utilisé, nous pouvons utiliser le module Ansible community.general.dconf, qui fait partie de la collection community-general. Ce module nous permet de gérer les entrées dans la base de données dconf utilisée par GNOME comme backend pour stocker les préférences de l’utilisateur.

Configuration requise pour l’installation

Pour utiliser le module community.general.dconf, nous devons installer Ansible lui-même et la « community-general collection », et nous devons nous assurer que la bibliothèque python3 psutil est installée sur la machine cible. Étant donné que le module Ansible fonctionne comme un wrapper autour de l’utilitaire « dconf », il va de soi que ce dernier doit également être disponible sur le système que nous avons l’intention de configurer ; cependant, comme il fait généralement partie de toute installation de GNOME, nous ne l’installerons pas explicitement ici.

Nous pouvons installer les exigences susmentionnées soit en utilisant notre gestionnaire de paquets de distribution préféré, soit, comme Ansible lui-même est écrit en Python, en utilisant pip, le gestionnaire de paquets Python. La première méthode permet la meilleure intégration possible des paquets dans le système ; En utilisant ce dernier, à la place, nous pouvons contrôler quelle version d’un paquet est installée, qu’il s’agisse de la dernière version ou d’une version spécifique dont nous avons peut-être besoin pour des raisons de compatibilité. En utilisant « pip », nous pouvons également installer des paquets uniquement pour notre utilisateur non privilégié, sans avoir besoin d’utiliser « sudo » ou d’autres méthodes pour élever les privilèges.

Installations spécifiques à la distribution

Ansible peut généralement être installé à l’aide des packages « ansible-core » ou « ansible ». Le premier fournit une installation sommaire du noyau du système d’approvisionnement et de la collection « par défaut » ; Ce dernier comprend également d’autres collections utiles entretenues par la communauté : « Community-General » en fait partie. Pour installer les paquets sur Fedora, nous pouvons utiliser dnf :

sudo dnf install ansible python3-psutil

Ansible peut également être installé sur Archlinux, en utilisant pacman :

sudo pacman -S ansible python-psutil

Sur Debian et ses dérivés tels qu’Ubuntu, nous pouvons utiliser la commande suivante pour installer Ansible avec la bibliothèque Python « psutil » :

sudo apt-get update && sudo apt-get install ansible python3-psutil

Installation universelle à l’aide de pip

Comme nous l’avons dit précédemment, si nous décidons d’utiliser pip pour installer les paquets, nous n’avons pas besoin d’utiliser l’élévation de privilèges. Pour effectuer l’installation uniquement pour notre utilisateur (et éventuellement dans un environnement virtuel Python), nous pouvons exécuter :

pip install ansible psutil

Utilisation du module community.general.dconf

Le module qui nous permet de gérer les entrées dans la base de données dconf est community.general.dconf, qui est essentiellement un wrapper autour de l’utilitaire dconf. Voici quelques exemples de la façon dont nous pouvons l’utiliser pour modifier certains paramètres. Dans le playbook suivant, je considère que la machine sur laquelle l’instance GNOME que nous voulons configurer est installée est également le nœud de contrôle Ansible :

- name: Configure GNOME
  hosts: localhost
  tasks:
    - name: Enable touchpad tap-to-click
      community.general.dconf:
        key: /org/gnome/desktop/peripherals/touchpad/tap-to-click
        value: 'true'

    - name: Disable event sounds
      community.general.dconf:
        key: /org/gnome/desktop/sound/event-sounds
        value: 'false'

    - name: Setup text editor
      community.general.dconf:
        key: /org/gnome/TextEditor/indent-style
        value: "'space'"

Dans l’exemple ci-dessus, nous avons créé trois tâches : la première est utilisée pour activer le tap-to-click du pavé tactile ; avec le second, nous désactivons les sons (assez ennuyeux) des événements GNOME, et avec le troisième, nous spécifions que nous voulons utiliser des espaces au lieu de tabulations pour l’indentation dans l’éditeur de texte GNOME.

Le module « community.general.dconf » accepte essentiellement trois paramètres :

  • clé
  • valeur
  • état

Le paramètre key est le chemin d’accès de la clé a dans la base de données dconf. À ce stade, vous pouvez vous demander : « comment puis-je connaître le chemin de la clé correspondant à l’option que je veux changer ? » La façon la plus pratique de le découvrir est de jeter un coup d’œil au contenu de la base de données dconf en utilisant directement l’utilitaire dconf (peut-être en canalisant la sortie vers grep, afin de filtrer certains mots-clés), qui peuvent être obtenus en exécutant :

dconf dump /

Le paramètre value représente la valeur que nous voulons attribuer à la clé dconf. Une chose très importante à retenir est que la valeur doit être spécifiée au format « GVariant ». Une stratégie qui peut être adoptée ici est de changer d’abord le paramètre souhaité manuellement, puis de jeter un coup d’œil à la valeur qui est écrite dans la base de données dconf et de la signaler dans la tâche. Normalement, si une valeur est signalée entre guillemets simples dans la base de données, les guillemets eux-mêmes doivent être considérés comme faisant partie de celle-ci, et doivent donc être placés entre guillemets doubles dans le playbook ansible (par exemple, dans l'exemple ci-dessus, 'space' est signalé comme ''space' et true comme 'true').

Le dernier paramètre accepté par le module est « state », qui peut être défini à un parmi « présent », « absent » ou « lu ». Par défaut, il est défini sur « present », donc ce paramètre peut être omis si nous voulons écrire une entrée. On peut le mettre à « absent » si on veut s’assurer qu’une entrée n’existe pas dans la base de données, ou à « read » pour récupérer la valeur d’une clé.

En supposant que nous ayons enregistré le playbook sous le nom de « gnome.yml » dans notre répertoire de travail actuel, nous pouvons les « exécuter » en exécutant :

ansible-playbook gnome.yml

Conclusions

Dans ce tutoriel, nous avons vu comment utiliser Ansible pour automatiser facilement la configuration de l’environnement de bureau GNOME sous Linux, en écrivant des clés et des valeurs correspondant aux paramètres que nous voulons modifier dans la base de données dconf.

Articles connexes: