为什么Packer配置器更改不会显示在Vagrant框中,即使它们报告成功?

时间:2017-12-29 20:26:36

标签: vagrant packer

我觉得我在这里疯了。我正在尝试使用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图像都有所需的更改。希望这有助于缩小范围。

2 个答案:

答案 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