shell - 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,我将不胜感激
解决方案
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
转换为整数。
推荐阅读
- excel - 删除一行中的第一个字符*仅当它是一个数字时(Google 表格/Excel)
- node.js - 启动 npm 时出错:web 应用程序的根目录中不存在 node_modules
- linux - 使用 shell 脚本替换文件中的多行文本
- java - Spring Data JPA Query:根据来自另一张表的真/假值总量预填充/更新一个表
- python - 期望 str 在添加零时发现浮点错误
- linq - 是否支持实体框架 Linq 语句(带有子查询)?
- testng - 在 TestNG 框架的情况下,Report Portal 如何截取失败的测试用例?
- apache-spark - Kubernetes 上的 Spark-submit,即使在 spark 作业完成后,executor pod 仍在运行。由于这些资源不能免费用于新工作
- c - C 错误:此处不允许函数定义,我已经将函数放在 int main(void) 之上,删除了括号,错误仍然存在
- reactjs - React useReducer 中的问题