![如何从 Vagrant 为 salt 的 top.sls 文件指定环境?](https://linux22.com/image/645770/%E5%A6%82%E4%BD%95%E4%BB%8E%20Vagrant%20%E4%B8%BA%20salt%20%E7%9A%84%20top.sls%20%E6%96%87%E4%BB%B6%E6%8C%87%E5%AE%9A%E7%8E%AF%E5%A2%83%EF%BC%9F.png)
我想使用 Vagrant 部署一系列带有盐的盒子。
我查看了 salty-vagrant(现在已内置)中所有可用的 Vagrant salt 选项,但没有看到任何可以让我指定要使用哪个“环境”的选项,如 salt.sls 中所述
dev:
'webserver*dev*':
- webserver
'db*dev*':
- db
qa:
'webserver*qa*':
- webserver
'db*qa*':
- db
我希望所有机器类型都能有相同的 salt 目录,并使用不同的 Vagrant 文件(甚至是 vagrant 的参数)来确定我是否正在构建开发箱、质量保证箱、数据库箱等。
有什么方法可以将这些信息从 Vagrant 传递给 salt?
答案1
在 Vagrant 中向 minion 传递信息的最简单方法是使用 minon 文件。你可以在 minion 文件中定义 Grain, 但是也minon 的 ID。
我使用以下方法自己设置了一套 Vagrant 盒子。以下是一些摘录:
# top.sls (excerpt)
base:
'webserver*':
- webserver
'db*':
- db
在此示例中,webserver*
和db*
条目是主机名。我发现 Vagrant 设置框的主机名很晚(至少在我尝试时),所以我在 vagrant 中传递了一个带有硬编码 minon 名称的 minon 文件:
# Vagrantfile (excerpt)
config.vm.synced_folder "salt/roots/", "/srv/"
config.vm.provision :salt do |salt|
salt.minion_config = "salt/minion"
salt.run_highstate = true
end
还有 minion 文件:
# minion (excerpt)
id: webservertest
你也可以在minion文件中定义grain信息。
我希望这有帮助。
兄弟,亚历山大。