moh*_*ium 2 git configuration-management saltstack
我对盐相当陌生,所以我可能错过了一些东西,但我无法弄清楚。
我使用 salt 作为命令执行工具(目前没有配置管理)。我找不到一种方法来使用盐从仆从中获取配置并将它们放入 git 存储库中。
我最终试图实现的是给盐主一个像这样的配置文件列表
/etc/ssh/ssh_config
/etc/vim/vimrc
etc.
Run Code Online (Sandbox Code Playgroud)
并让 salt-master 运行获取这些文件,把它放在像这样的文件夹中
/srv/salt/minions/configs/minion01/etc/ssh/ssh_config
/srv/salt/minions/configs/minion02/etc/ssh/ssh_config
Run Code Online (Sandbox Code Playgroud)
然后我可以让主将整个内容推送到我们的 git 服务器并让所有配置版本化。
我知道 salt 可以处理状态,但我发现的一切都是将文件从 master 推送到 minion 以保持应有的状态,但我只想从所有服务器收集所有更新配置并自动对其进行版本控制.
有一个命令叫
salt \* cp.push /etc/ssh/ssh_config
Run Code Online (Sandbox Code Playgroud)
将配置文件推送到 /var/cache/salt/minion/minion01/files/etc/ssh/ssh_config,这看起来很完美,但我不知道如何在文件更改时告诉 salt 这样做(我们有很多一些服务器和许多版本的配置......)并且只在它发生变化时才获取它,所以我不必每五分钟左右获取所有文件(通过cron)。
任何人都知道如何用盐来做到这一点?
问候, 莫尔菲姆
您正在以错误的方式思考这个问题,Salt 的设计目的不是为您提供您在机器上所做更改的历史记录,而是规定机器应处于的“高”状态。 etckeeper 遵循本地所做的更改, 将本地所做的更改记录到 git 中,而 salt 使您的框遵循 git repo 中的任何更改。如果 minion 有任何本地更改,它会在您执行 highstate 时显示给您。你能猜出是哪一个秤吗?
所以这是一个如何做到这一点的简单示例(这恰好使用 bitbucket for git):
1)设置你的salt master /etc/salt/master :
文件根: 根据: - /srv/盐 文件服务器后端: - 混帐 - 根 gitfs_remotes: - git@bitbucket.org:user/your-salt-repo.git 柱子根: 根据: - /srv/支柱
2) 在你的 git repo 的根目录中创建一个简单的 top.sls:
根据: '*.domain.com': - 核
3) 在你的 git repo 中创建一些额外的目录:
mkdir 核心 mkdir 服务器 mkdir 服务器/默认 mkdir 服务器/minion01
4) 创建一个简单的 core/init.sls 文件:
/etc/ssh/ssh_config: 文件管理: - 来源: - salt://servers/{{grains['id'] }}/ssh_config - salt://servers/default/ssh_config
5) 在servers/default/ssh_config 下创建一个默认的ssh_config。
6)在servers/minion01/ssh_config下创建minion-specific ssh_config
7) 提交更改并将更改推送回您的 git 存储库 (bitbucket)。
8) 从 salt master 运行:sudo salt '*' state.highstate test=true
查看将应用哪些更改。
当minion01联系salt master时,它会得到servers/minion01/ssh_config,但任何其他minion(比如minion02)在/servers/minion.id.whatever/下没有ssh_config文件,并在列表中向下移动到下一个源(servers /默认)。除了通过 minion_id 执行此操作之外,您还可以基于其他谷物(如 os、fqdn、域等)执行此操作(请参阅带有 的 minion 上的谷物列表salt 'minion-id' grains.items
)。
一旦你捕获了这些文件的初始状态,你就可以在一个中心位置(git repo)进行更改,然后运行 state.highstate 以推出进一步的更改。这种最初的痛苦是值得的。您可以自动化其中的一些,但您真正想要做的是找到根据定义需要一些手动干预才能识别的异常值。我建议你从 ssd_config 之类的东西开始,一次运行state.highstate test=true
一个minion 。如果默认值有变化,它会向您显示差异,您可以判断这是否保证默认值的例外。
注意:您需要为 salt master 上的 root 用户设置 ssh 密钥,以获得读取您的 git 存储库的权限(bitbucket 调用这些部署密钥)。
归档时间: |
|
查看次数: |
6516 次 |
最近记录: |