Ansible在使用Google云平台进行身份验证时遇到问题

Ansible在使用Google云平台进行身份验证时遇到问题,ansible,google-kubernetes-engine,Ansible,Google Kubernetes Engine,我们正在使用部署映像到(GKE) 我们已经安装了Ubuntu 20.04和Python 3.8.5 playbook.main.yml: --- - hosts: localhost vars: k8s_file_path: /home/pesinn/Documents/... become: yes become_method: sudo roles: - k8s main.yml: - name: First Deployment k8s: k

我们正在使用部署映像到(GKE)

我们已经安装了Ubuntu 20.04和Python 3.8.5

playbook.main.yml:

---
- hosts: localhost
  vars:
    k8s_file_path: /home/pesinn/Documents/...
  become: yes
  become_method: sudo
  roles:
    - k8s

main.yml:

- name: First Deployment
  k8s:
    kubeconfig: /home/pesinn/.kube/config
    src: "{{k8s_file_path}}/deployment.yml"
在尝试部署deployment.yml文件中定义的映像时,通过运行playbook,我们得到以下错误:

kubernetes.config.config_exception.ConfigException:cmd路径:进程返回1 Cmd:/home/pesinn/y/googlecloudsdk/bin/gcloud config-config-helper--format=json Stderr:警告:无法打开配置文件:[/root/.config/gcloud/configurations/config\u default]。 错误:(gcloud.config.config helper)您当前没有选择活动帐户。 请运行: $gcloud auth登录

我们已经做了什么

  • 初始化云:
    gcloud init
  • 登录并选择一个项目
    gcloud auth login
  • 运行
    export GOOGLE\u APPLICATION\u CREDENTIALS=“path\u to\u service\u account\u key.json”
  • 运行
    gcloud容器集群获取凭证{gke_project}--region{region}
  • 运行playbook
    sudo ansible playbook playbook.main.yml-vvv
  • 在本地计算机上运行
    gcloud config help--format=json
    ,没有任何问题
这里非常奇怪的是,我们确实登录了。我们可以通过本地机器上的kubectl命令访问GKE集群。然而,Ansible抱怨我们没有登录。此外,在错误日志中,我们看到它正在尝试打开/root/.config/gcloud/configurations/config\u default。另一方面,我们的默认配置文件位于主文件夹中


此错误随机发生。有时Ansible可以检测我们的登录并部署映像,但有时它会给我们这个错误。这两种情况都可以在不进行任何代码更改的情况下发生。

出于某种原因,ansible不使用GCP的默认环境变量进行身份验证。 你可以设置

GCP_AUTH_KIND
GCP_SERVICE_ACCOUNT_EMAIL
GCP_SERVICE_ACCOUNT_FILE
GCP_SCOPES
GCP\u服务\u帐户\u文件
相当于
GOOGLE\u应用程序\u凭证


参考资料:

如果您的默认配置文件位于“主文件夹”中,我猜您是以普通用户的身份播放了所有手动示例命令集。在这种情况下,为什么要在剧本中使用
been:true
来成为root用户?更糟糕的是:你为什么要用
sudo
发布你的剧本?谢谢你的帮助!当删除
been:true
并从正在运行的命令中删除
sudo
时,它会起作用。