Git saltstack项目的存储库结构

Git saltstack项目的存储库结构,git,salt-stack,Git,Salt Stack,我正在开始一个新项目,我想使用SaltStack来管理跨越多个数据中心的大型部署。一切都在Linux上运行。我以前有过Chef的工作经验,但我对SaltStack比较陌生。我的目标是将整个项目保存在一个git存储库中,并使SaltStack从该存储库中提取配置并将其应用于仆从。SaltStack似乎没有版本控制的概念,但是在存储库中为来自不同分支的内容提供服务会更好。因此,我想创建一个git存储库,其结构如下: salt -+- config (for salt-master config fi

我正在开始一个新项目,我想使用
SaltStack
来管理跨越多个数据中心的大型部署。一切都在Linux上运行。我以前有过
Chef
的工作经验,但我对
SaltStack
比较陌生。我的目标是将整个项目保存在一个git存储库中,并使SaltStack从该存储库中提取配置并将其应用于仆从。SaltStack似乎没有版本控制的概念,但是在存储库中为来自不同分支的内容提供服务会更好。因此,我想创建一个git存储库,其结构如下:

salt -+- config (for salt-master config files)
      +- states
      +- pillars
      +- reactors
      +- formulas
并为
dev
qa
prod
环境使用不同的分支。我还想使用
支柱
来提供数据中心特定的配置,我正在考虑使用
GitFS
将所有内容粘合在一起

然而,有些讨厌的
top.sls
文件以一种非常特殊的方式处理,不适合这种情况,并最终打破了这一概念

还有一些配置文件我想保存在这个存储库中,但我现在没有更好的主意,只能从
config
目录手动复制或将它们符号链接到
/etc/salt

我查阅了好几次文档,并在模拟环境中进行了一些实验,但我还不能提出任何合理的项目布局,因此我正在接触stackoverflow社区

我的问题是:

  • 任何人都可以共享他们成功用于管理类似环境的存储库结构和配置吗
  • 有人想出了维护配置文件的好方法吗

  • 听起来你正朝着一个合理的方向前进。我们并没有你们那个么大的运营规模(例如,我们还并没有使用多个环境,只是
    base
    ;我们并没有使用反应堆等等),但我们的布局与我们的主要州repo类似

    以下是我们采用的一些做法:

    自部署 我们使用Fabric脚本将配置和更新的状态/支柱从存储库部署到salt主机。Fabric脚本还具有引导一台新机器(带有salt minion)和自动化密钥交换(带有master)的任务

    我想我们可以使用GitFS,但我在设置它和可靠地应用更新的变更集时遇到了一些困难。理论上,您可以引导salt自行部署,但在实践中,单独的、有限的部署过程已经足够好了

    隔离秘密
    我们将所有“秘密”作为支柱文件保存在单独的存储库中,以使它们远离我们的主存储库。我们的部署脚本检查这些内容,并将它们部署到salt master上的/srv/支柱树中的正确位置。这允许我们将敏感数据(密码、密钥对等)保留在主存储库之外。我们使用salt在开发人员机器上提供流浪VM,因此“开发秘密”存储在主存储库中。

    我在AWS工作,正在使用boto_*套件提供我的机器。他们的userdata脚本设置颗粒以帮助顶部文件,然后安装、配置并启动salt minion,然后请求主程序执行highstate

    我有一个与您类似的存储库结构,只是我将状态目录分为“provision”和“config”


    我现在正在打电话,但请告诉我这种方法听起来是否相关,一旦我回到笔记本电脑上,我可以进一步充实它

    要解决如此广泛的一系列问题,“答案”即使不是不可能,也是很困难的。也就是说,我对你的问题投了更高的票,并将在下周有更多时间的时候重新讨论这个问题。问题3的答案是“是”,所以你可以删除它。@Dan:我要找的只是一个工作示例。是的,我们也认为我们至少需要一个单独的支柱存储库来保护主存储库之外的秘密,这是唯一合理的部分,其余的都是一团糟。我在github上问了同样的问题,但即使是saltstack的开发人员也没有明确的答案,所以它看起来像是设计上的意大利面。嗨,Eric,我也在使用AWS(多个帐户来管理不同的项目),每个帐户上都有prod、stage、dev、envs(VPCc)。我用的是Ansible,但现在我用的是盐。你能详细说明你的结构吗?提前谢谢