Releasebestimmung bei SmartOS

Der Beitrag ist im September 2017 erschienen


Nur für mich kurz zur Erinnerung: Es kann sinnvoll sein, das Release eines SmartOS-Images zu ermitteln (z. B. wenn es Security Advisories gibt, die ein bestimmtes Release voraussetzen). Und das geht so: Zunächst muss man die UUID des aktiven Images herausbekommen. Als Beispiel versuchen wir hier mal die aktuelle Version des Docker-Images herauszufinden. Als erstes brauchen wir die UUID der aktuellen Docker-Zone:

[root@headnode (de-gt-1) ~]# sdc-role list | grep docker                             
docker0      headnode         1b6785af-8cd2-44ed-8af5-4b8ab99f39cc  4096       running           docker    10.64.244.40

Damit können wir die Zoneninformationen abrufen:

[root@headnode (de-gt-1) ~]# vmadm get 1b6785af-8cd2-44ed-8af5-4b8ab99f39cc |grep image_uuid
  "image_uuid": "a54e9126-8e14-11e7-bbdd-37fad5806e08",

Mit der Image-UUID können wir dann die Release-Informationen zu diesem Image ermitteln:

[root@headnode (de-gt-1) ~]# updates-imgadm get -C release a54e9126-8e14-11e7-bbdd-37fad5806e08
{
  "v": 2,
  "uuid": "a54e9126-8e14-11e7-bbdd-37fad5806e08",
  "owner": "00000000-0000-0000-0000-000000000000",
  "name": "docker",
  "version": "release-20170831-20170831T060953Z-g171148a",
  "state": "active",
  "disabled": false,
  "public": false,
  "published_at": "2017-08-31T06:18:36.707Z",
  "type": "zone-dataset",
  "os": "smartos",
  "files": [
    {
      "sha1": "ba22f21953232bb726b78296fdebbf94a9f61395",
      "size": 187569427,
      "compression": "gzip"
    }
  ],
  "description": "SDC",
  "requirements": {
    "min_platform": {
      "7.0": "20141030T081701Z"
    },
    "networks": [
      {
        "name": "net0",
        "description": "admin"
      }
    ]
  },
  "origin": "18b094b0-eb01-11e5-80c1-175dac7ddf02",
  "tags": {
    "smartdc_service": true
  },
  "channels": [
    "staging",
    "release"
  ] 
}

Hier liegt also das Release release-20170831-20170831T060953Z-g171148a vor wobei g171148a der Output von "git describe" für den Build ist, aus dem dieses Docker-Image entstanden ist.