我觉得我在这里疯了。我正在尝试使用Packer从CentOS 7 ISO创建Vagrant VirtualBox图像。更具体地说,我正在运行virtualbox-iso
构建器并使用Vagrant后处理器。根据{{1}}操作的输出,我的配置工作都在工作,但是当我带着Vagrant打开盒子时,我的配置更改都没有显示出来。例如,我使用文件配置器将文件上传到/ home / vagrant目录。在我看来,这很简单。
packer build
Packer不会抛出任何错误,并且根据所有迹象,文件上传成功。以下是来自Packer跟踪的消息,指示文件已上载。
"provisioners": [
{
"type": "file",
"source": "files/file",
"destination": "/home/vagrant/file"
}
...
然而,当我在Vagrant中打开盒子并且我在SSH中时,文件不在那里。我的脚本也是如此 - Packer表示它们正在运行,我甚至使用==> virtualbox-iso: Uploading files/file => /home/vagrant/file
在shell脚本中添加了打印调试语句,以验证命令是否已成功执行,例如:
&&
我在mkdir -p /home/vagrant/folder1 && echo "Made the directory, dammit"
跟踪中看到了echo
语句,但在登录时仍然没有/ home / vagrant中的任何内容。我觉得我错过了一些明显的东西......有谁知道问题可能是什么?
编辑:这是VBox图像的模板。我也正在构建一个VMware映像,但我没有在那里包含那个。
packer build
运行"builders": [
{
"type": "virtualbox-iso",
"boot_command": [
"<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg<enter><wait>"
],
"boot_wait": "10s",
"disk_size": 81920,
"guest_os_type": "RedHat_64",
"headless": true,
"http_directory": "http",
"iso_urls": [
"CentOS-7-x86_64-Minimal-1708.iso",
"http://mirrors.ocf.berkeley.edu/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso"
],
"iso_checksum_type": "sha256",
"iso_checksum": "bba314624956961a2ea31dd460cd860a77911c1e0a56e4820a12b9c5dad363f5",
"ssh_username": "vagrant",
"ssh_password": "vagrant",
"ssh_port": 22,
"ssh_wait_timeout": "10000s",
"shutdown_command": "echo 'vagrant'|sudo -S /sbin/halt -h -p",
"guest_additions_path": "VBoxGuestAdditions_{{.Version}}.iso",
"virtualbox_version_file": ".vbox_version",
"vm_name": "packer-centos-7-x86_64",
"vboxmanage": [
[
"modifyvm",
"{{.Name}}",
"--memory",
"1024"
],
[
"modifyvm",
"{{.Name}}",
"--cpus",
"2"
]
]
},
...
后,我正在运行packer build
,这是我的Vagrantfile中定义的VM的名称:
vagrant up virtualbox
我正在使用GitHub上的以下存储库(我意识到可能有点过时了):https://github.com/geerlingguy/packer-centos-7
但是,我正在尝试根据自己的需要调整示例。
编辑2:出于故障排除的目的,我尝试删除流浪汉后处理器,只保留VMware和VBox图像,而不转换为Vagrant框。我启动了其中的每一个,我在Packer中所做的配置显示在那里。 这意味着问题会在转换为Vagrant框的过程中或之后发生,因为VMware和VBox非Vagrant图像都有所需的更改。希望这有助于缩小范围。
答案 0 :(得分:0)
https://github.com/geerlingguy/packer-centos-7
这仍然很重要,另外一个很好的“灵感”仓库是https://github.com/chef/bento
但是,听起来好像您可能没有在本地无所事事地更新盒子。 尝试重新添加无业游民的后处理器并运行打包程序。
检查新框的输出路径。然后运行以下命令:
img
然后,当您:first-child
vagrant box add --force --name {your vagrant box name} {path to your new .box file}
时,应使用新框。
或者,如果您的打包器版本使用的是无业游民的云后处理器,请确保您正在递增版本,以便无业游民的客户端可以检测到包装箱的更新版本。
答案 1 :(得分:0)
正如Flo所评论的那样-您需要明确地“删除”“无业游民”框,以便通过vagrant up
获取对该框的更改:
vagrant remove ./my_nice_vagrant_box.box