请先参照配置git仓库作为state后端文件系统的方法的文章安装好相关的工具依赖包。
以下配置内容均是针对/etc/salt/master配置文件进行的变更。
设置需要使用的远程git仓库信息
ext_pillar:
- git:
- master ssh://git@git.your-domain.com/saltstack/srv.git:
- env: base
- root: pillar
- pubkey: /root/.ssh/id_rsa.pub
- privkey: /root/.ssh/id_rsa
- env参数,用于指定分支到运行环境之间的映射关系,在这里我们是使用的master分支,并将其映射为 base 运行环境
- root参数,用于指定相对路径,因为我们配置使用的git仓库根目录下的pillar子目录才是存储pillar数据的目标路径
- 确保已经在git server侧对以上公钥文件做了访问授权
允许使用pillar.ext获取外部pillar数据
on_demand_ext_pillar:
- git
设置访问git需要使用的插件
git_pillar_provider: pygit2
设置git仓库中存储pillar数据的相对路径
git_pillar_root: pillar/
我配置使用的git仓库根目录下的pillar子目录才是存储pillar数据的目标路径,所以需指定这一参数。
重启服务并测试
在开始测试前,请先行在存储在git仓库pillar目录中准备一些可测试的pillar变量数据
systemctl status salt-master
salt-call saltutil.refresh_pillar
salt-call pillar.items
systemctl status salt-master -ll
如果上面的配置结果没有提示报错信息,那在执行以下命令时应该看到你预先定义好的pillar数据,而这份pillar数据应该是从远程git仓库获取的。
[root@test-server salt]# salt-call pillar.items
local:
----------
test_pillar:
12345
在git_pillar模块的源代码文件中有更详细的配置说明,但也不是照搬就可以使用,需自行反复验证、调试,以下链接供大家参考。https://github.com/saltstack/salt/blob/develop/salt/pillar/git_pillar.py