2

I want to get Operating System of the GCP VM instance. Currently I see only the image from which the instance was created. Is there a way of getting that? I see there is OS inventory Management which require some metadata to be set on the VM https://cloud.google.com/compute/docs/instances/view-os-details#api.

  • Guest attributes: Key: enable-guest-attributes Value: True
  • OS inventory management: Key: enable-os-inventory Value: True

Moreover there is a command gcloud compute instances os-inventory describe VM-NAME to get the OS configs only when VM is in RUNNING state. I am looking to fetch the OS details via REST API. Is there an example to refer for this?

Maninder Chhabra
  • 103
  • 2
  • 11

3 Answers3

2

After some research I found there is a method instances.getGuestAttributes which provides the guest entries provided OS config agent is installed on the VM. To get the OS details, need to set queryPath=guestInventory/ and variableKey=LongName/. Reference link getGuestAttributes

Maninder Chhabra
  • 103
  • 2
  • 11
1

I've edited my answer:

As you have mentioned, you can enable metadata and install OS agent.
This will allow you to use command like this:
gcloud compute instances os-inventory describe INSTANCE-NAME | grep 'LongName\|Kernel'
example results:

KernelRelease: 4.15.0-1092-gcp
KernelVersion: '#105~16.04.1-Ubuntu SMP Wed Jan 20 09:27:40 UTC 2021'
LongName: Ubuntu 16.04.7 LTS
KernelRelease: 4.19.0-14-cloud-amd64
KernelVersion: '#1 SMP Debian 4.19.171-2 (2021-01-30)'
LongName: Debian GNU/Linux 10 (buster)
KernelRelease: 3.10.0-1160.11.1.el7.x86_64
KernelVersion: '#1 SMP Fri Dec 18 16:34:56 UTC 2020'
LongName: CentOS Linux 7 (Core)

I've also tested this API proposed by Maninder Chhabra:

{
  "queryPath": "guestInventory/",
  "queryValue": {
    "items": [
      {
        "namespace": "guestInventory",
        "key": "Architecture",
        "value": "x86_64"
      },
      {
        "namespace": "guestInventory",
        "key": "Hostname",
        "value": "instance-1"
      },
      {
        "namespace": "guestInventory",
        "key": "InstalledPackages",
        "value": "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"
      },
      {
        "namespace": "guestInventory",
        "key": "KernelRelease",
        "value": "4.19.0-14-cloud-amd64"
      },
      {
        "namespace": "guestInventory",
        "key": "KernelVersion",
        "value": "#1 SMP Debian 4.19.171-2 (2021-01-30)"
      },
      {
        "namespace": "guestInventory",
        "key": "LastUpdated",
        "value": "2021-02-17T09:37:52Z"
      },
      {
        "namespace": "guestInventory",
        "key": "LongName",
        "value": "Debian GNU/Linux 10 (buster)"
      },
      {
        "namespace": "guestInventory",
        "key": "OSConfigAgentVersion",
        "value": "20201229.01-g1"
      },
      {
        "namespace": "guestInventory",
        "key": "PackageUpdates",
        "value": "H4sIAAAAAAAA/3TOMQ6CMBSH8d1j/GdeU0AQunkBRxdjTFOehVApKWA0pHd3NDF4gO+Xb4UeZ6jLipN+MBSs99YxGeeXhkZtem15Ih1M2z2Zen6HbrBIcAymhYJ2DgnOHKbOD1BIRUZ5cShqWRcpYrLtTk3/n8izSkghSW7kd7fwMDff+FWVt3L/s1CJklLEa9x9AgAA//8kglGk3wAAAA=="
      },
      {
        "namespace": "guestInventory",
        "key": "ShortName",
        "value": "debian"
      },
      {
        "namespace": "guestInventory",
        "key": "Version",
        "value": "10"
      }
    ]
  },
  "selfLink": "https://www.googleapis.com/compute/v1/projects/project-test/zones/us-central1-a/instances/instance-1/guestAttributes/guestInventory/",
  "kind": "compute#guestAttributes"
}

Both of these methods work with stopped VMs.

Sergiusz
  • 1,175
  • 4
  • 13
  • I am specifically looking to get OS via REST API. Is there any REST equivalent for `gcloud compute instances os-inventory describe INSTANCE-NAME` ?? – Maninder Chhabra Feb 15 '21 at 07:36
0

I have noticed that if we set enable-guest-attributes=TRUE with a instance it automatically installs os config agent on a VM. hence we can use two methods for fetching OS Information.

Using instances.getGuestAttributes method https://cloud.google.com/compute/docs/reference/rest/v1/instances/getGuestAttributes

Using OS Inventory API https://cloud.google.com/compute/docs/osconfig/rest/v1/projects.locations.instances.inventories/get

Moreover I have question using the above approach I am not able to fetch OS Information for a Instance which is created from a custom images rather than public images.

durgesh
  • 1
  • 1