如何从 Vagrant 为 salt 的 top.sls 文件指定环境?

如何从 Vagrant 为 salt 的 top.sls 文件指定环境?

我想使用 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信息。

我希望这有帮助。

兄弟,亚历山大。

相关内容