--- title: Ansible - Les modules description: Utilisation de différents modules Ansible published: true date: 2021-07-10T18:40:59.091Z tags: ansible, configuration, module editor: markdown dateCreated: 2021-07-09T15:18:02.744Z --- ![](https://blog.dbi-services.com/wp-insides/uploads/sites/2/2021/03/ansible-logo.png) # FILE : DIRECTORY, SOFTLINK, DROITS, TOUCH...
## Description Doc : https://docs.ansible.com/ansible/latest/modules/file_module.html Commande : `ansible-doc file` Objectif : gestion des fichiers et répertoires Périmètre : fichiers, répertoires, liens symboliques ## Paramètres |--|--| | `attribute` | Paramètres particuliers d'un fichier : immutabilité etc... (https://fr.wikipedia.org/wiki/Chattr)| | `force` | Pour les liens symboliques (si le fichier source existe pas, la destination existe)| | `group/owner` | Propriétaire et groupe de l'élément| | `mode` | Sous les deux formats : "0755" ou "u=rwx,g=rx,o=rx"| | `path` | Localisation| | `recurse` | Création du chemin intermédiaire si n'existe pas (yes/no) > pour directory uniquement| | `src` | Pour les liens (hard ou symbolique)| | `state` | Type (absent / directory / file / hard / link / touch)| ## Commandes Créer un répertoire ```yaml - name: création du répertoire /tmp/xavki file: path: /tmp/xavki/ state: directory ``` > Le propriétaire du dossier et l'utilisateur de connexion {.is-info} Changement de user > root ```yaml - name: création du répertoire /tmp/xavki file: path: /tmp/xavki/ state: directory owner: root ``` become = yes > différents endroits pour le faire * cli > -b * playbook/tasks > become: yes ```yaml - name: création du répertoire /tmp/xavki file: path: /tmp/xavki/ state: directory owner: root become: yes ``` > Attention à l'indentation {.is-warning} Modification du groupe et des droits (RWX-RX-RX - 0755) | stat ```yaml - name: création du répertoire /tmp/xavki file: path: /tmp/xavki/ state: directory owner: root group: root mode: 0755 become: yes ``` Récursivité (pour directory uniquement ```yaml - name: création du répertoire /tmp/xavki file: path: /tmp/xavki/1/2/3/4 recurse: yes state: directory owner: root group: root mode: 0755 ``` Touch ```yaml - name: création du répertoire /tmp/xavki file: path: /tmp/xavki/1/2/3/4/fichier.txt state: touch owner: root group: root mode: 0755 ``` Lien symbolique = lien vers fichier (diff avec hardlink = lien vers inode) ```yaml - name: création du répertoire /tmp/xavki file: src: /tmp/xavki/1/2/3/4/ dest: /tmp/symlink state: link #hard owner: root group: root mode: 0755 ``` Suppression de fichier ```yaml - name: dir sans idempotence file: path: /tmp/xavki.txt state: absent ``` Suppression de répertoire récursive ```yaml - name: dir sans idempotence file: path: /tmp/xavki/ state: absent ``` # USER : CREER, SUPPRIMER, GERER DES UTILISATEURS
## Description Doc : https://docs.ansible.com/ansible/latest/modules/user_module.html Commande : `ansible-doc user` Equivalence : `useradd/adduser/userdel/deluser/luseradd` ## Paramètres |--|--| | `append yes/no` | En lien avec groups / ajout aux groupes ou changement | | `comment` | Commentaire associé au user | | `create_home yes/no` | Création de la home ou pas | | `expires format epoch` | Date d'expiration | | `force` | Permet de forcer la suppression des fichier d'un user | | `generate_ssh_key` | Génère en même temps une clef ssh à l'utilisateur | | `group` | Définit le groupe principal de l'utilisateur | | `groups` | Définit les groupes secondaires qui seront ajoutés | | `home` | Définition de la home du user | | `local` | Dans le cas d'une décentralisation de la gestion des users (forcer localement) | | `move_home` | Pour déplacer une home existante | | `name` | nom utilisateur | | `password` | Hash du password | | `password_lock` | Vérouiller le password du user | | `remove` | En cas de state absent, suppression en même des répertoires du user | | `shell` | Définition sur shell attribué au user | | `skeleton` | Avec create_home, pour définir le squelette à appliquer | | `ssh_key_bits` | Taille de la clef ssh générée | | `ssh_key_comment` | Commentaire de la clef ssh | | `ssh_key_file` | Spécifie le chemin de la clef ssh | | `ssh_key_passphrase`| Définir la passphrase de la clef ssh sinon pas de passphrase | | `ssh_key_type` | rsa par défaut, type de clef ssh | | `state` | Création ou suppression | | `system` | A la création définir ou non un compte system | | `uid` | Fixer l'uid | | `update_password always/on_create` | Soit mettre à jour sur changement ou juste création ## Commandes Création d'un user avec password ```yaml - name: création de xavki user: name: xavki state: present password: "{{ 'password' | password_hash('sha512') }}" ``` Ajout au groupe sudo ```yaml - name: création de xavki user: name: xavki state: present groups: sudo append: yes password: "{{ 'password' | password_hash('sha512') }}" ``` Fixer l'uid ```yaml - name: création de xavki user: name: xavki state: present uid: 1200 groups: sudo append: yes password: "{{ 'password' | password_hash('sha512') }}" ``` Génération de la clef ssh ```yaml - name: création de xavki user: name: xavki state: present uid: 1200 groups: sudo append: yes generate_ssh_key: yes password: "{{ 'password' | password_hash('sha512') }}" ``` Ajout d'un register et découvrir les outputs ```yaml - name: création du user xavki user: name: xavki state: present generate_ssh_key: yes uid: 1200 groups: sudo append: yes password: "{{ 'password' | password_hash('sha512') }}" register: mavar - name: debug debug: msg: "{{ mavar }}" ``` nologin avec le shell ```yaml - name: création du user xavki user: name: xavki state: present shell: /sbin/nologin generate_ssh_key: yes uid: 1200 groups: sudo append: yes password: "{{ 'password' | password_hash('sha512') }}" password_lock: yes ``` Suppression d'un user ```yaml - name: création du user xavki user: name: xavki state: absent ``` # REGISTER & STAT
## Description Doc : Documentation : https://docs.ansible.com/ansible/latest/modules/stat_module.html ## Paramètres |--|--| | `path` | Chemin du fichier ou répertoire | | `follow` | Suivre les liens symboliques | | `get_checksum` | Récupérer la checksum | | `checksum_algorithm` | Type de checksum (md5, etc) | | `get_mime` | Récupération du type de données | ## Commandes Création d'un fichier ```yaml - name: création d'un fichier file: path: /tmp/xavki.txt state: touch owner: xavki ``` Utilisation de stat ```yaml - name: check avec stat stat: path: /tmp/xavki.txt ``` Récupération de la variable ```yaml - name: check avec stat stat: path: /tmp/xavki.txt register: __fichier_xavki_exist - name: debug debug: var: __fichier_xavki ``` Récupération d'une clef ```yaml - name: debug debug: var: __fichier_xavki.stat.exists ``` Utilisation conditionnnel ```yaml - name: création répertoire xavki file: path: /tmp/xavki state: directory when: __fichier_xavki.stat.exists ``` ## Exemple ```yaml tasks: - name: création d'un fichier file: path: /tmp/xavki.txt state: touch owner: root when: xavki_file is defined - name: check avec stat stat: path: /tmp/xavki.txt register: __fichier_xavki - name: debug debug: var: __fichier_xavki.stat.exists - name: création répertoire xavki file: path: /tmp/xavki state: directory when: __fichier_xavki.stat.exists and xavki_file is defined ```