Windows 在不提供凭据的情况下,无法使用(win_)uri模块从API检索信息 形势
我有一个剧本来配置Windows服务器。该剧本是通过Ansible从RHEL服务器执行的。RHEL服务器具有所有必需的kerberos配置,Ansible配置为使用windows主机的kerberos身份验证通过HTTP使用winrm。所有这些都很好,我只做了一次,一切都正常 对于playbook中的一项任务,我需要首先从RESTAPI检索一些信息。REST API使用IIS托管在Windows服务器上,并具有Windows身份验证 问题 我想使用win_uri或uri模块从RESTAPI检索信息,但我不想提供凭据。它使用win_外壳模块工作,为什么不适用于win_uri模块 剧本 什么有效 两个shell任务都可以正常工作,无需输入凭据 什么不起作用 使用win_uri模块仅在我传递不需要的凭据时有效。 win_uri模块是在目标主机上的系统上下文下执行的,由于shell命令可以工作,我认为win_uri模块也应该工作 在本地主机上使用uri模块不起作用。我尝试了几个参数组合,这些都是注释行,但我似乎无法让它工作 输出Windows 在不提供凭据的情况下,无法使用(win_)uri模块从API检索信息 形势,windows,iis,ansible,Windows,Iis,Ansible,我有一个剧本来配置Windows服务器。该剧本是通过Ansible从RHEL服务器执行的。RHEL服务器具有所有必需的kerberos配置,Ansible配置为使用windows主机的kerberos身份验证通过HTTP使用winrm。所有这些都很好,我只做了一次,一切都正常 对于playbook中的一项任务,我需要首先从RESTAPI检索一些信息。REST API使用IIS托管在Windows服务器上,并具有Windows身份验证 问题 我想使用win_uri或uri模块从RESTAPI检索信
根据您的输出,您的iis被设置为使用ntlm,即不带kerberos的windows身份验证,它在不带ansible的服务器上工作的原因是您进行了身份验证。
将iis设置更改为匿名根据您的输出,您的iis被设置为使用ntlm(也称为windows身份验证)而不使用kerberos,它在不使用ansible的服务器上工作的原因是您进行了身份验证。 将iis设置更改为“匿名”是否尝试过将“验证证书”选项更改为“否”或将“基本验证证书”选项更改为“是”?是否尝试过将“验证证书”选项更改为“否”或将“基本验证证书”选项更改为“是”?
---
- name: API Test
vars_files:
- secret.yml
vars:
api_url: http://iiswebserver.my.domain/api/item/0
hosts:
- windowshost.my.domain
gather_facts: no
#debugger: on_failed
tasks:
- name: Win Shell
win_shell: |
Invoke-RestMethod -Method Get -Uri {{ api_url }} -UseDefaultCredentials
register: win_shell_get
- name: Local Shell
shell: |
curl --negotiate -u : {{ api_url }}
register: shell_get
delegate_to: localhost
- name: Get API info remote
win_uri:
url: "{{ api_url }}"
method: GET
return_content: yes
user: "{{ secret_user }}"
password: "{{ secret_password }}"
#delegate_to: localhost
register: api_get
- name: Get API info local
uri:
url: "{{ api_url }}"
method: GET
return_content: yes
#user: "{{ secret_user }}"
#password: "{{ secret_password }}"
#other: --negotiate
delegate_to: localhost
register: api_get_local