如何在Salt的gitfs中挂载git仓库且禁止其被搜索状态模块
Salt独立配置仓库挂载解决方案
以下是符合你要求的两种官方原生实现方案,优先推荐第一种:
方案1:指定配置文件仓库不检索SLS(推荐)
Salt 2018.3及以上版本支持为单个gitfs远程仓库配置disable_sls参数,开启后该仓库内所有.sls文件都会被Salt当作普通文件处理,不会被检索为状态模块,完全满足你第一个需求。
修改后的master配置如下:
fileserver_backend: - gitfs gitfs_remotes: - git@github.com:MyOrg/salt-configs.git: - git@github.com:MyOrg/server-config-files.git: - mountpoint: config-files - disable_sls: true
配置生效步骤:
- 重启Salt Master服务
- 执行
salt-run fileserver.file_list_sls验证,输出结果不会包含server-config-files仓库内的任何SLS文件 - 状态模块中引用配置文件时直接使用路径
salt://config-files/[对应服务配置路径]即可
方案2:状态仓库挂载到子目录并指定top文件路径
如果你更倾向第二种需求,可以为状态仓库配置挂载点,同时修改master的state_top参数指定top文件的读取路径:
fileserver_backend: - gitfs # 指定top文件的读取路径 state_top: salt://salt-states/top.sls gitfs_remotes: - git@github.com:MyOrg/salt-configs.git: - mountpoint: salt-states - git@github.com:MyOrg/server-config-files.git: - mountpoint: config-files
注意事项:使用该方案时,所有状态间的include操作都需要加上挂载点前缀,例如include: salt-states.nginx.install,使用复杂度高于方案1。
通用验证方式
执行salt-run fileserver.file_list可以看到两个仓库的完整文件结构,服务配置文件都在config-files目录下,不会和状态仓库的文件冲突,minion侧无需安装git,直接通过Salt文件服务器拉取所需文件即可。
内容的提问来源于stack exchange,提问作者peterrus
相关产品推荐
相关产品推荐

