首页 > 解决方案 > makefile 将变量传递给 vagrantfile 并启动 vagrant VM

问题描述

我正在为项目编写自动化部署计划。我打算使用 makefile 来控制 vagrant vm 及其操作。我想把所有的用户选项配置都放在makefile里面,包括一些vagrantfile的配置参数,比如CPU、IP等等。但是如何将 makefile 参数传递给 vagrantfile?我测试使用shell

CPU_NUM ?= 3

init:
    vagrant_cpu= $(CPU_NUM ) vagrant up

但我不知道 vagrantfile 如何获得它

如果你们能告诉我如何实现参数从makefile传递到vagrantfile,我将不胜感激

标签: shellmakefilevagrantvagrantfile

解决方案


Makefile 很好,但为什么不直接使用 shell 脚本来编写通用脚本呢?但是,要真正回答您的问题:

设置环境变量的命令是错误的,=两边不能有空格。将其更改为:

init:
    vagrant_cpu=$(CPU_NUM) vagrant up

AVagrantfile只是一个 Ruby 脚本。这意味着您可以像在 Ruby 中一样使用ENV. 在你的Vagrantfile,你可以有类似的东西:

config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = ENV["vagrant_cpu"].to_i
end

注意to_i转换为整数。


推荐阅读