提前致歉:过去几年我一直在与盐打交道。 。 .
我希望能够使用 group_vars/all 中的
proxy_envs
以便能够在 environment
中为 get_url
任务设置代理。- name: Download something via http
ansible.builtin.get_url:
url: http://example.com/
environment: "{{ proxy_env }}"
我想使用 yaml 锚点,例如:
proxy_server: &proxy_server "http://squid:3128"
proxy_env:
http_proxy: *proxy_server
https_proxy: *proxy_server
ftp_proxy: *proxy_server
这似乎工作正常。我的问题是 no_proxy 。 。 。我希望它是一个列表,例如
no_proxy: &no_proxy
- url1
- url2
但是我希望能够像这样使用 proxy_env 设置 no_proxy :
no_proxy: &no_proxy
- url1
- url2
proxy_server: &proxy_server "http://squid:3128"
proxy_env:
http_proxy: *proxy_server
https_proxy: *proxy_server
ftp_proxy: *proxy_server
no_proxy: "{{ *no_proxy|join(',') }}"
Ansible 不喜欢这样:
template error while templating string: unexpected '*'. String: {{ *no_proxy|join(',') }}. unexpected '*'"
这可能吗?谢谢!
从表达式中删除
*
。无需使用锚。使用变量的值
proxy_env:
http_proxy: *proxy_server
https_proxy: *proxy_server
ftp_proxy: *proxy_server
no_proxy: "{{ no_proxy | join(',') }}"
给你想要的
proxy_env:
ftp_proxy: http://squid:3128
http_proxy: http://squid:3128
https_proxy: http://squid:3128
no_proxy: url1,url2
用于测试的完整剧本示例
- hosts: all
vars:
no_proxy: &no_proxy
- url1
- url2
proxy_server: &proxy_server "http://squid:3128"
proxy_env:
http_proxy: *proxy_server
https_proxy: *proxy_server
ftp_proxy: *proxy_server
no_proxy: "{{ no_proxy | join(',') }}"
tasks:
- debug:
var: no_proxy
- debug:
var: proxy_env