0

Google Compute Engine (GCE) インスタンス ( $GCE_INSTANCE_NAME) が Google Cloud Platform (GCP) プロジェクト 内に作成されました$GCP_PROJECT_ID$GUEST_POLICY_NAMEゲスト ソフトウェア パッケージを にインストールすることになっている OSConfig ゲスト ポリシー ( ) があります$GCE_INSTANCE_NAME。ただし、Cloud SDK ( gcloud) が にlookup適用されるゲスト ポリシーに使用される場合$GCE_INSTANCE_NAME:

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

$=>

No effective guest policy found for [projects/$GCP_PROJECT_NAME/zones/$GCE_INSTANCE_ZONE/instances/$GCE_INSTANCE_NAME].

$GUEST_POLICY_NAMEは記載されていません

OS バージョン、GCE メタデータ、および GCE ラベルが同一lookupの別の GCE インスタンス ( ) に対してコマンドを使用する場合:$GCE_ANOTHER_INSTANCE

gcloud beta compute os-config guest-policies lookup \
$GCE_ANOTHER_INSTANCE \
--zone=$GCE_ANOTHER_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/. . .              │        . . .       │ . . .   │   . . .       │
└───────────────────────────────────────────────────────────┴────────────────────┴─────────┴───────────────┘

$GUEST_POLICY_NAME 記載されています。

なんで?

4

1 に答える 1

1

コマンド on$GUEST_POLICY_NAMEからの応答に が表示されない理由はいくつか考えられます。lookup$GCE_INSTANCE_NAME

  • レイテンシー: OSConfigが作成されたばかりの$GUEST_POLICY_NAME場合、OSConfig が伝搬するまでに時間がかかる場合があります$GCE_INSTANCE_NAME

  • ここで提案されているように、プロジェクト全体の GCE メタデータを有効にしている可能性がありますが、次を追加すると役立つ場合があります。

    • enable-guest-attributes:TRUE
    • enable-osconfig:TRUE

    次のコマンド$GCE_INSTANCE_NAMEadd-metadata

    gcloud compute instances add-metadata \
    $GCE_INSTANCE_NAME \
    --metadata="enable-guest-attributes=true,enable-osconfig=TRUE" \ 
    --zone=$GCE_INSTANCE_ZONE
    
    #=>
    
    Updated [https://www.googleapis.com/compute/v1/projects/$GCP_PROJECT_NAME/zones/$GCE_INSTANCE_ZONE/instances/$GCE_INSTANCE_NAME].
    
  • Google Cloud Storage (GCS) バケットを使用してパッケージまたは実行可能ファイルを保存する場合は、GCE の既定のサービス アカウント ( )に、GCS CLI ( )を使用して権限 (例: ) を持つ精選された役割が少なくとも 1 つある$GUEST_POLICY_NAMEかどうかを確認します。$GCE_SERVICE_ACCOUNTstorage.objects.getstorage.objectViewergsutil

    gsutil iam get "gs://$GCS_BUCKET_NAME"
    
    #=>
    
    {
      "bindings": [
      . . .
      {
        "members": [
          "serviceAccount:$GCE_SERVICE_ACCOUNT"
        ],
        "role": "roles/storage.objectViewer"
      }
      . . .
      ]
    }
    

    権限のある役割$GCE_SERVICE_ACCOUNTがない場合、グループのコマンドを使用して、キュレートされた役割を付与できます。storage.objects.getchiamstorage.objectViewer

    gsutil iam ch \
    "serviceAccount:$GCE_SERVICE_ACCOUNT:roles/storage.objectViewer" \
    "gs://GCS_BUCKET_NAME"
    
  • サブネットが実行されている場所で限定公開のGoogle アクセスがオンになっていることを確認します。$GCE_INSTANCE_NAME

    1. コマンドのフラグとフラグの$GCE_INSTANCE_NAME両方を使用して、どのサブネットが使用されているかを簡単に検出します。--flatten--formatdescribe

      gcloud compute instances describe $GCE_INSTANCE_NAME \
      --flatten="networkInterfaces" \
      --format="value(networkInterfaces.subnetwork)" \
      --zone=$GCE_INSTANCE_ZONE
      
      #=>
      
      https://www.googleapis.com/compute/v1/projects/$GCP_PROJECT_NAME/regions/$GCE_INSTANCE_REGION/subnetworks/$GCE_INSTANCE_SUBNETWORK
      
    2. $GCE_INSTANCE_SUBNETWORKGoogle プライベート アクセスがオンになっているかどうかを確認します。

      gcloud compute networks subnets describe $GCE_INSTANCE_SUBNETWORK\
      --format="value(privateIpGoogleAccess)" \
      --region=$GCE_INSTANCE_REGION
      
      #=>
      
      True
      

      上記が の場合は、同じサブグループFalseに対して update サブコマンドを使用して限定公開の Google アクセスを有効にします。subnets

      gcloud compute networks subnets update $GCE_INSTANCE_SUBNET \
      --enable-private-ip-google-access \
      --region=$GCE_INSTANCE_REGION
      
      #=>
      
      Updated [https://www.googleapis.com/compute/v1/projects/$GCP_PROJECT_NAME/regions/$GCE_INSTANCE_REGION/subnetworks/$GCE_INSTANCE_SUBNETWORK].
      

上記のすべてが失敗した場合は、次のすべての基準に$GCE_INSTANCE_NAME一致していることを確認してください。$GUEST_POLICY_NAME

gcloud beta compute os-config guest-policies describe \
$GUEST_POLICY_NAME \
--format="yaml(assignment)"

#=>

assignment:
  groupLabels:
  - labels: . . .
  instances: . . .
  instanceNamePrefixes: . . .
  osTypes:
  - osArchitecture: . . .
    osShortName: . . .
    osVersion: . . .
  zones: . . .
于 2021-09-29T00:13:57.277 に答える