fix 004
This commit is contained in:
1 parent
05141e6ec2
commit
b307a35eb4
9 files changed
+46
-32
No files matched your search
@@ -12,10 +12,10 @@ ssh_port: 22
|
||||
# connecte en root) ; le mot de passe root reste utilisable sur la console.
|
||||
ssh_permit_root_login: prohibit-password
|
||||
|
||||
# Comptes autorisés en SSH. Chaque entrée : name (obligatoire), groups (liste,
|
||||
# « sudo_or_wheel » est traduit selon l'OS), sudo_nopasswd (bool), shell,
|
||||
# password_hash (optionnel, pour un mot de passe local — jamais en clair).
|
||||
# Les clés publiques sont lues dans files/keys/<name>/*.pub.
|
||||
# Comptes autorisés en SSH. Chaque entrée : name (obligatoire), keys (liste de
|
||||
# fichiers .pub pris dans files/keys/), groups (liste, « sudo_or_wheel » est
|
||||
# traduit selon l'OS), sudo_nopasswd (bool), shell, password_hash (optionnel,
|
||||
# pour un mot de passe local — jamais en clair).
|
||||
ssh_users:
|
||||
- name: root
|
||||
|
||||
|
||||
@@ -1,14 +1,26 @@
|
||||
---
|
||||
- name: Recenser les clés publiques disponibles par compte
|
||||
- name: Recenser les clés publiques de chaque compte
|
||||
# Fichiers listés dans « keys », à plat dans files/keys/ (comme cles/ du dépôt Terraform).
|
||||
ansible.builtin.set_fact:
|
||||
ssh_users_keys: >-
|
||||
{{ ssh_users_keys | default({}) | combine({
|
||||
item.name: lookup('ansible.builtin.fileglob', ssh_keys_dir ~ '/' ~ item.name ~ '/*.pub', wantlist=True)
|
||||
item.name: item['keys'] | default([]) | map('regex_replace', '^', ssh_keys_dir ~ '/') | list
|
||||
}) }}
|
||||
loop: "{{ ssh_users }}"
|
||||
loop_control:
|
||||
label: "{{ item.name }}"
|
||||
|
||||
- name: Vérifier que les fichiers de clés déclarés existent
|
||||
ansible.builtin.stat:
|
||||
path: "{{ item }}"
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
loop: "{{ ssh_users_keys.values() | flatten | unique }}"
|
||||
loop_control:
|
||||
label: "{{ item | basename }}"
|
||||
register: ssh_keys_stat
|
||||
failed_when: not ssh_keys_stat.stat.exists
|
||||
|
||||
- name: Calculer la liste AllowUsers
|
||||
ansible.builtin.set_fact:
|
||||
ssh_allow_users_effective: "{{ ssh_users | map(attribute='name') | list }}"
|
||||
@@ -23,7 +35,7 @@
|
||||
- not (ssh_ansible_login == 'root' and ssh_permit_root_login == 'no')
|
||||
fail_msg: >-
|
||||
Le compte de connexion Ansible « {{ ssh_ansible_login }} » doit figurer dans ssh_users
|
||||
avec au moins une clé dans {{ ssh_keys_dir }}/{{ ssh_ansible_login }}/*.pub,
|
||||
avec au moins un fichier dans sa liste « keys » (présent dans {{ ssh_keys_dir }}/),
|
||||
et ssh_permit_root_login ne peut pas valoir « no » si Ansible se connecte en root.
|
||||
vars:
|
||||
ssh_ansible_login: "{{ ansible_user | default('root') }}"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# {{ ansible_managed }}
|
||||
# Source : files/keys/{{ item.name }}/*.pub
|
||||
# Source : {{ ssh_users_keys[item.name] | map("basename") | sort | join(", ") }}
|
||||
{% for key_file in ssh_users_keys[item.name] | sort %}
|
||||
{{ lookup('ansible.builtin.file', key_file) | trim }}
|
||||
{% endfor %}
|
||||
Reference in new issue
Block a user