Added truenas update && playbook for fedora and debian hosts

This commit is contained in:
max
2025-06-22 18:39:27 +02:00
parent 5528de7414
commit 3c7ce0f8c5
7 changed files with 93 additions and 2 deletions

View File

@ -0,0 +1,2 @@
# Git
https://github.com/fanuelsen/ansible/tree/master/ansible-truenas-api

View File

@ -0,0 +1,61 @@
- name: Checks if there is an update available from update server.
uri:
method: POST
url: https://{{ item.ip }}/api/v2.0/update/check_available
return_content: true
validate_certs: '{{ item.validate_certs }}'
headers:
Content-Type: application/json
Authorization: 'Bearer {{ item.token }}'
register: truenas_pending_updates
- name: Downloads (if not already in cache) and apply an update.
uri:
method: POST
url: https://{{ item.ip }}/api/v2.0/update/update
return_content: true
validate_certs: '{{ item.validate_certs }}'
headers:
Content-Type: application/json
Authorization: 'Bearer {{ item.token }}'
when: "truenas_pending_updates.json.status == 'AVAILABLE'"
- name: Wait for update to finish.
uri:
method: POST
url: https://{{ item.ip }}/api/v2.0/update/check_available
return_content: true
validate_certs: '{{ item.validate_certs }}'
headers:
Content-Type: application/json
Authorization: 'Bearer {{ item.token }}'
register: truenas_reboot_required
when: "truenas_pending_updates.json.status == 'AVAILABLE' or truenas_pending_updates.json.status == 'REBOOT_REQUIRED'"
until: "(truenas_reboot_required.json|default(dict(status=WAITING))).status == 'REBOOT_REQUIRED'"
retries: 20
delay: 30
- name: Reboot host
uri:
method: POST
url: https://{{ item.ip }}/api/v2.0/system/reboot
return_content: true
validate_certs: '{{ item.validate_certs }}'
headers:
Content-Type: application/json
Authorization: 'Bearer {{ item.token }}'
when: truenas_reboot_required.json.status | default (false) == 'REBOOT_REQUIRED'
- name: Returns whether the system completed boot and is ready to use.
uri:
method: GET
url: https://{{ item.ip }}/api/v2.0/system/state
return_content: true
validate_certs: '{{ item.validate_certs }}'
headers:
Content-Type: application/json
Authorization: 'Bearer {{ item.token }}'
register: truenas_system_ready
until: truenas_system_ready.content == '"READY"'
retries: 20
delay: 30

View File

@ -0,0 +1,14 @@
---
- hosts: truenas
gather_facts: false
vars:
sites:
- ip: 192.168.3.1
token: 1-gAIQbRICSPPqM1JCsfofc8gJgLvV8SglXV2xemYzBr2rzdZvQd5J0pMYeG45Jiqx
validate_certs: false
tasks:
- name: update-truenas-api
include_tasks: update-truenas-task.yml
loop: '{{ sites }}'