Ansible est l'un des meilleurs outils d'automatisation disponibles, offrant des outils simples, intuitifs et puissants pour effectuer des tâches d'automatisation dans le monde moderne.
Pour la plupart des tâches d'automatisation, vous devrez créer des répertoires, en particulier lors de l'installation de divers outils et applications, de sauvegardes et de restaurations. Bien que vous puissiez effectuer ces tâches à l'aide d'un script automatisé, Ansible offre de meilleures fonctionnalités, vous permettant de créer des répertoires dans des hôtes spécifiés.
Ce didacticiel vous montre comment utiliser le module de fichiers Ansible pour créer, supprimer et modifier les autorisations de répertoire pour les hôtes spécifiés.
Comment créer un répertoire dans Ansible
L'une des méthodes suivantes peut être utilisée pour créer un répertoire dans Ansible :
- Une commande Ansible brute avec le module de commande
- Un module de fichiers dans un playbook Ansible
Pour créer un répertoire dans Ansible à l'aide du module de commande, entrez la commande ci-dessous :
$ ansible all -m commande -a "mkdir ~/backups"Après avoir entré la commande ci-dessus, vous devriez obtenir la sortie ci-dessous :
Entrez la phrase secrète pour la clé '/home/user/.ssh/id_rsa' :[AVERTISSEMENT] : envisagez d'utiliser le module de fichiers avec state=directory plutôt que d'exécuter 'mkdir'. Si vous devez utiliser la commande car le fichier est insuffisant, vous pouvez ajouter 'warn: false' à cette tâche de commande ou définir 'command_warnings=False' dans ansible.cfg pour se débarrasser de ce message.
35.222.210.12 | CHANGÉ | rc=0 >>
Vérifiez que votre inventaire d'hôtes Ansible dans /etc/ansible/hosts contient les informations correctes sur vos hôtes distants.
Bien que le module de commande soit simple à utiliser sur un seul hôte Ansible, il devient très inefficace lorsqu'il s'agit de plusieurs hôtes avec des répertoires et des tâches différents.
Pour contrer cet inconvénient, nous allons utiliser le module de fichiers Ansible et construire un playbook contenant les hôtes que nous souhaitons utiliser et les répertoires que nous souhaitons créer.
REMARQUE: Le module de fichiers peut également être utilisé comme une seule commande dans Ansible, mais il fonctionne un peu comme le module de commande.
Pour utiliser un playbook Ansible, créez un fichier YAML et saisissez les entrées suivantes pour créer un répertoire :
- hôtes : toutes les tâches :- nom : répertoire de création du module de fichiers Ansible
déposer:
chemin : ~/sauvegardes
état : répertoire
Enregistrez le fichier et utilisez ansible-playbook pour créer les répertoires :
ansible-playbook mkdir.ymlCela devrait produire une sortie comme celle ci-dessous, indiquant que les actions ont été effectuées avec succès à l'aide du fichier de playbook spécifié.
Jouer à tous] ********************************************** ************************************************** *************TÂCHE [Rassembler les faits] ********************************************* ******************************************************** **
Entrez la phrase secrète pour la clé '/home/user/.ssh/id_rsa' :
d'accord : [35.222.210.12]
TÂCHE [Répertoire de création du module de fichiers Ansible] ****************************************** **************************************
d'accord : [35.222.210.12]
JOUER RÉCAPITULATIF ************************************************ ************************************************** ***********
35.222.210.12 : ok=2 modifié=0 inaccessible=0 échec=0 ignoré=0 sauvé=0 ignoré=0
Comment créer plusieurs répertoires avec des éléments
Les playbooks Ansible vous permettent également de créer plusieurs répertoires à l'aide de l'instruction with_items dans le fichier YAML.
Par exemple, pour créer des sauvegardes pour les trois services, MySQL, référentiel et configuration, vous pouvez créer la tâche indiquée dans le fichier YAML ci-dessous :
- hôtes : toutes les tâches :- name: Ansible crée plusieurs répertoires with_items
déposer:
chemin : ~/backups/item
état : répertoire
avec_éléments :
- 'mysql'
- 'dépôt'
- 'config'
Enregistrez le fichier ci-dessus et exécutez-le avec ansible-playbook.
$ ansible-playbook mkdir_multi.yml JOUER [tout] ********************************************* ******************************************************** ************************************************** ************************************************** ***TÂCHE [Rassembler des faits] ********************************************* ************************************************** ************************************************** ********************************************
Entrez la phrase secrète pour la clé '/home/user/.ssh/id_rsa' :
d'accord : [35.222.210.12]
TASK [Ansible crée plusieurs répertoires avec_items] ****************************************** ************************************************** ************************************************** *************
changé : [35.222.210.12] => (élément=mysql)
changé : [35.222.210.12] => (item=référentiel)
modifié : [35.222.210.12] => (élément=config)
JOUER RÉCAPITULATIF ************************************************ ******************************************************** ************************************************** **************************************************
35.222.210.12 : ok=2 modifié=1 inaccessible=0 échec=0 ignoré=0 sauvé=0 ignoré=0
Le playbook ci-dessus doit créer plusieurs répertoires, tels que ~/backups/mysql, ~/backups/repository et ~/backups/config.
$ ls -laLa sortie de la liste des répertoires est illustrée ci-dessous :
total 0drwxrwxr-x. 5 debian debian 51 mars 6 17:26 .
drwx------. 6 debian debian 117 mars 6 17:26…
drwxrwxr-x. 2 debian debian 6 mars 6 17:26 config
drwxrwxr-x. 2 debian debian 6 mars 6 17:26 mysql
drwxrwxr-x. 2 debian debian 6 mars 6 17:26 référentiel
Comment définir des autorisations pour un répertoire
Ansible vous permet de spécifier des autorisations pour un répertoire à l'aide de la directive mode. Considérez le playbook suivant, qui crée un répertoire et définit des autorisations :
- hôtes : tousTâches:
- nom : Ansible crée un répertoire et définit les autorisations
déposer:
chemin : /sauvegardes
état : répertoire
mode : "u=rw,g=wx,o=rwx"
devenir : oui
Dans l'entrée ci-dessus, nous avons créé un répertoire dans /. Il nous fallait aussi devenir root, d'où le devenir : yes entry.
$ autorisation ansible-playbook.yml JOUER [tout] ********************************************* ******************************************************** ************************************************** ************************************************** ***TÂCHE [Rassembler des faits] ********************************************* ************************************************** ************************************************** ********************************************
Entrez la phrase secrète pour la clé '/home/user/.ssh/id_rsa' :
d'accord : [35.222.210.12]
TÂCHE [Ansible créer un répertoire et définir des autorisations] ******************************************* ************************************************** ************************************************** ****************
modifié : [35.222.210.12]
JOUER RÉCAPITULATIF ************************************************ ******************************************************** ************************************************** ********************************************************
35.222.210.12 : ok=2 modifié=1 inaccessible=0 échec=0 ignoré=0 sauvé=0 ignoré=0
Si vous affichez les autorisations du répertoire que nous avons créé, vous verrez ce qui suit :
$ ls -lrt / | sauvegardes grepLa sortie est comme indiqué ci-dessous :
dessin--wxrwx. 2 root root 6 mars 6 17:36 sauvegardesComment modifier de manière récursive les autorisations dans un répertoire
Pour modifier les autorisations d'un répertoire et de ses fichiers de manière récursive, spécifiez simplement l'entrée récursive, comme indiqué ci-dessous :
- hôtes : tousTâches:
- nom : Ansible crée un répertoire et définit les autorisations
déposer:
chemin : /sauvegardes
état : répertoire
mode : "u=rw,g=wx,o=rwx"
récursif : oui
devenir : oui
Comment définir des autorisations dans plusieurs répertoires
La configuration des autorisations pour plusieurs répertoires dans Ansible est également aussi simple que quelques lignes d'entrées. Considérez le livre de jeu suivant.
- hôtes : tousTâches:
- nom: Ansible crée plusieurs répertoires avec des autorisations
déposer:
chemin : " élément.chemin "
mode : "élément.mode"
état : répertoire
avec_éléments :
- chemin : '~/backups/mysql', mode : '0777'
- chemin : '~/backups/repository', mode : '0755'
- chemin : '~/backups/config', mode : '0707'
Comment supprimer un répertoire dans Ansible
Pour supprimer un répertoire et tout son contenu à l'aide d'un playbook Ansible, spécifiez l'état absent, comme indiqué ci-dessous :
- hôtes : tousTâches:
- nom: répertoire de suppression Ansible
déposer:
chemin : /sauvegardes
état : absent
devenir : oui
Cette commande supprimera le répertoire et tous les fichiers et répertoires enfants.
REMARQUE: Assurez-vous que vous disposez des autorisations pour le répertoire sur lequel vous travaillez.
Comment créer un répertoire horodaté
Dans certains cas, vous devrez peut-être créer un répertoire avec un horodatage qui lui est attaché, ce qui peut être très utile, en particulier lors de la création de sauvegardes. Pour créer un répertoire horodaté, nous pouvons utiliser la variable ansible_date_time.
Considérez le livre de jeu suivant :
- hôtes : tousTâches:
- nom : Ansible ajoute un horodatage au répertoire
déposer:
chemin : "/backups/mysqlansible_date_time.Date"
état : répertoire
mode : "0777"
devenir : oui
Une fois que vous exécutez le playbook, vous aurez un répertoire avec l'horodatage.
$ ls -lLa liste du répertoire doit être comme indiqué ci-dessous :
total 0 drwxrwxrwx. 2 root root 6 mars 6 18:03 mysql2021-03-06REMARQUE: Pour éviter les erreurs, vérifiez toujours la syntaxe du fichier YAML que vous avez l'intention d'utiliser dans Ansible.
Conclusion
Ce tutoriel vous a montré que travailler avec les modules Ansible est très simple et intuitif, ce qui simplifie l'automatisation de tâches complexes. En utilisant le module de fichiers Ansible, vous pouvez créer un ou plusieurs répertoires et ajouter des autorisations pour chacun. Vous pouvez également utiliser le même module pour supprimer un répertoire Pour plus d'informations sur l'utilisation du module de fichiers Ansible, consultez la documentation officielle sur la page des ressources.