cisco.aci.aci_rest 模块 – 直接访问 Cisco APIC REST API
注意
此模块是 cisco.aci 集合 (版本 2.10.1) 的一部分。
如果您使用的是 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查是否已安装它,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install cisco.aci
。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。
要在 playbook 中使用它,请指定:cisco.aci.aci_rest
。
概要
允许通过直接访问 Cisco APIC REST API 来管理 Cisco ACI 结构。
由于 APIC 的幂等性,此模块也是幂等的,并报告更改。
要求
在执行此模块的主机上需要以下要求。
lxml(使用 XML 负载时)
xmljson >= 0.1.8(使用 XML 负载时)
python 2.7+(使用 xmljson 时)
参数
参数 |
注释 |
---|---|
用于注释对象的自定义字符串。 如果任务中未指定该值,则将改用环境变量 如果任务和环境变量 默认值: |
|
附加到用于基于签名的身份验证的 APIC AAA 用户的 X.509 证书名称。 如果提供了 如果为 如果任务中未指定该值,则将改用环境变量 |
|
当不用 这对于模板化简单的请求可能很方便。 对于任何复杂的请求,请使用 |
|
Ansible 控制主机可解析的 APIC 的 IP 地址或主机名。 如果任务中未指定该值,则将改用环境变量 |
|
请求的 HTTP 方法。 使用 使用 使用 选项
|
|
影响此 ACI 模块的输出。
如果任务中未指定值,则使用环境变量 选项
|
|
用于转储模块生成的 ACI JSON 配置对象的路径。 如果任务中未指定值,则使用环境变量 |
|
用于身份验证的密码。 此选项与 如果任务中未指定值,则使用环境变量 |
|
用于执行 API 调用的 URI。 必须以 |
|
用于 REST 连接的端口号。 默认值取决于参数 如果任务中未指定值,则使用环境变量 |
|
PEM 格式的私钥文件或用于基于签名的身份验证的私钥内容。 此值还会影响使用的默认 此选项与 如果任务中未指定值,则使用环境变量 |
|
保留提供的路径的响应。 选项
|
|
包含发送到 ACI 结构的 HTTP 请求正文的文件名的绝对路径名称。 如果您需要模板化的负载,请将 |
|
如果为 如果任务中未指定值,则使用环境变量 默认值为 警告 - 这会导致之前的返回值为空。 不会检查对象的先前状态,POST 更新将包含所有属性。 选项
|
|
如果为 如果任务中未指定值,则使用环境变量 默认值为 警告 - 这会导致当前返回值设置为建议值。 包含默认值的当前对象在一个任务中将无法验证。 选项
|
|
以秒为单位的套接字级别超时。 如果任务中未指定值,则使用环境变量 默认值为 30。 |
|
如果为 如果任务中未指定值,则使用环境变量 默认值为 true。 选项
|
|
如果为 如果任务中未指定值,则使用环境变量 当连接为本地连接时,默认值为 true。 选项
|
|
用于身份验证的用户名。 如果任务中未指定值,则使用环境变量 默认值为 admin。 |
|
如果为 只有在使用自签名证书的个人控制站点上才应将其设置为 如果任务中未指定值,则使用环境变量 默认值为 true。 选项
|
备注
注意
已知某些有效负载不是幂等的,因此在构建有效负载时要小心,例如,使用
status="created"
会导致幂等性问题,请改用status="modified"
。更多信息请参见:ref:`ACI 文档 <aci_guide_known_issues>`。已知某些有效负载(和使用的路径)在发生更改时会报告没有发生更改。这是一个已知的 APIC 问题,已向供应商报告。此问题存在解决方法。更多信息请参见:ref:`ACI 文档 <aci_guide_known_issues>`。
XML 有效负载需要
lxml
和xmljson
python 库。对于 JSON 有效负载,不需要任何特殊设置。如果您没有任何属性,则可能需要添加值为空字典“{}”的“attributes”键,因为 APIC 期望该条目在任何子项之前。
直接在 c(src) 或
content
中设置的注释将优先于annotation
参数。
另请参见
另请参见
- cisco.aci.aci_tenant
管理租户 (fv:Tenant)。
- Cisco APIC REST API 配置指南
有关 APIC REST API 的更多信息。
- Cisco ACI 指南
有关如何使用 Ansible 管理 ACI 基础架构的详细信息。
- 开发 Cisco ACI 模块
有关如何编写自己的 Cisco ACI 模块以进行贡献的详细指南。
示例
- name: Add a tenant using certificate authentication
cisco.aci.aci_rest:
host: apic
username: admin
private_key: pki/admin.key
method: post
path: /api/mo/uni.xml
src: /home/cisco/ansible/aci/configs/aci_config.xml
delegate_to: localhost
- name: Add a tenant from a templated payload file from templates/
cisco.aci.aci_rest:
host: apic
username: admin
private_key: pki/admin.key
method: post
path: /api/mo/uni.xml
content: "{{ lookup('template', 'aci/tenant.xml.j2') }}"
delegate_to: localhost
- name: Add a tenant using inline YAML
cisco.aci.aci_rest:
host: apic
username: admin
private_key: pki/admin.key
validate_certs: false
path: /api/mo/uni.json
method: post
content:
fvTenant:
attributes:
name: Sales
descr: Sales department
delegate_to: localhost
- name: Add a tenant using a JSON string
cisco.aci.aci_rest:
host: apic
username: admin
private_key: pki/admin.key
validate_certs: false
path: /api/mo/uni.json
method: post
content:
{
"fvTenant": {
"attributes": {
"name": "Sales",
"descr": "Sales department"
}
}
}
delegate_to: localhost
- name: Add a tenant using an XML string
cisco.aci.aci_rest:
host: apic
username: admin
private_key: pki/{{ aci_username }}.key
validate_certs: false
path: /api/mo/uni.xml
method: post
content: '<fvTenant name="Sales" descr="Sales departement"/>'
delegate_to: localhost
- name: Get tenants using password authentication
cisco.aci.aci_rest:
host: apic
username: admin
password: SomeSecretPassword
method: get
path: /api/node/class/fvTenant.json
delegate_to: localhost
register: query_result
- name: Configure contracts
cisco.aci.aci_rest:
host: apic
username: admin
private_key: pki/admin.key
method: post
path: /api/mo/uni.xml
src: /home/cisco/ansible/aci/configs/contract_config.xml
delegate_to: localhost
- name: Register leaves and spines
cisco.aci.aci_rest:
host: apic
username: admin
private_key: pki/admin.key
validate_certs: false
method: post
path: /api/mo/uni/controller/nodeidentpol.xml
content:
<fabricNodeIdentPol>
<fabricNodeIdentP name="{{ item.name }}" nodeId="{{ item.nodeid }}" status="{{ item.status }}" serial="{{ item.serial }}"/>
</fabricNodeIdentPol>
with_items:
- '{{ apic_leavesspines }}'
delegate_to: localhost
- name: Wait for all controllers to become ready
cisco.aci.aci_rest:
host: apic
username: admin
private_key: pki/admin.key
validate_certs: false
path: /api/node/class/topSystem.json?query-target-filter=eq(topSystem.role,"controller")
register: apics
until: "'totalCount' in apics and apics.totalCount|int >= groups['apic']|count"
retries: 120
delay: 30
delegate_to: localhost
run_once: true
返回值
常见的返回值已在此处记录 此处,以下是此模块特有的字段
键 |
描述 |
---|---|
REST ACI 返回代码,在故障排除时很有用 返回:始终 示例: |
|
REST ACI 描述性文本,在故障排除时很有用 返回:始终 示例: |
|
APIC REST 返回的转换后的输出(注册此输出以进行后处理) 返回:始终 示例: |
|
发送到 APIC REST API 的(模板化)有效负载(xml 或 json) 返回:始终 示例: |
|
APIC REST API 返回的原始输出(xml 或 json) 返回:解析错误 示例: |
|
HTTP 响应字符串 返回:始终 示例: |
|
HTTP 状态码 返回:始终 示例: |
|
imdata 数组中的项目数 返回:始终 示例: |
|
用于 APIC REST 调用的 URL 返回:成功 示例: |