gpt4 book ai didi

ruby - 如何在我的 VagrantFile 中包含变量?

转载 作者:数据小太阳 更新时间:2023-10-29 06:27:32 25 4
gpt4 key购买 nike

谁能指导我如何在我的 VagrantFile 中包含变量?我正在尝试从外部文件将配置注入(inject) Vagrantfile,这样我就可以将配置分发给我的同事,而无需他们直接在 Vagrantfile 上对配置进行硬编码。

我原以为因为它是基于 Ruby 的,所以我可以只包含一个 Ruby 文件,但我得到了一个错误消息:未初始化的常量 MyVars

简化了我的 VagrantFile

# -*- mode: ruby -*-
# vi: set ft=ruby :
require 'vagrant.rb'
include MyVars

Vagrant.configure("2") do |config|

# Web
config.vm.define :joe do |joe|
joe.vm.box = "precise64_4.2.12"
joe.vm.hostname = WEBVMNAME
joe.vm.network :private_network, ip: "192.168.140.141"

# Port Forwarding
joe.vm.network :forwarded_port, guest: 22, host: 2201
joe.vm.network :forwarded_port, guest: 80, host: 8080

# Bootstrap Bash Script
joe.vm.provision :shell, :path => "bootstrap.sh"
end

end

而 vagrant.rb 包含

module MyVars

WEBVMNAME = "rex"

end

请注意,我也是 Ruby 的新手,所以我也不确定它是否只是语法错误?

编辑:我正在使用的更新代码

最佳答案

我使用 https://puphpet.com 的方法,我在 Vagrantfile 的同一目录中创建了一个文件 config.yaml 并且...

在我的 Vagrantfile 中:

# encoding: utf-8
# -*- mode: ruby -*-
# vi: set ft=ruby :

require 'yaml'

current_dir = File.dirname(File.expand_path(__FILE__))
configs = YAML.load_file("#{current_dir}/config.yaml")
vagrant_config = configs['configs'][configs['configs']['use']]

Vagrant.configure('2') do |config|

config.vm.network 'public_network', ip: vagrant_config['public_ip']
...

在我的 config.yaml 中:

---
configs:
use: 'home'
office:
public_ip: '192.168.2.117'
<more variables>...
home:
public_ip: '192.168.1.117'
<more variables>...

关于ruby - 如何在我的 VagrantFile 中包含变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16708917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com