Packages transferieren

Eine Herausforderung beim Betrieb mehrerer AZs bzw Regionen einer Cloud ist die Synchronisation von Usern, Images und Packages (bzw. Flavors). Im Fall von Triton können über die Packages API (papi) die installierten Packages abgefragt, in eine JSON-Datei gespeichert und dann in der nächsten AZ wieder einzeln eingespielt werden.

Das ist unter "Configuring Triton packages" beschrieben:

[root@headnode (my-dc-2) ~]# sdc-papi /packages?name=sample* | json -aH > /opt/root/packages.json

Die packages.json könnte dann z. B. so aussehen:

{
  "name": "sample-128M",
  "version": "1.0.0",
  "active": true,
  "cpu_cap": 25,
  "max_lwps": 4000,
  "max_physical_memory": 128,
  "max_swap": 512,
  "quota": 3072,
  "zfs_io_priority": 8,
  "fss": 8,
  "billing_tag": "sample-128M",
  "uuid": "c2bfca34-2037-e86e-ab55-ae96ff835bb0",
  "created_at": "2017-07-07T14:15:29.676Z",
  "updated_at": "2022-02-01T15:08:22.216Z",
  "default": false,
  "group": "test",
  "v": 1
}

Auf der anderen Seite bzw. in der anderen Region wird dann so importiert:

[root@headnode (de-gt-1) ~]# sdc-papi /packages -X POST -d ' {
>   "brand": "bhyve",
>   "name": "sample-bhyve-flex-4G",
>   "version": "1.0.0",                                                                                                                                                                                              
>   "active": true,                                                                                                                                                                                                  
>   "vcpus": 2,                                                                                                                                                                                                      
>   "cpu_cap": 100,                                                                                                                                                                                                  
>   "description": "sample-bhyve-flex-4G",                                                                                                                                                                           
>   "max_lwps": 4000,                                                                                                                                                                                                
>   "max_physical_memory": 4096,                                                                                                                                                                                     
>   "max_swap": 16384,                                                                                                                                                                                               
>   "quota": 24576,                                                                                                                                                                                                  
>   "zfs_io_priority": 64,                                                                                                                                                                                           
>   "flexible_disk": true,                                                                                                                                                                                           
>   "uuid": "85a2f54c-fc0e-684c-f384-9896e95da4d0",                                                                                                                                                                  
>   "created_at": "2020-05-22T19:55:31.397Z",                                                                                                                                                                        
>   "updated_at": "2020-05-22T19:55:31.397Z",                                                                                                                                                                        
>   "default": false,                                                                                                                                                                                                
>   "group": "",                                                                                                                                                                                                     
>   "v": 1                                                                                                                                                                                                           
> }'
HTTP/1.1 100 Continue

HTTP/1.1 201 Created
request-id: 85a2f54c-fc0e-684c-f384-9896e95da4d0
request-id: 85a2f54c-fc0e-684c-f384-9896e95da4d0
Location: /packages/85a2f54c-fc0e-684c-f384-9896e95da4d0
Content-Type: application/json
Content-Length: 415
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Accept, Accept-Version, Content-Length,Content-MD5, Content-Type, Date, Api-Version, Response-Time
Access-Control-Allow-Methods: GET, HEAD, POST
Access-Control-Expose-Headers: Api-Version, Request-Id, Response-Time
Connection: Keep-Alive
Content-MD5: 4GZT6YxZmVr6QLu9lccArw==
Date: Wed, 14 Sep 2022 07:21:55 GMT
Server: SDC Package API 7.2.4
Api-Version: 7.2.4
Response-Time: 148 

{
  "brand": "bhyve",
  "uuid": "85a2f54c-fc0e-684c-f384-9896e95da4d0",
  "name": "sample-bhyve-flex-4G",
  "version": "1.0.0",
  "active": true,
  "vcpus": 2,
  "cpu_cap": 100,
  "description": "sample-bhyve-flex-4G",
  "max_lwps": 4000,
  "max_physical_memory": 4096,
  "max_swap": 16384,
  "quota": 24576,
  "zfs_io_priority": 64,
  "created_at": "2020-05-22T19:55:31.397Z",
  "updated_at": "2022-09-14T07:21:55.392Z",
  "flexible_disk": true,
  "default": false,
  "group": "",
  "v": 1
}

Dabei werden die UUIDs aus der ersten AZ übernommen.