首页 > 解决方案 > 在 Salt 的 gitfs 中挂载一个 git 存储库而不搜索状态模块

问题描述

我正在尝试在我的 salt 文件服务器中安装一个带有服务器配置文件(想想 nginx、mysql 等)的存储库,以便能够将这些文件分发给我的奴才(无需在我的所有奴才上检查完整的存储库)。

如果我理解正确:所有gitfs_remotes将被“扁平化”为一个文件系统结构(我可以在运行salt-run fileserver.file_list.

让我担心的是,据我所知,Salt 现在也在搜索这个“仅配置文件”存储库以查找状态模块。

有没有办法:

当然,我对这完全是错误方法的可能性持开放态度,我唯一的要求是服务器配置文件(再次,nginx,mysql 等)位于单独的存储库中,并且整个高状态(状态模块, top 文件)存在于 git 中。

主配置:

    fileserver_backend:
      - gitfs
    gitfs_remotes:
      - git@github.com:MyOrg/salt-configs.git:
      - git@github.com:MyOrg/server-config-files.git:
        - mountpoint: config-files

标签: salt-stack

解决方案


您是否考虑过将配置文件存储在支柱中?

例如:

HostFiles:
  LinuxBasic: |
    192.168.1.1 server1
    192.168.1.2 server2

然后在您的状态文件中,当您要渲染主机文件时:

LinuxBasicHostFile:
  file.managed:
    - name: /etc/hosts
    - contents_pillar: {{ HostFiles:LinuxBasic }}

如果该文件敏感,您也可以使用 Salt Master 服务器上的密钥对该文件进行 GPG:

$ cat nginx.hostfile | sudo gpg --armor --batch --trust-model always --encrypt --homedir <salthomdir> -r <keyname>

将其输出粘贴到您的支柱中:

HostFiles:
  LinuxBasic: |
    -----BEGIN PGP MESSAGE-----
    Xks383...a bunch of encrypted text...BjAs0
    -----END PGP MESSAGE-----

并通知您的 salt master HostFiles 在您的 master.conf 中包含 GPG 加密内容,或者更好的是,在 /etc/salt/master.d/decrypt.conf 的本地 conf 文件中:

decrypt_pillar:
  - 'HostFiles': gpg

推荐阅读