vagrant - 打包器 config.json 文件中的循环是否可能?
问题描述
打包机中的循环有可能吗?我有一个带有循环的 Vagrantfile 并希望将其转换为打包程序。我已经在谷歌和堆栈溢出上进行了搜索,但没有找到正确的解决方案。
我在将其转换为 json 格式时遇到问题: (0..$NODE_COUNT).each do |I|
# -*- mode: ruby -*-
# vi: set ft=ruby :
$BOX_IMAGE = "VAGRANT CLOUD IMAGE NAME"
$TBSP_VERSION = "2.0"
# number of additional tendermint validation nodes to be provisioned
$NODE_COUNT = 1
Vagrant.configure("2") do |config|
(0..$NODE_COUNT).each do |i|
config.vm.define "node#{i}" do |subconfig|
subconfig.vm.box = $BOX_IMAGE
subconfig.vm.hostname = "node#{i}"
subconfig.vm.network "private_network", ip: "192.168.50.#{i + 10}"
subconfig.disksize.size = '10GB'
subconfig.vm.provider "virtualbox" do |v|
v.memory = 4096
v.cpus = 4
v.customize ["modifyvm", :id, "--name", "v2.0-abci-tm-d-multi-node#{i}-server"]
end
subconfig.trigger.after :up do |trigger|
if(i == $NODE_COUNT)
trigger.info = "last Node-#{$NODE_COUNT} is up"
trigger.run = {path: "provision_tendermint.sh", :args => "'#{$NODE_COUNT}'"}
end
end
subconfig.vm.provision "shell", path: "provision.sh", :args => "'#{i}' '#{$NODE_COUNT}'"
end
end
end
解决方案
不,Packer JSON 目前不支持进行任何类型的循环。您将不得不以不同的方式处理此问题。我认为您只是使用 Vagrant 来配置虚拟机而不是创建映像,那么您应该考虑改用 Terraform。
推荐阅读
- web-services - 如何从 SOAP 响应中删除特定的 xmlns:ns
- nix - 如何在家庭管理器中使用覆盖从不稳定安装 jbake
- javascript - vue 选择组件 - 设置默认道具?
- javascript - Kendo UI Grid - 动态添加/删除过滤器
- vba - 使用 vba 单击 HTML jscript 上的按钮
- java - 在Java中将文件移动到同名文件夹
- mongoose - 如何在连接到 mLab 的 GraphQL 中为“更新”数据编写 Mutation
- python - 斐波那契直接计算公式
- javascript - 如何以角度将数组推送到 JSON 对象
- javascript - 如何为自己的 Web 服务创建客户端 AngularJS SDK?