From bbb37427db9a58734adc494e3f2f6430dd5fe471 Mon Sep 17 00:00:00 2001 From: Mickael Asseline Date: Sat, 10 Jul 2021 19:28:41 +0000 Subject: [PATCH] docs: update Configuration/Ansible/Modules --- Configuration/Ansible/Modules.md | 99 +++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/Configuration/Ansible/Modules.md b/Configuration/Ansible/Modules.md index 604d602..66aff05 100644 --- a/Configuration/Ansible/Modules.md +++ b/Configuration/Ansible/Modules.md @@ -2,7 +2,7 @@ title: Ansible - Les modules description: Utilisation de différents modules Ansible published: true -date: 2021-07-10T19:08:16.559Z +date: 2021-07-10T19:28:39.424Z tags: ansible, configuration, module editor: markdown dateCreated: 2021-07-09T15:18:02.744Z @@ -519,4 +519,101 @@ Mise à jours when: reboot_required_file.stat.exists ``` +# SSH : CREATION ET DEPLOIEMENT DE CLEFS +
+ +
+ +## Description +Documentation : + - https://docs.ansible.com/ansible/latest/collections/ansible/posix/authorized_key_module.html + - https://docs.ansible.com/ansible/latest/collections/community/crypto/openssh_keypair_module.html + +Objectifs : générer une clef ssh et la déployer +Attention : où suis-je ? qui suis-je ? + +## Paramètres openssh_keypair +|--|--| +| `attibutes` | Attributs des fichiers (non supprimable etc) | +| `comment` | Commentaire de la clef | +| `force` | Regénère la clef si elle existe déjà | +| `group` | Groupe propriétaire des fichiers | +| `mode` | Permisssions (cf file, 0600, u+rw) | +| `owner` | Propirétaire | +| `path` | Localisation des clefs (attention sécurité de la clef privée) | +| `regenerate` | never / fail / partial_idempotence (si non conforme) / full_idempotence (et si non lisible) / always | +| `size` | Taille de la clef | +| `state` | present/absent | +| `type` | rsa / dsa / rsa1 / ecdsa / ed25519 | +| `unsafe_writes` | Prévenir les corruptions de fichiers | + +## Paramètres authorized_key +|--|--| +| `comment` | Commentaire (écrase le commentaire d'origine) | +| `exclusive` | Permet de supprimer les clefs non mentionnée (plusieurs clefs possibles) | +| `follow` | Suivre les liens symboliques | +| `key` | Contenu de la clef (cf lookup) | +| `key_options` | Options de la clef ssh (from=...) | +| `manage_dir` | Gère lui-même le répertoire (création etc...) - default yes | +| `path` | Chemin alternatif vers la clef (default .ssh...) | +| `state` | present / absent | +| `user` | Utilisateur de la machine cible où sera installé la clef | + + +## Exemple +Génération de clef + +``` yaml +- name: mon premier playbook + hosts: all + remote_user: vagrant + tasks: + - name: generate SSH key" + openssh_keypair: + path: /tmp/xavki + type: rsa + size: 4096 + state: present + force: no + run_once: yes + delegate_to: localhost +``` +Création d'un utilisateur et déploiement de sa clé +```yaml + - name: création du user devops + user: + name: devops + shell: /bin/bash + groups: sudo + append: yes + password: "{{ 'password' | password_hash('sha512') }}" + become: yes + + - name: Add devops user to the sudoers + copy: + dest: "/etc/sudoers.d/devops" + content: "devops ALL=(ALL) NOPASSWD: ALL" + become: yes + + - name: Deploy SSH Key + authorized_key: + user: devops + key: "{{ lookup('file', '/tmp/xavki.pub') }}" + state: present + become: yes +``` + +Mode exclusif + +```yaml +- name: Set authorized key, removing all the authorized keys already set + authorized_key: + user: root + key: '{{ item }}' + state: present + exclusive: True + with_file: + - public_keys/doe-jane +``` +