在合适的 group_vars 文件中保存一份可复用的代理映射:

proxy_env:
  http_proxy: http://gateway.example:8080
  https_proxy: http://gateway.example:8080

将其应用到远程操作:

- name: Download the managed artifact
  ansible.builtin.get_url:
    url: https://downloads.example/artifact.txt
    dest: /tmp/artifact.txt
    mode: '0644'
  environment: "{{ proxy_env }}"

对于允许未认证公共中间人的路由上的公共产物示例,从 HTTP 代理列表中获取候选 HTTP 代理 URL,并单独设置产物 URL。模块在其实际执行上下文中接收环境;get_url 文档中记载的 use_proxy 可以为有意直连的任务禁用由环境派生的代理。交互式 .bashrc 中的导出并不能保证相同的输入。如果任务看到空映射,请检查是否有 play 变量覆盖了 inventory 中的值。

当同一策略需要以同一用户身份覆盖更多操作时,使用 block/play 环境。该范围不会重新配置控制器的查找、过滤器插件或 Ansible 自身的连接。

单独管理持久的登录或服务偏好。任务环境随其操作结束;之后的服务从其自身的启动配置获取环境。

相关文章