首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不更改Vagrantfile的情况下,在Vagrant中的同一个VM上运行一个动态数量的shell提供程序?

在不更改Vagrantfile的情况下,在Vagrant中的同一个VM上运行一个动态数量的shell提供程序?
EN

Stack Overflow用户
提问于 2018-09-25 01:37:04
回答 1查看 35关注 0票数 1

我正在编写一个Vagrantfile来设置一个VM。有些配置参数我不想硬编码在Vagrantfile文件中,比如内存和CPU数量。因此,我使用一个加载在Vagrantfile中的YAML文件来存储这些配置参数。YAML文件中存储的一件事是要运行的shell提供程序脚本列表。例如:

代码语言:javascript
复制
---
machine_config:
  mem: 2048
  cpus: 2
  provisioners:
    -name: shell-script-1
     path: <path-to-shell-script-1>
    -name: shell-script-2
     path: <path-to-shell-script-2>
---

供应人员的数量并不是事先就知道的:在上面的YAML中有两个,但这只是一个例子。我想要一个Vagrantfile文件,它可以运行YAML文件中的所有提供程序。我的意思是,我希望能够在不接触Vagrantfile的情况下向YAML文件添加/删除提供程序,但是Vagrantfile应该正确地运行YAML文件中的所有提供程序。我在Google上搜索了很多例子,说明如何在动态数量的VM上运行相同的硬编码的提供程序,但是找不到任何解决问题的方法。

我想要做的,是用伪迷走片文件语法编写的是:

代码语言:javascript
复制
require "yaml"

current_dir = File.dirname(File.expand_path(__FILE__))
yaml_config = YAML.load_file("#{current_dir}/machine_config.yaml")
machine_config = yaml_config["machine_config"]
additional_scripts = machine_config["provisioners"]

Vagrant.configure("2") do |config|
  config.vm.box = <vm-box-to-use>

  for each item $script in additional_scripts do 
    config.vm.provision "shell", path: $script["path"] 
  end

end

其中,machine_config.yaml是一个YAML文件,就像这个问题的第一个例子中的那样,而$script是一个变量,在循环的每一次迭代中都有一个在machine_config.yaml中描述的提供程序。最后一点,我对Ruby和Ruby的语法一无所知(也许对那些知道Ruby和Ruby语法的人来说,我的问题的答案是微不足道的,但我在googling上找不到)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-25 14:37:19

以下内容将起作用

代码语言:javascript
复制
require "yaml"

current_dir = File.dirname(File.expand_path(__FILE__))
yaml_config = YAML.load_file("#{current_dir}/machine_config.yaml")
machine_config = yaml_config["machine_config"]

Vagrant.configure("2") do |config|
  config.vm.box = "<vm-box-to-use>"

  machine_config["provisioners"].each do |script|
    config.vm.provision "shell", name: script['name'], path: script['path']
  end

end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52489429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档