Ansible 循环检索 Openstack 风格/图像信息

问题描述 投票:0回答:0

我正在尝试将 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 这样的模块不能很好地处理循环?

ansible openstack
© www.soinside.com 2019 - 2024. All rights reserved.