Saludos amigos, hace unas semanas os mostré que Veeam había lanzado su Beta de Veeam Backup for Microsoft Office 365 v4, y por si estáis probándola y queréis darle un poco más profundo mediante API, creo que este post os gustará.
Habilitar RestAPI en Veeam Backup for Microsoft Office 365
Tendremos que ejecutar varios pasos antes de comenzar a descargar nada, o tocar siquiera Grafana, desde nuestro Veeam Backup for Microsoft Office 365, nos iremos en la Consola hasta el icono de menú, y luego General Settings:
Nos iremos hasta el sub-menú llamado REST API y habilitaremos el servicio de REST, además aquí podríamos instalar nuestro propio SSL, y cambiar el timeout de los tokens y el puerto de SSL, en mi caso no he cambiado nada:
Ya con esto podremos irnos a nuestro navegador y explorar el SWAGGER que Veeam Backup for Microsoft Office 365 trae de serie, lo encontraremos en https://VBOURL:4443/swagger y debe lucir tal que así:
Ya con esto estamos listos para continuar con el post.Novedades de RESTful API en Veeam Backup for Microsoft Office 365 v4 – Beta
Comparando esta nueva REST con la versión 3 de la misma, encontramos novedades muy interesantes. Como es de esperar, podemos configurar y revisar todo lo referente a Object Storage que esta versión permite, además de algunas novedades más. Vamos a verlas una por una.
Account
Esta nueva API nos permite visualizar, añadir, y eliminar cuentas de Object Storage:
Vamos a ver el ejemplo de mi cuenta de mi FreeNAS local usando MinIO, que es de tipo amazonS3CompatibleAccount:
[
{
"accountType": "amazonS3CompatibleAccount",
"userName": "VEEAMS3BUCKETFREENAS",
"id": "92434b99-ad79-49d1-8c41-71d8a4bac1a4",
"description": "Object Storage Credentials",
"_links": {
"self": {
"href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4"
}
}
}
]
Como podéis imaginar, podríamos introducir unas nuevas credenciales de manera automática también usando el PUT o POST.
AmazonS3CompatibleObjectStorage
Como tenemos tres maneras diferentes de utilizar Object Storage que son, Amazon S3 Compatible, AWS S3, o Microsoft Azure Blob, encontraremos tres API diferentes por cada uno de los servicios, este es el de S3 Compatible:
En mi caso es perfecto, ya que es el modo que estoy usando, con lo que puedo conocer algo más de información sobre mi bucket, es cierto que tendremos que introducir en esta API nuestra accountID, que tenemos en la anterior API, además del service point, que tenemos qué conocer, y la región, que por defecto suele ser us-east-1 en servicios on-prem como FreeNAS usando MinIO:
El resultado de esta API es el siguiente, donde nos muestra el nombre del bucket en VBO, además de dos links adicionales a otras API, el de account que ya hemos visto y el de más información de bucket:
[
{
"servicePoint": "freenas.jorgedelacruz.es:9000",
"customRegionId": "us-east-1",
"name": "veeam-bucket",
"location": "us-east-1",
"region": "us-east-1",
"links": {
"self": {
"href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1"
},
"account": {
"href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4"
}
}
}
]
Que nos quedaría de la siguiente manera cuando rellenamos todo, podremos conocer algo más sobre este bucket:
El resultado de esta API es similar al anterior, solamente que detallado para este bucket en concreto:
{
"servicePoint": "freenas.jorgedelacruz.es:9000",
"customRegionId": "us-east-1",
"name": "veeam-bucket",
"location": "us-east-1",
"region": "us-east-1",
"links": {
"self": {
"href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1"
},
"account": {
"href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4"
}
}
}
Dentro de la API para ver las carpetas que se alojan dentro del bucket, si rellenamos todos los campos quedaría algo así:
Que nos devolverá la carpeta exacta donde se aloja todo nuestro backup dentro de este bucket, en mi caso quedaría así:
[
{
"path": "Veeam/Backup365/VBO4/",
"name": "VBO4",
"links": {
"self": {
"href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket/folders/VBO4?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1"
},
"account": {
"href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4"
},
"bucket": {
"href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1"
}
}
}
]
Si seguimos dentro de esta API, veremos una en concreto para ver incluso dentro de la carpeta que acabamos de descubrir, nos quedaría de la siguiente manera al rellenar todo:
El resultado de la llamada es similar al anterior, pero solamente nos mostraría esta carpeta en vez de mostrar varias en caso de que estuviéramos usando el bucket para otro backup.
AmazonS3ObjectStorage
En esta nueva API y sus diferentes métodos podremos usar exactamente igual que toda la API anterior, pero está dedicada exclusivamente a los buckets que alojemos en Amazon S3, no hay ninguna API ni método diferente, por lo que si tenéis dudas usar la sección de arriba.
AzureObjectStorage
En esta nueva API y sus diferentes métodos podremos usar exactamente igual que toda la API anterior, pero está dedicada exclusivamente a los containers que alojemos en Azure blob, no hay ninguna API ni método diferente, por lo que si tenéis dudas usar la sección de arriba. Es cierto que lo que en Amazon se llama bucket, aquí se llama container, por lo demás todo igual.
BackupRepository
Esta API no es nueva, solamente se ha mejorado el resultado de la misma, ya que recordemos que ahora podemos combinar un repositorio local con uno de Object Storage, almacenando el local metadata y caché, y el object storage metadata y la información a su vez, con lo que podemos esperar que el resultado de la API es diferente.
Resultado de BackupRepository v3
En el resultado de la query podremos ver la capacidad en bytes, el espacio libre, id, nombre, path, y la retención:
[
{
"capacityBytes": 107370971136,
"freeSpaceBytes": 96614940672,
"id": "992ddd4c-7572-4332-9958-1425fa261f1b",
"name": "NTFS-REPO-001",
"description": "VBO Backup Repo on NTFS",
"path": "E:\\REPO001",
"retentionType": "ItemLevel",
"retentionPeriodType": "Yearly",
"yearlyRetentionPeriod": "Years3",
"retentionFrequencyType": "Daily",
"dailyTime": "07:00:00",
"dailyType": "Everyday",
"proxyId": "b710e407-b498-4e71-846d-facaba0f26fa",
"_links": {
"self": {
"href": "https://192.168.1.32:4443/v3/backuprepositories/992ddd4c-7572-4332-9958-1425fa261f1b"
},
"proxy": {
"href": "https://192.168.1.32:4443/v3/proxies/b710e407-b498-4e71-846d-facaba0f26fa"
}
}
}
]
Resultado de BackupRepository v4
El resultado en esta nueva versión es mucho más completo, podemos ver los primeros cinco resultados hablan sobre la nueva funcionalidad de object storage, como es el ID del object storage, donde almacenamos la caché, si está habilitado el cifrado, además de la ID de la clave de cifrado, y si está desincronizado o no, por lo demás todo igual que antes:
[
{
"objectStorageId": "830155a2-b6f7-4f9c-9a5b-8329aba888f0",
"objectStorageCachePath": "E:\\VEEAM-REPO-001",
"objectStorageEncryptionEnabled": true,
"encryptionKeyId": "f0fe962d-00d0-4d39-8df4-392013828fc9",
"isOutOfSync": false,
"capacityBytes": 107237863424,
"freeSpaceBytes": 106852098048,
"id": "e0f7657e-2a7e-4d37-857c-e25d245484c0",
"name": "VEEAM-REPO-001",
"description": "Local Backup Repository 001",
"retentionType": "ItemLevel",
"retentionPeriodType": "Yearly",
"yearlyRetentionPeriod": "Keep",
"retentionFrequencyType": "Daily",
"dailyTime": "23:00:00",
"dailyType": "Everyday",
"proxyId": "a28ccf22-2de3-436e-88ed-6e91878499f9",
"_links": {
"self": {
"href": "https://192.168.1.31:4443/v4/backuprepositories/e0f7657e-2a7e-4d37-857c-e25d245484c0"
},
"proxy": {
"href": "https://192.168.1.31:4443/v4/proxies/a28ccf22-2de3-436e-88ed-6e91878499f9"
}
}
}
]
EncryptionKey
Esta nueva API nos permite ver, crear y eliminar Encryption Keys para nuestros Object Storage de manera muy sencilla:
Por ejemplo, si quisiéramos ver todas las Encryption Keys, este sería el resultado:
[
{
"id": "f0fe962d-00d0-4d39-8df4-392013828fc9",
"description": "Object Storage Password to Encrypt",
"_links": {
"self": {
"href": "https://192.168.1.31:4443/v4/encryptionkeys/f0fe962d-00d0-4d39-8df4-392013828fc9"
}
}
}
]
GlobalRetentionExclusionSettings
Esta nueva API nos permite ver si tenemos excluidos los contactos y calendario de las reglas de retención, por ejemplo imaginemos que tenemos una regla de retención de 5 años, si no activamos esto y tenemos contactos creados hace 10 años, éstos no podremos recuperarlos de nuestro backup, esta es la API:
Así quedaría si la ejecutamos:
{
"contacts": false,
"calendar": false
}
Por suerte no necesitamos ser unos expertos en API, estos valores se pueden cambiar en la GUI también:
ObjectStorageRepository
Al ser una de las funcionalidades más importantes de esta versión, no es de extrañar que tengamos una nueva API y métodos para éste menester, en concreto estos son todos los métodos:
Si lanzamos el método de GET objectstoragerepositories podremos ver algo similar a esto, donde encontramos el bucket, servicepoint, customRegionId, nombre del buket, region, dentro de la sección podremos ver la carpeta de S3, junto con el nombre del repositorio lógico en VBO, además del tamaño consumido (muy importante) en este bucket, y el tipo de object storage qué es:
[
{
"bucket": {
"servicePoint": "freenas.jorgedelacruz.es:9000",
"customRegionId": "us-east-1",
"name": "veeam-bucket",
"location": "us-east-1",
"region": "us-east-1"
},
"s3Folder": "VBO4",
"id": "830155a2-b6f7-4f9c-9a5b-8329aba888f0",
"name": "VEEAM-OBJECT-001",
"description": "Object Storage Repository 001",
"accountId": "92434b99-ad79-49d1-8c41-71d8a4bac1a4",
"sizeLimitEnabled": false,
"usedSpaceGB": 4067721842,
"type": "AmazonS3Compatible",
"_links": {
"self": {
"href": "https://192.168.1.31:4443/v4/objectstoragerepositories/830155a2-b6f7-4f9c-9a5b-8329aba888f0"
},
"account": {
"href": "https://192.168.1.31:4443/v4/accounts/92434b99-ad79-49d1-8c41-71d8a4bac1a4"
},
"bucket": {
"href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1"
},
"folder": {
"href": "https://192.168.1.31:4443/v4/S3CompatibleResources/buckets/veeam-bucket/folders/VBO4?accountId=92434b99-ad79-49d1-8c41-71d8a4bac1a4&ServicePoint=freenas.jorgedelacruz.es:9000&CustomRegionId=us-east-1"
}
}
}
]
Con esto, habremos ya ojeado todas las novedades que incluye el nuevo Veeam Backup for Microsoft Office 365 v4, ne fase de beta por ahora.
Como podréis imaginar, ya estoy trabajando para que tengamos el Dashboard de Grafana actualizado para cuando el producto sea GA. Espero que os sirva.





[…] amigos, hace unos días os contaba que Veeam Backup para Microsoft Office 365 v4 estaba en beta pública, además de mostraros cómo podíamos usar FreeNAS con Object Storage habilitado para lanzar […]