Actualiser ping-portainer.yml

This commit is contained in:
l.covela 2026-01-19 11:13:43 +01:00
parent 7d902bc6a1
commit ac99824280
1 changed files with 42 additions and 44 deletions

View File

@ -12,55 +12,53 @@
portainer_internal_ip: 10.30.0.151 portainer_internal_ip: 10.30.0.151
portainer_port: 9443 portainer_port: 9443
# Port local aléatoire pour éviter les collisions entre jobs Semaphore
local_port: "{{ 20000 + (9999 | random) }}" local_port: "{{ 20000 + (9999 | random) }}"
# Socket ControlMaster (pour fermer proprement le tunnel)
ssh_control_socket: "/tmp/ansible-ssh-tunnel-{{ local_port }}.sock" ssh_control_socket: "/tmp/ansible-ssh-tunnel-{{ local_port }}.sock"
tasks: tasks:
- name: Ouvrir le tunnel SSH (fork en background) - block:
shell: >
ssh
-p {{ ssh_port }}
-o ExitOnForwardFailure=yes
-o StrictHostKeyChecking=no
-o UserKnownHostsFile=/dev/null
-o ServerAliveInterval=10
-o ServerAliveCountMax=3
-M -S {{ ssh_control_socket }}
-f -N
-L 127.0.0.1:{{ local_port }}:{{ portainer_internal_ip }}:{{ portainer_port }}
{{ ssh_user }}@{{ ssh_host }}
register: tunnel_open
changed_when: true
failed_when: tunnel_open.rc != 0
- name: Attendre que le port local du tunnel soit en écoute - name: Ouvrir le tunnel SSH (fork en background)
wait_for: shell: >
host: 127.0.0.1 ssh
port: "{{ local_port }}" -p {{ ssh_port }}
delay: 1 -o ExitOnForwardFailure=yes
timeout: 20 -o StrictHostKeyChecking=no
-o UserKnownHostsFile=/dev/null
-o ServerAliveInterval=10
-o ServerAliveCountMax=3
-M -S {{ ssh_control_socket }}
-f -N
-L 127.0.0.1:{{ local_port }}:{{ portainer_internal_ip }}:{{ portainer_port }}
{{ ssh_user }}@{{ ssh_host }}
register: tunnel_open
changed_when: true
- name: Ping HTTPS Portainer via le tunnel - name: Attendre que le port local du tunnel soit en écoute
uri: wait_for:
url: "https://127.0.0.1:{{ local_port }}/" host: 127.0.0.1
method: GET port: "{{ local_port }}"
validate_certs: false delay: 1
return_content: false timeout: 20
status_code: [200, 301, 302, 403]
register: portainer_response
- name: OK - name: Ping HTTPS Portainer via le tunnel
debug: uri:
msg: "✅ Portainer joignable via tunnel (status {{ portainer_response.status }})" url: "https://127.0.0.1:{{ local_port }}/"
method: GET
validate_certs: false
return_content: false
status_code: [200, 301, 302, 403]
register: portainer_response
always: - name: OK
- name: Fermer le tunnel SSH (si ouvert) debug:
shell: > msg: "✅ Portainer joignable via tunnel (status {{ portainer_response.status }})"
ssh -p {{ ssh_port }}
-S {{ ssh_control_socket }} always:
-O exit - name: Fermer le tunnel SSH (si ouvert)
{{ ssh_user }}@{{ ssh_host }} shell: >
ignore_errors: true ssh -p {{ ssh_port }}
-S {{ ssh_control_socket }}
-O exit
{{ ssh_user }}@{{ ssh_host }}
ignore_errors: true