我正在尝试将 Ansible 与 openstack.cloud 模块结合使用来部署新的自定义 VM/实例。为此,我首先需要检索有关每个数据中心的风格/图像 ID 的某些详细信息:
- name: Create a new Compute Instance
hosts: localhost
gather_facts: false
vars:
new_instances:
test_instance1:
datacenter: "london"
type: "A1"
test_instance2:
datacenter: "paris"
type: "B1"
test_instance3:
datacenter: "frankfurt"
type: "C1"
tasks:
- name: Retrieve Openstack Flavor info
openstack.cloud.compute_flavor_info:
auth:
auth_url: <secret>
username: <secret>
password: <secret>
project_id: <secret>
project_name: <secret>
name: "{{ item.value.type }}"
region_name: "{{ item.value.datacenter }}"
with_dict: "{{ new_instances }}"
register: flavor_output
- debug:
msg: "{{ flavor_output }}"
没有循环(如果我在任务中硬编码名称和区域),事情按预期工作,对 auth 端点的请求成功并且响应存储在“flavor_output”变量中。
然而,当使用上述循环时,注册的“flavor_output”变量似乎包含请求而不是返回的 API 响应。这是调试输出:
ok: [localhost] => {
"msg": {
"changed": false,
"msg": "All items completed",
"results": [
{
"ansible_loop_var": "item",
"changed": false,
"failed": false,
"flavors": [],
"invocation": {
"module_args": {
"api_timeout": null,
"auth": {
"auth_url": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"project_id": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"project_name": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER"
},
"auth_type": null,
"ca_cert": null,
"client_cert": null,
"client_key": null,
"ephemeral": null,
"interface": "public",
"limit": null,
"name": "A1",
"ram": null,
"region_name": "london",
"sdk_log_level": "INFO",
"sdk_log_path": null,
"timeout": 180,
"validate_certs": null,
"vcpus": null,
"wait": true
}
},
"item": {
"key": "test_instance1",
"value": {
"datacenter": "london",
"type": "A1"
}
}
},
{
"ansible_loop_var": "item",
"changed": false,
"failed": false,
"flavors": [],
"invocation": {
"module_args": {
"api_timeout": null,
"auth": {
"auth_url": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"project_id": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"project_name": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER"
},
"auth_type": null,
"ca_cert": null,
"client_cert": null,
"client_key": null,
"ephemeral": null,
"interface": "public",
"limit": null,
"name": "B1",
"ram": null,
"region_name": "paris",
"sdk_log_level": "INFO",
"sdk_log_path": null,
"timeout": 180,
"validate_certs": null,
"vcpus": null,
"wait": true
}
},
"item": {
"key": "test_instance2",
"value": {
"datacenter": "paris",
"type": "B1"
}
}
},
{
"ansible_loop_var": "item",
"changed": false,
"failed": false,
"flavors": [],
"invocation": {
"module_args": {
"api_timeout": null,
"auth": {
"auth_url": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"project_id": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"project_name": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"username": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER"
},
"auth_type": null,
"ca_cert": null,
"client_cert": null,
"client_key": null,
"ephemeral": null,
"interface": "public",
"limit": null,
"name": "C1",
"ram": null,
"region_name": "frankfurt",
"sdk_log_level": "INFO",
"sdk_log_path": null,
"timeout": 180,
"validate_certs": null,
"vcpus": null,
"wait": true
}
},
"item": {
"key": "test_instance3",
"value": {
"datacenter": "frankfurt",
"type": "C1"
}
}
}
],
"skipped": false
}
}
我在这里遗漏了一些明显的东西吗?有没有可能像 openstack.cloud.compute_flavor_info 这样的模块不能很好地处理循环?