gpt4 book ai didi

google-cloud-platform - 如何使 Ansible Dynamic Inventory 与 Google Cloud Platform (Google Compute Engine)、GCP 一起使用

转载 作者:行者123 更新时间:2023-12-01 23:08:14 27 4
gpt4 key购买 nike

我使用 Ansible 按照以下指南创建了一个 gce 集群:https://docs.ansible.com/ansible/latest/scenario_guides/guide_gce.html

在 GCE 创作结束时,我使用了 add_host Ansible 模块在其对应的组中注册所有实例。 e.g. gce_master_ip
但是当我尝试在创建任务之后运行以下任务时,它们将不起作用:

- name: Create redis on the master
hosts: gce_master_ip
connection: ssh
become: True
gather_facts: True
vars_files:
- gcp_vars/secrets/auth.yml
- gcp_vars/machines.yml
roles:
- { role: redis, tags: ["redis"] }

auth.yml我已经提供了服务帐户电子邮件、json 凭证文件的路径和项目 ID。但显然这还不够。我收到如下错误:
UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey).\r\n", "unreachable": true}

这是不允许或未提供的典型 ssh 用户名和凭据。在这种情况下,我会说我没有为 ssh 设置任何用户名和私钥。 Ansible 将用来进行连接的连接。

我应该做些什么来确保提供相应的凭据来建立连接?

在我的搜索过程中,我认为一个问题只是简单地提到了您可以使用 gcloud compute ssh...命令。但是有没有一种方法可以在 Ansible 中指定不使用经典的 ssh并使用 gcloud 之一?

最佳答案

要将 Ansible SSH 导入 GCE 实例,您必须提供与实例上可用的 SSH 配置相对应的 SSH 用户名和私钥。
所以问题是:如果您刚刚使用了 gcp_compute_instance Ansible 模块创建一个新的 GCE 实例,有没有一种方便的方法可以在实例上配置 SSH,而无需手动连接到实例并自己做?
为此,GCP 提供了几种方法来 automate and manage key distribution对于 GCE 实例。
例如,您可以使用 OS Login特征。要通过 Ansible 使用操作系统登录:

  • 使用 Ansible 创建实例时,通过 metadata parameter 将“enable-oslogin”元数据字段设置为“TRUE”,在目标实例上启用 OS 登录。 .
  • 确保附加到运行 Ansible 的实例的服务帐户具有 roles/iam.serviceAccountUser and roles/compute.osLoginAdmin权限。
  • 要么生成一个新的,要么选择一个现有的SSH keypair将部署到目标实例。
  • Upload the public key用于操作系统登录:这可以通过 gcloud compute os-login ssh-keys add --key-file [KEY_FILE_PATH] --ttl [EXPIRE_TIME] 完成(其中 --ttl 指定您希望此公钥可用多长时间 - 例如,--ttl 1d 将使其在 1 天后过期)
  • 配置 Ansible 以使用服务帐户的用户名和与通过 gcloud 上传的公钥对应的私钥命令。例如,通过覆盖 ansible_useransible_ssh_private_key_file库存参数,或通过 --private-key--user参数到ansible-playbook .

  • 服务帐户用户名是 username gcloud 返回的值上面的命令。
    另外,如果你想自动设置 enable-oslogin跨 GCP 项目中的所有实例的元数据字段为“TRUE”,您可以简单地添加项目范围的元数据条目。这可以在 Cloud Console 中完成。在“计算引擎 > 元数据”下。

    关于google-cloud-platform - 如何使 Ansible Dynamic Inventory 与 Google Cloud Platform (Google Compute Engine)、GCP 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51034454/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com