0

我能够$GCE_INSTANCE_NAME使用 Cloud SDK ( gcloud) 显示应用于 Google Cloud Platform (GCP) 计算引擎 (GCE) 实例 ( ) 的 OSConfig 访客策略:

gcloud beta compute os-config guest-policies lookup \
$GCE_INSTANCE_NAME \
--zone=$GCE_INSTANCE_ZONE

#=>

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                           SOFTWARE RECIPES                                               │
├───────────────────────────────────────────────────────────┬────────────────────┬─────────┬───────────────┤
│                          SOURCE                           │        NAME        │ VERSION │ DESIRED_STATE │
├───────────────────────────────────────────────────────────┼────────────────────┼─────────┼───────────────┤
│ projects/$GCP_PROJECT_ID/guestPolicies/. . .              │        . . .       │ . . .   │   . . .       │
│ projects/$GCP_PROJECT_ID/guestPolicies/$GUEST_POLICY_NAME │ $GUEST_POLICY_NAME │ 1.0     │ INSTALLED     │
│ projects/$GCP_PROJECT_ID/guestPolicies/. . .              │        . . .       │ . . .   │   . . .       │
└───────────────────────────────────────────────────────────┴────────────────────┴─────────┴───────────────┘

如何使用 REST API 检索相同的响应?此处的资源页面lookup似乎缺少该方法。projects.guestPolicies

4

1 回答 1

0

您正在寻找projects.zones.instances.lookupEffectiveGuestPolicyREST 方法,可在此处找到。

在任何版本的 Ubuntu上安装软件的访客策略示例:

curl \
--data-raw '{ "osArchitecture": "", "osShortName": "UBUNTU", "osVersion": "" }' \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header 'Content-Type: text/plain' \
--location \
--request POST \
"https://osconfig.googleapis.com/v1beta/projects/$GCP_PROJECT_NUMBER/zones/$GCE_INSTANCE_ZONE/instances/$GCE_INSTANCE_NAME:lookupEffectiveGuestPolicy"

#=>

{
  "softwareRecipes": [
    . . .
    {
      "source": "projects/$GCP_PROJECT_NUMBER/guestPolicies/$GUEST_POLICY_NAME",
      "softwareRecipe": {
        "name": "$GUEST_POLICY_NAME",
        "version": "1.0",
        . . .
        "desiredState": "INSTALLED"
      }
    },
    . . .
  ]
}

注意$GCP_PROJECT_NUMBER不同于:_ _$GCP_PROJECT_ID

gcloud projects describe $GCP_PROJECT_NAME

#=>

. . .
projectId: $GCP_PROJECT_ID
projectNumber: "$GCP_PROJECT_NUMBER"

注意:POST 正文键的值

  • "osArchitecture"
  • "osShortName"
  • "osVersion"

可以找到$GUEST_POLICY_NAME使用任一gcloud

gcloud beta compute os-config guest-policies describe \
$GUEST_POLICY_NAME \
--flatten="assignment.osTypes" \
--format="table[box](assignment.osTypes.osArchitecture,
                     assignment.osTypes.osShortName,
                     assignment.osTypes.osVersion)"

#=>

┌─────────────────┬───────────────┬────────────┐
│ OS_ARCHITECTURE │ OS_SHORT_NAME │ OS_VERSION │
├─────────────────┼───────────────┼────────────┤
│ . . .           │ . . .         │ . . .      │
│                 │ UBUNTU        │            │
│ . . .           │ . . .         │ . . .      │
└─────────────────┴───────────────┴────────────┘

或 REST API:

curl \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--location \
--request GET \
"https://osconfig.googleapis.com/v1beta/projects/$GCP_PROJECT_NUMBER/guestPolicies/$GUEST_POLICY_NAME"

#=>

{
    . . .
    "assignment": {
        . . .
        "osTypes": [
            . . .
            {
                "osShortName": "UBUNTU"
            }
            . . .
        ]
        . . .
    },
    . . .
}

注意:如果"osArchitecture"和/或"osVersion"缺失或为空,则在使用上述 REST 方法时应将这些值保留为空字符串 ( "")。

于 2021-09-26T20:12:18.150 回答