SaltStack:在 pkg.installed 之前设置代理变量
用 require 保证正常的顺序执行,并有意选择环境是留在当前子进程,还是留在主 minion 进程。
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_environmentvalue 映射给出的是真实的代理变量名。在允许使用公共代理的公共软件源场景下,HTTP 代理列表可为这些 HTTP 代理 URL 提供候选。 require 会等待环境状态成功完成后再执行软件包状态;附近彼此无关的代码块并不表达这种依赖。
默认情况下 environ.setenv 只影响当前的 Salt 子进程。 update_minion=True 还会改动主 minion 进程,使这些值的寿命更长。两者都不会设置操作系统级别的全局代理。
这一做法成立的前提是所选软件包提供商会读取这些环境输入。若提供商改用其他配置文件或独立服务,就需要改为配置那个消费者。Salt master 的代理并不会自动成为 minion 的出口路径。