Gestione backup GLPI v9.1.4 in ambiente Windows

GLPI (Gestion Libre de Parc Informatique) è un progetto Open Source gratuito distribuito sotto licenza GPL che consente l’IT Asset Management, l’issue tracking system, fornisce una soluzione di service desk solution e consente la gestione di tasks amministrativi e finanziari. Dal momento che il servizio di l’IT Asset Management e/o di issue tracking system, quando implementate all’interno di un’infrastruttura informatica, assumono un’importanza rilevate ai fini della gestione occorre pianificare un’adeguata politica di backup.

Di seguito verrà analizzato come gestire il backup di GLPI 9.1.4 installato in IIS con PHP 7.1.1 su MariaDB 10.2.7 in ambiente Windows Server 2012 R2, inoltre si ipotizzerà che i file di GLPI siano memorizzati in S:\GLPI e che il database sia stato creato col nome glpi.

Funzionalità di backup in GLPI

GLPI offre nativamente la possibilità di eseguire il backup del database tramite il menu Amministrazione – Manutenzione

Tale backup permette di creare un dump sql o XML del contenuto del database, ma come riportato nella pagina WIKI Data/Backup del progetto GLPI al momento non è possibile automatizzare tale operazione, che può quinti tornare utile per backup estemporanei da eseguire prima di operazioni per cui è consigliabile avere una copia di sicurezza del database.

I backup eseguiti tramite l’interfaccia web di GLPI vengono conservati nella subdirectory files\_dumps della cartella d’installazione, è possibile copiarli e incollarli per esempio per gestire il restore su un server differente ad esempio per creare ambienti di test.

Backup del database di GLPI tramite script

Dal momento che come visto precedentemente il backup nativo di GLPI non offre la possibilità di essere eseguito in base ad una schedulazione, per una gestione automatizzata del processo di backup occorrerà creare degli appositi script da eseguire in base ad un’opportuna pianificazione. Di seguito si analizzerà come creare uno script per il backup del database di GLPI ipotizzando che, come detto precedentemente, quest’ultimo sia esposto dal DBMS MariaDB 10.2.7.

In MariaDB 10.2.7 è stato introdotto il tool di backup mariabackup in versione Beta basato su Percona XtraBackup 2.3.8, a riguardo si vedano About MariaDB Backup e MariaDB Backup released with MariaDB Server 10.1.23. Tramite mariabackup è possibile gestire tramite script le operazioni di backup del DBMS MariaDB, di seguito uno script Powershell per il backup gestito dell’intero DBMS MariaDB con possibilità di gestione del numero minimo di backup da mantenere, lo script prevede l’utilizzo dei parametri per poter essere gestito nell’ambito di un’automazione del backup del server GLPI che prevede più step.

Param(
[string]$MariaBackupFile,
[string]$BackupRoot,
[string]$MariaDBHost,
[string]$User,
[string]$Password,
[uint32]$BackupsRetained
)

Set-strictmode -version latest

# Impostazioni di Test
#$MariaBackupFile= $env:ProgramFiles + “\MariaDB 10.2\bin\mariabackup.exe”
#$BackupRoot=”Z:\Backup-MariaDB”
#$MariaDBHost=”.”
#$User=”root”
#$Password=”P@assW0rd!”
#$BackupsRetained = 10

# Inizializzazione Backup
$BackupPath=$BackupRoot + “\” + (Get-Date -format yyyy-MM-dd)
If (Test-Path $BackupPath) {Remove-Item $BackupPath -Force -Recurse}
New-Item -ItemType Directory -Force -Path $BackupPath

# Avvio backup MariaDB
$TargetArg = “–target-dir=” + $BackupPath
$MariaDBHostArg = “–host=” + $MariaDBHost
$UserArg = “–user=” + $User
$PasswordArg = “–password=” + $password

Start-Process -NoNewWindow -Wait -FilePath $MariaBackupFile -ArgumentList “–backup”, $TargetArg, $MariaDBHostArg, $UserArg, $PasswordArg

# Eliminazione backup obsoleti
$BackupDirectories = (Get-ChildItem -Directory $BackupRoot | Sort FullName)
$BackupsCount = ($BackupDirectories | Measure-Object).Count

If ($BackupsCount -gt $BackupsRetained){
For ($i = 1; $i -le $BackupsCount – $BackupsRetained; $i++) {
Remove-Item $BackupDirectories[$i-1].FullName -Force –Recurse
}
}

Lo script è disponibile nel repository GitHub ermannog/PowerShell/Backup-GLPI col nome Backup-MariaDB.ps1.

In alternativa è anche possibile ovviamente eseguire solo il backup del database di GLPI, di seguito uno script Powershell per il backup gestito del singolo database di GLPI con possibilità di gestione del numero minimo di backup da mantenere, lo script prevede l’utilizzo dei parametri per poter essere gestito nell’ambito di un’automazione del backup del server GLPI che prevede più step.

Param(
[string]$MariaBackupFile,
[string]$BackupRoot,
[string]$MariaDBHost,
[string]$GLPIDatabaseName,
[string]$User,
[string]$Password,
[uint32]$BackupsRetained
)

