TrueNAS – automatyczny backup konfiguracji – API, skrypty, TrueCommand

Backup konfiguracji TrueNAS. Bo poza kapią samych danych musimy mieć też kopię konfiguracji TrueNAS. Pamiętajmy, że nawet jak mamy dyski z danymi a stracimy dysk systemowy to w najlepszym wypadku czeka nas sporo konfiguracji a w najgorszym może się okazać, że straciliśmy na przykład klucze szyfrujące dane na naszych dyskach więc.. de facto straciliśmy wszystkie dane. To, że trzeba robić backup konfiguracji TrueNAS już wiemy, ale jak robić? Jak to robić w wersji PRO i to w dodatku automatycznie? Jest kilka sposobów. Zapraszam na cały materiał.

Jak już mamy ustawione automatyczne kopie bezpieczeństwa naszych danych. Najpierw z naszych serwerów czy komputerów na nasz TrueNAS jakimiś SMB, Nextcloud, Windows backup czy czym tam jeszcze. Potem z naszego TrueNAS na inny nasz TrueNAS, Replikacje, synchronizacje, Syncthing czy co tam komu w duszy gra, bo przecież dane trzeb mieć w dwóch miejscach. Tylko często umyka nam w tym jedna rzecz. Właśnie kopie konfiguracji naszych TrueNAS. Jasne każdy ją zrobi przynajmniej raz po skonfigurowaniu po raz pierwszy. Potem po każdej zmianie również, prawda? Zawsze o tym pamiętacie, prawda? No to zazdroszczę. Uważam, że źródło największej ilości problemów to na ogół białko między fotelem i klawiaturą więc.. nie, nie zawsze pamiętam o tworzeniu backupu konfiguracji po każdej zmianie.

O tym właśnie będzie ten materiał. Jak ustawić automatyczny backup konfiguracji. Najpierw bardzo krótko opowiem co to jest API i do czego nam się przyda. Potem pokażę jak wykonać manualnie backup konfiguracji. Potem wygenerujemy token do API. Pokażę jak działa backup w TrueCommand a na końcu pokarzę jak przy pomocy prostego skryptu, nie wchodząc na stronę TrueNAS wykonać backup konfiguracji z linii komend.

Co to i po co nam to API?

My jako białkowi użytkownicy potrzebujemy interface jak na przykład strona WWW. Wchodzimy na taką stronę logujemy się, przechodzimy po zakładkach i klikamy w odpowiednie miejsce, żeby ściągnąć backup konfiguracji. I to działa ale nie brzmi to jak coś co dało by się zautomatyzować a przynajmniej w sposób prosty. I tutaj na białym koniu wkracza API czyli application programming interface. To sposób komunikacji wykorzystywany w komunikacji maszyn-maszyna. Bazujący na XML protokół komunikacji działający na zasadzie zapytanie odpowiedź. Tak też jest w wypadku TrueNAS. Każdy dostawca usługi obsługujący mechanizm API dostarcza instrukcję jak z niego skorzystać. W olbrzymim skrócie instrukcja mówi wyślij zapytanie o takiej i takiej treści zostanie    wykonane takie i takie zadanie. W ten sposób właśnie przy odpowiedzi na konkretne zapytanie będziemy tworzyć kopie bezpieczeństwa konfiguracji TrueNAS. Poza możliwością tworzeni kopii bezpieczeństwa przez API  możemy zarządzać TrueNAS ale tym razem tylko backup konfiguracji.

Generowanie klucza API (token)

Tak jak kiedy logujemy się do naszej strony zarządzającej TrueNAS i używamy loginu hasła no i najlepiej dwu składnikowej autoryzacji. Tak w wypadku API do uwierzytelniania służy na token API. Takich tokenów API może być więcej, każdy system, użytkownik powinien mieć własny, żeby w razie potrzeby taki klucz anulować lub zresetować. 

 Backup konfiguracji TrueNAS – TrueCommand

Jednym z lepszych pomysłów nie tylko do tworzenia backupu konfiguracji ale i ogólnie do zarządzania TrueNAS jest TrueCommand. Zwłaszcza jeśli mamy więcej instancji TrueNAS. Dla zainteresowanych szczegółami polecam materiał [TrueCommand – wszystkie TrueNAS w jednym miejscu

Backup konfiguracji TrueNAS – API skrypt

OK TrueCommand to fajne rozwiązanie. Jeśli jednak macie u siebie nie tylko TrueNAS ale również rutery, firewalle, serwery czy inne urządzenia. I nie przekonuje Was utrzymywanie dedykowanego supervisora dla każdego z tych rodzajów urządzeń. Dodatkowo jesteście zdecydowani zautomatyzować tworzenie backup konfiguracji. Pozostaje następna opcja. Skonfigurujemy skrypt który z linii komend będzie ściągał nam backup z TrueNAS przy pomocy API.

Skrypt tworzący backup konfiguracji backup.sh:

				
					#!/bin/bash
# Backup folder
BACKUP_FOLDER=./backups
DEVICE_IP=$1
API_TOKEN=$2
# Create backup folder, if not exist
mkdir -p "$BACKUP_FOLDER"
timestamp=$(date +%Y%m%d%H%M)
filename="${BACKUP_FOLDER}/${DEVICE_IP}_${timestamp}"

echo "Creating backup configuration for device IP $DEVICE_IP"

curl -k -L -X 'POST' https://$DEVICE_IP/api/v2.0/config/save -H \
'Authorization: Bearer '$API_TOKEN -H 'accept: */*' -H \
'Content-Type: application/json' \
--output "${filename}.db"

				
			

Pamiętajcie że plik musi być wykonywalny:

				
					chmod +x truenas-bkp.sh 
				
			

Przykład wywołania skryptu:

				
					./truenas-bkp.sh x.x.x.x  api_key 
				
			

Automatyzacja backup

Należy wspomnieć o możliwościach automatyzacji. Jak w wypadku TrueCommand sprawę mamy załatwioną tak w wypadku powyższego skryptu trzeba się już jednak bardziej wysilić i albo wykorzystać już używaną platformę automatyzacji. Tutaj ilu administratorów tyle koncepcji. Albo w wersji najprostszej dodanie wpisu do pliku cron w postaci:

				
					0 0 * * * user /path/to/file/backup.sh [ip TrueNAS] [API token] 
				
			

Podsumowanie

Słowem podsumowania, backup konfiguracji to też ważne dane które nie mogą być w jednym miejscu więc tworzymy ich backup. Jesteśmy leniwi i świadomi swoich ułomności więc tworzymy automaty do tworzenia tych kopii. No i pamiętajcie, żeby tych kopii nie trzymać na tym TrueNAS co to nie będziecie mieli do niego dostępu jak nie będziecie mieli tej właśnie konfiguracji.