saltstack项目的存储库结构

时间:2015-02-27 04:48:02

标签: git salt-stack

我正在开始一个新项目,并且我希望使用SaltStack来管理跨多个数据中心的大型部署。一切都在Linux上运行。我之前有Chef的经历,但我对SaltStack比较新。我的目标是将整个项目保存在一个git存储库中,并使SaltStack从此存储库中提取配置并将其应用于minions。似乎SaltStack没有版本控制的概念,但是提供来自存储库中不同分支的内容会更好。所以,我正在考虑创建一个具有以下结构的git存储库:

salt -+- config (for salt-master config files)
      +- states
      +- pillars
      +- reactors
      +- formulas

并为devqaprod环境使用不同的分支。我还想使用pillars来提供特定于数据中心的配置,我正在考虑使用GitFS将所有内容粘合在一起。

然而,有一些令人讨厌的top.sls文件以非常特殊的方式处理,不适合这张图片并最终破坏了这个概念。

还有我希望保留在此存储库中的配置文件,但我现在还没有更好的想法,然后手动将它们复制或符号链接到/etc/salt目录下的config下。

我多次浏览文档并在模拟环境中进行了一些实验,但我还没有想出任何合理的项目布局,所以我已经到达了stackoverflow社区。

我的问题是:

  1. 是否有人可以共享他们成功用于管理类似环境的存储库结构和配置?
  2. 是否有人想出了维护配置文件的好方法?

2 个答案:

答案 0 :(得分:2)

听起来你正朝着一个合理的方向前进。我们没有像你这么大的操作(例如我们还没有使用多个环境,只有base;我们不使用反应堆等),但我们有类似的布局到我们的主要州回购。

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

自展开

我们使用Fabric脚本将配置和更新的状态/支柱从存储库部署到salt-master。 Fabric脚本还有一些任务来引导带有salt-minion的新机器并自动与主机进行密钥交换。

我想我们可以使用GitFS,但是我在设置和可靠地应用更新的变更集方面遇到了一些麻烦。从理论上讲,您可以引导salt来部署自己,但实际上,单独的,有限的部署过程已经足够好了。

隔离的秘密

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

答案 1 :(得分:0)

我在AWS工作,并且正在使用boto_ *套件来配置我的机器。他们的userdata脚本设置谷物以帮助顶级文件,然后安装,配置和启动salt minion,然后要求master进行高级执行。

我有一个类似的存储库结构,除了我已经将我的状态dirs打破为'provision'和'config'。

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