我想使用 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信息。
我希望这有帮助。
兄弟,亚历山大。