我正试图在我的封隔器构建的Vagrant中export PATH=$PATH:$GOPATH/bin 去,所以当我vagrant ssh进入这个盒子时,我可以调用里面的任何二进制文件。
environment_vars = ["GOPATH=$HOME/go"]允许go安装软件包,但它不会停留在盒中。我已经尝试过export GOPATH=$HOME/go和export PATH=$PATH:$GOPATH/bin在scripts/dependencies.sh中,但这是行不通的。
有人知道如何将env变量存储到封隔器构建的Vagrant中吗?
build {
name = "test-vagrant"
description = "Testing VM"
sources = [
"source.vagrant.alpine"
]
provisioner "shell" {
environment_vars = ["GOPATH=$HOME/go"]
scripts = [
"scripts/dependencies.sh",
////
]
execute_command = "echo 'vagrant' | sudo -S -E sh -c '{{ .Vars }} {{ .Path }}'"
}
}
#!/bin/sh
set -eu
apk update && \
apk add \
////
go \
unzip
go install github.com/OJ/gobuster/v3@latest发布于 2022-06-30 22:25:24
我不知道如何通过Packer的shell导出变量,但我有一个解决方案。
https://www.packer.io/docs/provisioners/file
provisioner "file" {
source = "upload/go.sh"
destination = "/tmp/go.sh"
}
provisioner "shell" {
inline = [
"sudo mv /tmp/go.sh /etc/profile.d/"]
}还有一点需要注意的是,这在一开始是不起作用的(而且Packer没有抛出任何信息/错误),这是因为.vagrant.d/boxes中的“文件夹”.vagrant.d/boxes,我删除了它,修复了上传和其他一些问题。
所以我找到了另一个解决办法,哈哈。
https://stackoverflow.com/questions/72663920
复制相似问题