Создание проекта GCP через менеджер развертывания - PullRequest
1 голос
/ 26 марта 2019

Итак, я пытаюсь создать проект с помощью менеджера развертывания облака Google, Ive структурировал настройку примерно так:

# Structure
Org -> Folder1 -> Seed-Project(Location where I am running deployment manager from)

Organization:
  IAM:
    -> {Seed-Project-Number}@cloudservices.gserviceaccount.com:
        - Compute Network Admin
        - Compute Shared VPC Admin
        - Organisation Viewer
        - Project Creator

# DeploymentManager Resource:
type    cloudresourcemanager.v1.project
name    MyNewProject
parent  
  id: '{folder1-id}'
  type: folder
projectId: MyNewProject

Желаемый результат - создание MyNewProject в папке Folder1.Тем не мение;Похоже, что учетная запись службы администратора развертывания не имеет достаточных разрешений:

$ CLOUDSDK_CORE_PROJECT=Seed-Project gcloud deployment-manager deployments \
  create MyNewDeployment \
  --config config.yaml \
  --verbosity=debug

Сообщение об ошибке:

- code: RESOURCE_ERROR
  location: /deployments/MyNewDeployment/resources/MyNewProject
  message: '{"ResourceType":"cloudresourcemanager.v1.project",
             "ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"The
    caller does not have permission","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/MyNewProject","httpMethod":"GET"}}'

Я провел некоторое копание, и, похоже, он вызывает resourcemanager.projects.get метод;Роль 'Compute Shared VPC Admin (role / compute.xpnAdmin)' должна предоставить это разрешение, как описано здесь: https://cloud.google.com/iam/docs/understanding-roles

За исключением случаев, когда это не так, чтопроисходит?

Редактировать

Я хотел бы добавить дополнительную информацию, собранную в результате отладки: это запросы API от администратора развертывания (из начального проекта).

Вы можете видеть, что вызывающий абонент является анонимной учетной записью службы, это не то, что id ожидает увидеть.(Я бы ожидал увидеть здесь {Seed-Project-Number‹@cloudservices.gserviceaccount.com в качестве вызывающей учетной записи)

screenshot

Edit-2

config.yaml

imports:
  - path: composite_types/project/project.py
    name: project.py

resources:
  - name: MyNewProject
    type: project.py
    properties:
      parent:
        type: folder
        id: "{folder1-id}"
      billingAccountId: billingAccounts/REDACTED
      activateApis:
        - compute.googleapis.com
        - deploymentmanager.googleapis.com
        - pubsub.googleapis.com
      serviceAccounts: []

композитный_тип / проект / * - точная копия шаблонов, найденных здесь:

https://github.com/GoogleCloudPlatform/deploymentmanager-samples/tree/master/community/cloud-foundation/templates/project

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...