site.yml
This commit is contained in:
1 parent
6be665af06
commit
538390bf6a
1 file changed
+56
-2
@@ -11,7 +11,60 @@
|
||||
- name: Configuration et durcissement des serveurs Linux
|
||||
hosts: all
|
||||
become: true
|
||||
gather_facts: true
|
||||
# Faits collectés dans pre_tasks, une fois le port SSH joignable déterminé.
|
||||
gather_facts: false
|
||||
|
||||
pre_tasks:
|
||||
# Un seul sondage sert deux buts : choisir le port de connexion (une VM neuve
|
||||
# répond sur 22, une machine déjà traitée sur ssh_port) et repérer les machines
|
||||
# éteintes, écartées proprement au lieu de faire échouer le passage.
|
||||
# Un ansible_port fixé dans l'inventaire fige le port : seul celui-là est testé.
|
||||
- name: Sonder les ports SSH possibles
|
||||
ansible.builtin.wait_for:
|
||||
host: "{{ ansible_host | default(inventory_hostname) }}"
|
||||
port: "{{ item }}"
|
||||
search_regex: "^SSH-"
|
||||
timeout: "{{ ssh_probe_timeout }}"
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
check_mode: false
|
||||
loop: "{{ ssh_probe_ports }}"
|
||||
register: ssh_probe
|
||||
failed_when: false
|
||||
tags: [always]
|
||||
|
||||
- name: Retenir les ports qui répondent
|
||||
ansible.builtin.set_fact:
|
||||
ssh_probe_reachable: "{{ ssh_probe.results | selectattr('state', 'defined') | map(attribute='port') | list }}"
|
||||
tags: [always]
|
||||
|
||||
- name: Se connecter sur le port qui répond
|
||||
ansible.builtin.set_fact:
|
||||
ansible_port: "{{ ssh_probe_reachable | first }}"
|
||||
when:
|
||||
- ansible_port is not defined
|
||||
- ssh_probe_reachable | length > 0
|
||||
tags: [always]
|
||||
|
||||
- name: Signaler une machine injoignable
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
Aucun service SSH sur {{ ansible_host | default(inventory_hostname) }}
|
||||
(ports testés : {{ ssh_probe_ports | join(', ') }}) — machine éteinte ou filtrée.
|
||||
{{ 'Hôte écarté de ce passage.' if skip_unreachable_hosts | bool else 'Le passage va échouer sur cet hôte.' }}
|
||||
when: ssh_probe_reachable | length == 0
|
||||
tags: [always]
|
||||
|
||||
- name: Écarter la machine injoignable du passage
|
||||
ansible.builtin.meta: end_host
|
||||
when:
|
||||
- ssh_probe_reachable | length == 0
|
||||
- skip_unreachable_hosts | bool
|
||||
tags: [always]
|
||||
|
||||
- name: Collecter les faits
|
||||
ansible.builtin.setup:
|
||||
tags: [always]
|
||||
|
||||
roles:
|
||||
- role: common
|
||||
@@ -62,7 +115,8 @@
|
||||
ansible.builtin.debug:
|
||||
msg:
|
||||
- "Hôte : {{ inventory_hostname }} ({{ ansible_facts['distribution'] }} {{ ansible_facts['distribution_version'] }})"
|
||||
- "SSH : port {{ ssh_port }}, root={{ ssh_permit_root_login }}"
|
||||
- "SSH : port(s) {{ ssh_ports_effective | default([ssh_port]) | join(', ') }}, root={{ ssh_permit_root_login }}"
|
||||
- "Session : port {{ ansible_port | default(22) }}"
|
||||
- "Pare-feu : {{ firewall_backend_effective | default('non géré') }}"
|
||||
- "Redémarrage : {{ 'REQUIS' if (updates_reboot_required | default(false)) else 'non requis' }}"
|
||||
tags: [always]
|
||||
Reference in new issue
Block a user