我能够通过 Ansible URI 模块成功使用 Oracle Virtual Machine Manager (OVMM) REST API,但我必须将用户名和密码传递给每个调用,而不是从第一次调用中获取会话 cookie 并在之后使用它们。据我了解,以下内容应该有效,但是我从第二次通话中收到“401 Unauthorized”。我在第二次通话中尝试了多种变体。当我调试剧本时,我看到 cookie(JSESSIONID 和 _WL_AUTHCOOKIE_JSESSIONID)正在按预期传递。需要明确的是,如果我将第二个 API 调用更改为使用 basic_auth、用户名和密码,则它可以工作。
- name: Get OVM Manager
local_action:
module: uri
url: "{{ baseuri }}/Manager"
url_username: "{{ ovmUser }}"
url_password: "{{ ovmPassword }}"
validate_certs: false
force_basic_auth: true
method: GET
register: login
- name: Get info about VMs
local_action:
module: uri
url: "{{ baseuri }}/Vm/id"
validate_certs: false
method: GET
headers:
Cookie: "{{ login.cookies_string }}" # Why doesn't this work???
答案1
请改用以下参数:
headers:
Cookie: "{{ login.set_cookie }}"