【发布时间】:2021-03-03 21:50:19
【问题描述】:
我们正在使用 Ansible 将映像部署到 Google Kubernetes Cluster (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-path: 进程返回 1 Cmd:/home/pesinn/y/google-cloud-sdk/bin/gcloud config config-helper --format=json 标准错误:警告:无法打开配置文件:[/root/.config/gcloud/configurations/config_default]。 错误:(gcloud.config.config-helper)您当前没有选择活动帐户。 请运行: $ gcloud auth 登录
我们已经做了什么
- 初始化云:
gcloud init - 登录并选择了一个项目
gcloud auth login - 运行
export GOOGLE_APPLICATION_CREDENTIALS="path_to_service_account_key.json" - 运行
gcloud container clusters get-credentials {gke_project} --region {region} - 运行剧本
sudo ansible-playbook playbook.main.yml -vvv - 在本地机器上运行
gcloud config config-helper --format=json没有任何问题
这里很奇怪的是,我们肯定已经登录了。我们可以在本地机器上通过 kubectl 命令访问 GKE 集群。但是,Ansible 抱怨我们没有登录。此外,在错误日志中,我们看到它正在尝试打开 /root/.config/gcloud/configurations/config_default。另一方面,我们的默认配置文件位于主文件夹中。
此错误随机发生。有时 Ansible 可以检测到我们的登录并部署镜像,但有时它会给我们这个错误。这两种情况都可以在不进行任何代码更改的情况下发生。
【问题讨论】:
-
如果您的默认配置文件位于“主文件夹”中,我猜您以普通用户的身份播放了所有手动示例命令集。在这种情况下,你为什么在你的剧本中使用
become: true成为 root ?更糟糕的是:你为什么要使用sudo来发布你的剧本? -
感谢您的帮助!它在删除
become: true然后从运行命令中删除sudo时起作用。
标签: ansible google-kubernetes-engine