Google cloud platform 如何让Ansible动态库存与谷歌云平台(谷歌计算引擎)GCP协同工作
我使用Ansible按照以下指南创建了一个gce集群: 在GCE创建结束时,我使用Google cloud platform 如何让Ansible动态库存与谷歌云平台(谷歌计算引擎)GCP协同工作,google-cloud-platform,ansible,google-compute-engine,Google Cloud Platform,Ansible,Google Compute Engine,我使用Ansible按照以下指南创建了一个gce集群: 在GCE创建结束时,我使用add_hostAnsible模块注册其相应组中的所有实例例如gce\U master\U ip 但是,当我尝试在创建任务之后运行以下任务时,它们将不起作用: - name: Create redis on the master hosts: gce_master_ip connection: ssh become: True gather_facts: True vars_files:
add_host
Ansible模块注册其相应组中的所有实例<代码>例如gce\U master\U 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用户名和凭据。在本例中,我会说我没有为Ansible将用于连接的ssh
连接设置任何用户名和私钥
我应该做些什么来确保提供了相应的凭据来建立连接
在我的搜索过程中,我想有一个问题简单地提到了可以使用
gcloudcomputessh…
命令。但是有没有一种方法我可以指定不使用经典的ssh
而使用gcloud 要让Ansible SSH进入GCE实例,您必须提供一个SSH用户名和私钥,该用户名和私钥对应于实例上可用的SSH配置
所以问题是:如果您刚刚使用Ansible模块创建了一个新的GCE实例,是否有一种方便的方法可以在该实例上配置SSH,而不必手动连接到该实例并自己进行配置
为此,GCP提供了两种方法来为GCE实例提供支持。
例如,您可以使用该功能。要将操作系统登录与Ansible一起使用,请执行以下操作:
gcloud compute OS Login ssh keys add--key file[key\u file\u PATH]--ttl[EXPIRE\u TIME]
(其中--ttl
指定此公钥的可用时间-例如,--ttl 1d
将使其在1天后过期)gcloud
命令上载的公钥相对应的私钥。例如,通过覆盖ansible\u user
和ansible\u ssh\u private\u key\u文件
清单参数,或者通过将--private key
和--user
参数传递到ansible playbook
gcloud
命令返回的username
值
此外,如果要在GCP项目的所有实例中将启用oslogin
元数据字段自动设置为“TRUE”,只需添加项目范围的元数据条目即可。这可以在“计算引擎>元数据”下完成