Saltstack的state状态配置管理是处理集中配置管理任务的一类重要功能。一般来说,salt master会使用本地文件系统作为state数据的后端文件服务器。为了有更便利、更安全可控的state状态配置数据管理效果,我们可以选择把这份数据存储在一个指定的远程git仓库中,saltstack支持直接访问远程git仓库获取需要使用的state状态配置数据。以下为简要的一个配置使用说明。
安装工具依赖包
我们使用的是centos7系统,saltstack v3001,在开始配置前先确认和删除掉系统默认安装的libgit2和python-pygit2两个低版本的软件。
1)手动下载和编译安装高版本的libgit2软件包
https://github.com/libgit2/libgit2/releases/download/v1.0.0/libgit2-1.0.0.tar.gz
wget https://github.com/libgit2/libgit2/releases/download/v1.0.0/libgit2-1.0.0.tar.gz
tar xzf libgit2-1.0.0.tar.gz
cd libgit2-1.0.0/
cmake .
make
sudo make install
编辑/etc/ld.so.conf文件,添加一行/usr/local/lib64的内容,保存退出,然后执行ldconfig以使生效。
2)安装高版本的cmake
pip3 install cmake
pygit2对高版本的cmake有使用依赖。
3)安装高版本的pygit2并验证
pip3 install pygit2
python3 -c 'import pygit2'
以下描述的是配置salt master服务直接使用git远程仓库作为存储state状态配置数据的文件服务器。默认地,salt master是使用本地文件系统的/srv/salt路径存储这类数据的。所有变更内容,均为编辑/etc/salt/master配置文件。
设置使用多个文件系统后端服务
fileserver_backend:
- roots
- git
- roots参数,代表使用本地文件系统,本地文件系统的存储路径由file_roots参数设置。
设置salt使用pygit2插件
gitfs_provider: pygit2
配置需要使用的git远程仓库
gitfs_pubkey: '/root/.ssh/id_rsa.pub'
gitfs_privkey: '/root/.ssh/id_rsa'
gitfs_remotes:
- ssh://git@git.your-domain.com/saltstack/srv.git
- 上面的id_rsa.pub需要在git仓库一侧做好访问授权配置
- 这里我们使用的是ssh认证方式的git仓库URL地址,当然也支持使用https方式,可以自行在网络上检索下saltstack gitfs_remotes参数的配置说明。
设置state top file文件对于git仓库的相对路径
gitfs_root: salt/
由于我配置使用的git仓库,其根路径下包含salt, pillar两个子目录,只有salt子目录才是用于state状态配置数据存储服务的。
重启服务并验证
systemctl restart salt-master
salt-run fileserver.file_list
systemctl status salt-master -ll
因为我配置的是同时支持git仓库和本地文件系统,所以为测试访问git仓库的有效性,建议在git仓库中存放一些独有的文件,然后使用上面的命令列表查看下显示结果是否正确。
请注意确认salt master服务的状态日志中没有报错信息。
注:在同时配置了多个salt master节点时,被管理的salt minion服务默认策略只会从排在前面的salt master服务获取文件、配置或pillar数据资源。