我有一本使用URI模块的剧本,用于处理通过REST API调用进行的配置。
要获得对API的身份验证,我需要像大多数REST API的工作一样要求授权令牌。
当返回的令牌具有'$'字符时,它将被转义,因此我的剧本因授权被拒绝而失败。
我可以在没有URI模块的情况下进行复制:
ansible-playbook -i hosts -e IPAM_TOKEN="Hj6E5HsSZ$LLQFlmMkhtTW6f" IPAM/b2b_global_alloc_dual_cpe.yml
PLAY [Playbook to allocate B2B Global Subnet from IPAM on Dual CPE] ************************************************************************************************************************************************************
TASK [Test] ********************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "Hj6E5HsSZ"
}
我试图在变量中添加Jinja安全过滤器,但仍然以某种方式转义了'$'字符:
- name: Test
debug:
msg: "{{ IPAM_TOKEN | safe }}"
有什么建议吗?
谢谢。
答案 0 :(得分:2)
使用URI模块进行测试:
---
- name: Retry url until xml content equals certain value
hosts: 127.0.0.1
connection: local
tasks:
- name: Retrieve token
uri:
url: "https://httpbin.org/anything"
method: POST
timeout: 10
validate_certs: no
headers:
token: "Hj6E5HsSZ$LLQFlmMkhtTW6f"
register: token_response_body
- name: debug token_response_body
debug: var=token_response_body.json.headers.Token
...
输出:
TASK [debug token_response_body] ***********************************************************************************************************************************************************************************************************
ok: [127.0.0.1] => {
"token_response_body.json.headers.Token": "Hj6E5HsSZ$LLQFlmMkhtTW6f"
}
答案 1 :(得分:1)
好吧,我认为在Ansible剧本有机会看到它之前,'$'已经被外壳转义了。
以下作品:
ansible-playbook -i hosts -e IPAM_TOKEN="Hj6E5HsSZ\$LLQFlmMkhtTW6f" IPAM/b2b_global_alloc_dual_cpe.yml
PLAY [Playbook to allocate B2B Global Subnet from IPAM on Dual CPE] ************************************************************************************************************************************************************
TASK [Test] ********************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "Hj6E5HsSZ$LLQFlmMkhtTW6f"
}