Set-strictmode -version latest

# Impostazioni di Test
#$MariaBackupFile= $env:ProgramFiles + “\MariaDB 10.2\bin\mariabackup.exe”
#$BackupRoot=”Z:\Backup-MariaDB”
#$GLPIDatabaseName=”glpi”
#$User=”root”
#$Password=”P@assW0rd!”
#$BackupsRetained = 10

# Inizializzazione Backup
$BackupPath=$BackupRoot + “\” + (Get-Date -format yyyy-MM-dd)
If (Test-Path $BackupPath) {Remove-Item $BackupPath -Force -Recurse}
New-Item -ItemType Directory -Force -Path $BackupPath

# Avvio backup Database GLPI
$TargetArg = “–target-dir=” + $BackupPath
$MariaDBHostArg = “–host=” + $MariaDBHost
$GLPIDatabaseNameArg = “–databases=” + $GLPIDatabaseName
$UserArg = “–user=” + $User
$PasswordArg = “–password=” + $password

Start-Process -NoNewWindow -Wait -FilePath $MariaBackupFile -ArgumentList “–backup”, $TargetArg, $MariaDBHostArg, $GLPIDatabaseNameArg, $UserArg, $PasswordArg

# Eliminazione backup obsoleti
$BackupDirectories = (Get-ChildItem -Directory $BackupRoot | Sort FullName)
$BackupsCount = ($BackupDirectories | Measure-Object).Count

If ($BackupsCount -gt $BackupsRetained){
For ($i = 1; $i -le $BackupsCount – $BackupsRetained; $i++) {
Remove-Item $BackupDirectories[$i-1].FullName -Force –Recurse
}
}

Lo script è disponibile nel repository GitHub ermannog/PowerShell/Backup-GLPI col nome Backup-DB-GLPI.ps1.

Backup dell’applicazione web GLPI tramite script

Dopo aver eseguito il backup del database di GLPI occorre anche eseguire il backup dell’applicazione web, di seguito uno script Powershell per il backup gestito dell’applicazione GLPI con possibilità di gestione del numero minimo di backup da mantenere, lo script prevede l’utilizzo dei parametri per poter essere gestito nell’ambito di un’automazione del backup del server GLPI che prevede più step.

Param(
[string]$BackupRoot,
[string]$WebApplicationPath,
[string]$WebSiteName,
[uint32]$BackupsRetained
)

Set-strictmode -version latest

# Impostazioni di Test
#$BackupRoot=”Z:\Backup-WebApplication-GLPI”
#$GLPIWebApplicationPath=”C:\inetpub\wwwroot\glpi”

#$WebSiteName=”Default Web Site”
#$BackupsRetained = 10

# Inizializzazione Backup
$BackupPath=$BackupRoot + “\” + (Get-Date -format yyyy-MM-dd)
If (Test-Path $BackupPath) {Remove-Item $BackupPath -Force -Recurse}
New-Item -ItemType Directory -Force -Path $BackupPath

# Arresto Web Site
Stop-WebSite $WebSiteName

# Avvio Backup Web Application GLPI
Copy-Item -Path $WebApplicationPath -Destination $BackupPath –Recurse

# Avvio Web Site
Start-WebSite $WebSiteName

# Eliminazione backup obsoleti
$BackupDirectories = (Get-ChildItem -Directory $BackupRoot | Sort FullName)
$BackupsCount = ($BackupDirectories | Measure-Object).Count

If ($BackupsCount -gt $BackupsRetained){
For ($i = 1; $i -le $BackupsCount – $BackupsRetained; $i++) {
Remove-Item $BackupDirectories[$i-1].FullName -Force –Recurse
}
}

Lo script è disponibile nel repository GitHub ermannog/PowerShell/Backup-GLPI col nome Backup-WebApplication-GLPI.ps1.

Backup del sistema del server GLPI

Oltre al backup del database e dell’applicazione web di GLPI è consigliabile eseguire un backup dell’intero sistema per gestire anche eventuali disaster recovery. Per gestire tali scenari di ripristino è ovviamente consigliabile che il server GLPI sia una macchina virtuale in modo da poter gestire il backup del sistema con vari approcci.

Un primo modo di eseguire il backup dell’intero sistema è quello di utilizzare Windows Backup dedicandogli ad esempio un disco virtuale. Nel la macchina virtuale del server GLPI sia in esecuzione in Hyper-V conviene connettere il disco virtuale su un controller virtuale SCSI in quanto permette di gestire tramite script la connessione e la disconnessione del VHD a caldo per copiare lo stesso su un server di backup.

In alternativa è possibile eseguire il backup dall’Hypervisor e nel caso che quest’ultimo sia Hyper-V tramite Windows Backup o altri software di backup come ad esempio System Center 2016 Data Protection Manager, Veeam Backup & Replication.

Conclusioni

La gestione del backup di GLPI in ambiente Windows non risulta eccessivamente complessa e può essere automatizzata tramite scripts PowerShell, per un recupero dei dati più semplice conviene eseguire il backup con vari livelli di granularità per consentire il ripristino di dati in tabelle, database, applicazione o intero sistema.