You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于使用Ansible openstack.cloud模块操作OpenStack应用凭证的问题及报错咨询

使用Ansible openstack.cloud模块操作OpenStack应用凭证的问题及报错解决

嘿,我来帮您梳理下这个问题的来龙去脉和解决方案:

问题背景

你想用Ansible的openstack.cloud模块来管理OpenStack的应用凭证(包括列出已有凭证、创建新凭证),但找不到官方文档指引,尝试用openstack.cloud.resource模块时触发了报错。

报错原因分析

从你贴出的错误信息来看:

AttributeError: 'Proxy' object has no attribute 'update_application_credential'. Did you mean: 'create_application_credential'?

核心原因是OpenStack本身的应用凭证资源不支持更新操作——一旦创建完成,你只能查看、使用或者删除它,根本没有修改(update)的API接口。而openstack.cloud.resource模块默认会尝试执行完整的CRUD逻辑(包括更新),当它找不到对应的update_application_credential方法时,就抛出了这个错误。

解决方案

下面给你两种可行的操作方式:

1. 直接用openstack.cloud.resource模块(适配应用凭证的特性)

因为应用凭证不支持更新,所以我们要避免模块触发update逻辑,只做创建或查询:

创建应用凭证
- name: 创建OpenStack应用凭证
  openstack.cloud.resource:
    cloud: openstack
    service: identity
    type: application_credential
    attributes:
      user: myuser
      name: app_cred_name
    state: present
  register: app_cred_data

注意:如果同名凭证已存在,这个任务会失败,你可以先加一个查询任务判断是否存在,再决定是否创建。

列出指定用户的应用凭证
- name: 列出myuser的所有应用凭证
  openstack.cloud.resource:
    cloud: openstack
    service: identity
    type: application_credential
    attributes:
      user: myuser
    state: list
  register: app_cred_list

你可以通过app_cred_list.resources变量获取所有凭证的详细信息。

2. 用OpenStack CLI配合Ansible的command模块(更直观易调试)

如果你的Ansible执行环境已经安装了OpenStack客户端,这种方式会更简单,也更容易排查问题:

创建应用凭证
- name: 通过CLI创建应用凭证
  command: openstack application credential create --user myuser app_cred_name
  register: app_cred_output
列出应用凭证
- name: 通过CLI列出应用凭证
  command: openstack application credential list --user myuser
  register: app_cred_list_output

补充说明

如果需要修改应用凭证的权限、描述等属性,唯一的办法是先删除旧凭证,再创建符合需求的新凭证——毕竟OpenStack从设计上就不允许修改已存在的应用凭证。

备注:内容来源于stack exchange,提问作者sctx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:44:30