Гостевое программное обеспечение не установлено гостевой политикой OSConfig на подходящей виртуальной машине Google Compute Engine
Экземпляр Google Compute Engine (GCE) () только что был создан в рамках проекта Google Cloud Platform (GCP).
$GCP_PROJECT_ID
. Существует гостевая политика OSConfig (), которая предназначена для установки пакетов гостевого программного обеспечения; однако, когда Cloud SDK (
gcloud
) используется для гостевых политик, применяемых к
$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].
это не в списке.
Когда
lookup
команда используется для другого экземпляра GCE (
$GCE_ANOTHER_INSTANCE
) с идентичной версией ОС, метаданными GCE и метками GCE:
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
находится в списке.
Почему?
1 ответ
Может быть несколько причин, почему не отображается в ответе от
lookup
команда на:
задержка: для распространения OSConfig может потребоваться некоторое время, когда он был только что создан
хотя вы, возможно, включили метаданные GCE для всего проекта, как предлагается здесь, это может помочь добавить:
-
enable-guest-attributes
: -
enable-osconfig
:TRUE
чтобы с
add-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 по умолчанию () хотя бы одну контролируемую роль с разрешением (например,) с CLI GCS (
gsutil
):gsutil iam get "gs://$GCS_BUCKET_NAME" #=> { "bindings": [ . . . { "members": [ "serviceAccount:$GCE_SERVICE_ACCOUNT" ], "role": "roles/storage.objectViewer" } . . . ] }
если
$GCE_SERVICE_ACCOUNT
вовсе не имеет роли сstorage.objects.get
разрешение, вы можете использоватьch
команда дляiam
группа, чтобы предоставитьstorage.objectViewer
кураторская роль:gsutil iam ch \ "serviceAccount:$GCE_SERVICE_ACCOUNT:roles/storage.objectViewer" \ "gs://GCS_BUCKET_NAME"
Убедитесь в том , что рядовой Google Access включен на подсети работает в:
Легко определить, какая подсеть используется с обоими
--flatten
а также--format
флаги дляdescribe
команда: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
Узнай, если
$GCE_INSTANCE_SUBNETWORK
включен ли Google Private Access:gcloud compute networks subnets describe $GCE_INSTANCE_SUBNETWORK\ --format="value(privateIpGoogleAccess)" \ --region=$GCE_INSTANCE_REGION #=> True
если выше
False
, затем включите частный доступ к 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: . . .