首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能用gcp.yml插件解析gcp_compute

未能用gcp.yml插件解析gcp_compute
EN

Stack Overflow用户
提问于 2021-03-03 17:41:35
回答 1查看 1K关注 0票数 0

我正在创建ansible剧本来配置GCP中的VM。我正在使用gcp_compute插件来建立一个动态的库存。使用带有角色roles\editor的服务帐户与google进行身份验证。执行时,剧本会失败,并出现以下错误。

代码语言:javascript
复制
[WARNING]:  * Failed to parse gcp.yml with gcp_compute plugin: [{'message': "Required 'compute.instances.list' permission for 'projects/project-dev-295204'", 'domain':
'global', 'reason': 'forbidden'}]
[WARNING]: gcp.yml as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available

根据警告消息,服务帐户似乎没有必要的权限来生成生成清单所需的运行VM实例列表,但是服务帐户有角色editor附加到它,并且该角色具有编辑所需的所有权限,列出了GCP中的大部分资源。

ansible.cfg

代码语言:javascript
复制
[defaults]
roles_path = roles
inventory = gcp.yml
remote_user = ansible
host_key_checking = False
private_key_file = $GOOGLE_SSH_KEY

[inventory]
enable_plugins = gcp_compute

gcp.yml

代码语言:javascript
复制
plugin: gcp_compute
projects:
  - project-dev-295204

auth_kind: serviceaccount
service_account_file: $GOOGLE_SA

keyed_groups:
  - key: labels
    prefix: label
  - key: zone
    prefix: zone

解决办法

在将服务帐户添加为IAM成员&映射到IAM主页中的角色roles\Editor后,该剧本返回成功响应。

下面的命令返回403个响应(authentication mode = service account),直到服务帐户被添加为一个新的IAM成员。

代码语言:javascript
复制
gcloud compute instances list
gcloud compute addresses list

在创建服务帐户时,如何将角色附加到服务帐户vs,将服务帐户作为IAM成员添加并将其标记到相同的角色中,这是如何区别的。

注(编辑1):

我通过terraform创建服务帐户,使用资源类型google_service_account创建服务帐户,使用google_service_account_iam_policy将编辑器角色附加到服务帐户。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-04 18:19:38

当使用服务帐户的IAM政策时,这意味着它将IAM绑定设置为资源级别,这意味着您将在同一个服务帐户上而不是在实际项目级别上为same @设置编辑器角色。请避免使用政策,因为它会覆盖现有的绑定,并且只会设置serviceAccountusergroup等以及它们各自在TF文件中指定的角色。

为了在项目级别上添加“a binding而非"set"”,您需要使用以下绑定来更新现有绑定,如果这是第一次创建绑定然后使用成员,则不会覆盖项目级别上的现有绑定。

请记住,如果您执行"set" IAM绑定,您可能会被排除在项目之外。为了更好地理解IAM项目政策,请看下面的文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66462176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档