package_proxy_environment:
  environ.setenv:
    - name: package_proxy_environment
    - value:
        http_proxy: http://proxy.example:8080
        https_proxy: http://proxy.example:8080

network_packages:
  pkg.installed:
    - pkgs:
      - rsync
      - lftp
    - require:
      - environ: package_proxy_environment

value 映射给出的是真实的代理变量名。在允许使用公共代理的公共软件源场景下,HTTP 代理列表可为这些 HTTP 代理 URL 提供候选。 require 会等待环境状态成功完成后再执行软件包状态;附近彼此无关的代码块并不表达这种依赖。

默认情况下 environ.setenv 只影响当前的 Salt 子进程。 update_minion=True 还会改动主 minion 进程,使这些值的寿命更长。两者都不会设置操作系统级别的全局代理。

这一做法成立的前提是所选软件包提供商会读取这些环境输入。若提供商改用其他配置文件或独立服务,就需要改为配置那个消费者。Salt master 的代理并不会自动成为 minion 的出口路径。

相关文章