如何在AWX中传入谷歌SA JSON运行GCP VM管理Ansible Playbook
AWX 调用GCP服务账号凭证运行Playbook操作指引
AWX的Google Compute Engine类型凭证会在作业运行时自动完成凭证注入,不需要手动上传密钥到AWX服务器、也不需要保留本地运行时的硬编码路径配置,按以下步骤操作即可:
1. 调整Playbook移除本地硬编码的凭证配置
你本地运行时写死的本地密钥路径、SA邮箱配置在AWX执行环境中不存在,需要删除这些硬编码参数。Ansible GCP模块会自动读取AWX注入的认证环境变量,不需要手动指定service_account_file参数。
修改后的可用Playbook示例:
- name: Update Machine Type of GCE Instance hosts: localhost gather_facts: no connection: local vars: instance_name: ansible-test machine_type: e2-medium image: Debian GNU/Linux 11 (bullseye) zone: us-central1-a project_id: project-stg-xxxxx tasks: - name: Stop(Terminate) a instance gcp_compute_instance: name: "{{instance_name}}" project: "{{ project_id }}" zone: "{{zone}}" auth_kind: serviceaccount status: TERMINATED
*如果你的Playbook后续要跨本地和AWX环境复用,也可以给service_account_file、service_account_email参数设置默认空值,本地运行时再传入本地路径变量即可,不影响AWX环境的自动识别。
2. 作业模板关联已创建的GCP凭证
- 进入你之前创建的目标作业模板的编辑页面
- 找到「凭证」配置区块,点击添加凭证,在下拉列表中选中你之前创建的名为
ansible-gcp-secret的Google Compute Engine类型凭证 - 确认作业模板的清单选择为包含localhost的本地清单、Playbook路径指向正确的文件后,保存模板配置
3. 运行验证
直接启动作业即可正常运行,AWX执行作业时会自动完成以下操作:
- 将你上传的SA JSON密钥临时写入执行环境的安全临时路径
- 注入
GCP_SERVICE_ACCOUNT_FILE、GCP_SERVICE_ACCOUNT_EMAIL、GCP_PROJECT等GCP模块识别所需的环境变量 - 作业执行结束后自动销毁临时密钥文件,不会在执行节点残留凭证信息
常见问题:如果运行时报凭证找不到的错误,先确认作业模板是否正确关联了GCE类型凭证,不要把SA密钥作为普通文件类型凭证手动挂载,AWX预置的GCE凭证类型已经做了适配,手动挂载文件反而会导致环境变量识别异常。
内容的提问来源于stack exchange,提问作者SHC
相关产品推荐
相关产品推荐

