Actualiser synology_dsm_upgrade_api.yml
This commit is contained in:
parent
a48a3dae30
commit
ce2a448b23
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
- name: Synology DSM - déclencher une mise à jour via l'API DSM
|
- name: Synology DSM - déclencher une mise à jour via l'API DSM (Semaphore/legacy compatible)
|
||||||
hosts: synology
|
hosts: synology
|
||||||
gather_facts: false
|
gather_facts: false
|
||||||
|
|
||||||
|
|
@ -26,18 +26,14 @@
|
||||||
base_url: "{{ syno_scheme }}://{{ inventory_hostname }}:{{ syno_port }}"
|
base_url: "{{ syno_scheme }}://{{ inventory_hostname }}:{{ syno_port }}"
|
||||||
|
|
||||||
# 1) Découverte des APIs (paths & versions) via SYNO.API.Info
|
# 1) Découverte des APIs (paths & versions) via SYNO.API.Info
|
||||||
|
# IMPORTANT: Semaphore utilise souvent ansible.legacy.uri => pas de url_parameters, donc URL en 1 ligne
|
||||||
- name: Discover SYNO.API.Auth & SYNO.Core.Upgrade via SYNO.API.Info
|
- name: Discover SYNO.API.Auth & SYNO.Core.Upgrade via SYNO.API.Info
|
||||||
ansible.builtin.uri:
|
ansible.builtin.uri:
|
||||||
url: "{{ base_url }}/webapi/entry.cgi"
|
url: "{{ base_url }}/webapi/entry.cgi?api=SYNO.API.Info&version=1&method=query&query=SYNO.API.Auth,SYNO.Core.Upgrade"
|
||||||
method: GET
|
method: GET
|
||||||
return_content: true
|
return_content: true
|
||||||
validate_certs: "{{ syno_verify_ssl }}"
|
validate_certs: "{{ syno_verify_ssl }}"
|
||||||
status_code: 200
|
status_code: 200
|
||||||
url_parameters:
|
|
||||||
api: "SYNO.API.Info"
|
|
||||||
version: 1
|
|
||||||
method: "query"
|
|
||||||
query: "SYNO.API.Auth,SYNO.Core.Upgrade"
|
|
||||||
register: api_info
|
register: api_info
|
||||||
failed_when: api_info.json.success is not defined or api_info.json.success != true
|
failed_when: api_info.json.success is not defined or api_info.json.success != true
|
||||||
|
|
||||||
|
|
@ -70,14 +66,30 @@
|
||||||
validate_certs: "{{ syno_verify_ssl }}"
|
validate_certs: "{{ syno_verify_ssl }}"
|
||||||
return_content: true
|
return_content: true
|
||||||
status_code: 200
|
status_code: 200
|
||||||
url_parameters:
|
# NOTE: pas de url_parameters (legacy). On passe les paramètres en query_string.
|
||||||
api: "SYNO.API.Auth"
|
# Ansible uri accepte "body" pour POST, mais ici DSM Auth marche en GET.
|
||||||
version: "{{ auth_ver }}"
|
# On encode en query directement:
|
||||||
method: "login"
|
register: login
|
||||||
account: "{{ syno_user }}"
|
failed_when: login.json.success != true
|
||||||
passwd: "{{ syno_pass }}"
|
vars:
|
||||||
session: "{{ syno_session }}"
|
_login_url: >-
|
||||||
format: "sid"
|
{{ base_url }}/webapi/{{ auth_path }}
|
||||||
|
?api=SYNO.API.Auth
|
||||||
|
&version={{ auth_ver }}
|
||||||
|
&method=login
|
||||||
|
&account={{ syno_user | urlencode }}
|
||||||
|
&passwd={{ syno_pass | urlencode }}
|
||||||
|
&session={{ syno_session | urlencode }}
|
||||||
|
&format=sid
|
||||||
|
# surcharge url avec la version 1-ligne sans espaces
|
||||||
|
# (on ne peut pas mettre des espaces: donc on met une seule ligne ci-dessous)
|
||||||
|
- name: Login DSM API (SYNO.API.Auth) - URL finale
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "{{ base_url }}/webapi/{{ auth_path }}?api=SYNO.API.Auth&version={{ auth_ver }}&method=login&account={{ syno_user | urlencode }}&passwd={{ syno_pass | urlencode }}&session={{ syno_session | urlencode }}&format=sid"
|
||||||
|
method: GET
|
||||||
|
validate_certs: "{{ syno_verify_ssl }}"
|
||||||
|
return_content: true
|
||||||
|
status_code: 200
|
||||||
register: login
|
register: login
|
||||||
failed_when: login.json.success != true
|
failed_when: login.json.success != true
|
||||||
|
|
||||||
|
|
@ -88,16 +100,11 @@
|
||||||
# 3) (Optionnel) Check update (si la méthode existe)
|
# 3) (Optionnel) Check update (si la méthode existe)
|
||||||
- name: Check DSM update readiness (best effort)
|
- name: Check DSM update readiness (best effort)
|
||||||
ansible.builtin.uri:
|
ansible.builtin.uri:
|
||||||
url: "{{ base_url }}/webapi/{{ upgrade_path }}"
|
url: "{{ base_url }}/webapi/{{ upgrade_path }}?api=SYNO.Core.Upgrade&version={{ upgrade_ver }}&method={{ upgrade_check_method }}&_sid={{ sid }}"
|
||||||
method: GET
|
method: GET
|
||||||
validate_certs: "{{ syno_verify_ssl }}"
|
validate_certs: "{{ syno_verify_ssl }}"
|
||||||
return_content: true
|
return_content: true
|
||||||
status_code: 200
|
status_code: 200
|
||||||
url_parameters:
|
|
||||||
api: "SYNO.Core.Upgrade"
|
|
||||||
version: "{{ upgrade_ver }}"
|
|
||||||
method: "{{ upgrade_check_method }}"
|
|
||||||
_sid: "{{ sid }}"
|
|
||||||
register: upgrade_check
|
register: upgrade_check
|
||||||
failed_when: false
|
failed_when: false
|
||||||
|
|
||||||
|
|
@ -108,16 +115,11 @@
|
||||||
# 4) Start upgrade (l'update est supposée déjà téléchargée / prête)
|
# 4) Start upgrade (l'update est supposée déjà téléchargée / prête)
|
||||||
- name: Start DSM upgrade (SYNO.Core.Upgrade)
|
- name: Start DSM upgrade (SYNO.Core.Upgrade)
|
||||||
ansible.builtin.uri:
|
ansible.builtin.uri:
|
||||||
url: "{{ base_url }}/webapi/{{ upgrade_path }}"
|
url: "{{ base_url }}/webapi/{{ upgrade_path }}?api=SYNO.Core.Upgrade&version={{ upgrade_ver }}&method={{ upgrade_start_method }}&_sid={{ sid }}"
|
||||||
method: GET
|
method: GET
|
||||||
validate_certs: "{{ syno_verify_ssl }}"
|
validate_certs: "{{ syno_verify_ssl }}"
|
||||||
return_content: true
|
return_content: true
|
||||||
status_code: 200
|
status_code: 200
|
||||||
url_parameters:
|
|
||||||
api: "SYNO.Core.Upgrade"
|
|
||||||
version: "{{ upgrade_ver }}"
|
|
||||||
method: "{{ upgrade_start_method }}"
|
|
||||||
_sid: "{{ sid }}"
|
|
||||||
register: upgrade_start
|
register: upgrade_start
|
||||||
|
|
||||||
- name: Fail si start a échoué
|
- name: Fail si start a échoué
|
||||||
|
|
@ -134,16 +136,10 @@
|
||||||
# 5) Logout
|
# 5) Logout
|
||||||
- name: Logout DSM API
|
- name: Logout DSM API
|
||||||
ansible.builtin.uri:
|
ansible.builtin.uri:
|
||||||
url: "{{ base_url }}/webapi/{{ auth_path }}"
|
url: "{{ base_url }}/webapi/{{ auth_path }}?api=SYNO.API.Auth&version={{ auth_ver }}&method=logout&session={{ syno_session | urlencode }}&_sid={{ sid }}"
|
||||||
method: GET
|
method: GET
|
||||||
validate_certs: "{{ syno_verify_ssl }}"
|
validate_certs: "{{ syno_verify_ssl }}"
|
||||||
return_content: true
|
return_content: true
|
||||||
status_code: 200
|
status_code: 200
|
||||||
url_parameters:
|
|
||||||
api: "SYNO.API.Auth"
|
|
||||||
version: "{{ auth_ver }}"
|
|
||||||
method: "logout"
|
|
||||||
session: "{{ syno_session }}"
|
|
||||||
_sid: "{{ sid }}"
|
|
||||||
register: logout
|
register: logout
|
||||||
failed_when: false
|
failed_when: false
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue