我正在运行Ansible的服务,下面的配置应该在Google上创建一个存储桶。
- name: "Create {{ environ.name }}-cluster-backups"
google.cloud.gcp_storage_bucket:
name: "zeipt-io-{{ environ.name }}-cluster-backups"
location: "{{ google_cloud.region }}"
storage_class: "NEARLINE"
lifecycle:
rule:
- condition:
age_days: 28
action:
type: "Delete"
project: "{{ google_cloud.project }}"
auth_kind: "{{ google_cloud.auth_kind }}"
service_account_file: "{{ google_cloud.service_account_file }}"
state: present这给出了错误
致命::失败!'ansible@staging-environment.iam.gserviceaccount.com {“更改”:false,"msg":"GCP返回错误:{'error':{'code':403,'message':=>没有storage.buckets.get访问Google桶的权限。‘,’错误‘:}}"} }
我理解错误,但我检查了分配给这个用户的角色如下
gcloud projects get-iam-policy staging-environment --flatten="bindings[].members" --format='table(bindings.role)' --filter="bindings.members:ansible@staging-environment.iam.gserviceaccount.com"
ROLE
roles/owner
roles/storage.admin
roles/storage.objectAdmin
roles/storage.objectCreator
roles/storage.objectViewerroles/storage.admin应该在我检查角色页面时满足需求,该C5声明该角色具有storage.buckets.*权限。
我不明白为什么我仍然会犯同样的错误?
发布于 2021-11-04 21:32:39
据我所知,有些社会人士曾向你提供一些解决办法,以解决你的问题,但很明显,这些方法都没有对你的问题有所帮助。另外,我知道您正在使用GCP创建服务帐户并分配角色。
也许您可以尝试从ansible创建服务帐户和服务帐户的角色,并检查它是否有效。
您可以使用此插件google.cloud.gcp创建服务帐户。
示例:
- name: create a service account
google.cloud.gcp_iam_service_account:
name: sa-{{ resource_name.split("-")[-1] }}@graphite-playground.google.com.iam.gserviceaccount.com
display_name: My Ansible test key
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present并且可以使用插件google.cloud.gcp分配角色。
示例:
- name: create a role
google.cloud.gcp_iam_role:
name: myCustomRole2
title: My Custom Role
description: My custom role description
included_permissions:
- iam.roles.list
- iam.roles.create
- iam.roles.delete
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present请记住,这些插件是google.cloud集合的一部分,如果使用ansible包,应该安装这些插件。
https://serverfault.com/questions/1073533
复制相似问题