【问题标题】:Impossible provisioning vagrant with packer无法使用打包程序配置 vagrant
【发布时间】:2016-04-14 07:00:41
【问题描述】:

我想在打包脚本中添加包(例如:apache2),以创建一个包含已安装 apache2 服务器的 Vagrant(virtualbox-iso)。

为此,我使用了正确运行的示例项目(但没有我的包 apache2):Packer project for Vagrant Ubuntu

我只是在 base.sh 脚本中添加了 2 个命令

  • DEBIAN_FRONTEND=noninteractive
  • apt-get -y install apache2

构建打包程序运行正确,Vagrant 也正确运行,但是当使用 ssh 进入 vagrant 时,我始终找不到 apache2 安装

但是构建日志告诉我 apache2 包安装正确。 为此,团队打包员不想帮助我,因为她认为这是一个 Vagrant 问题,而不是打包员

日志

    2016/01/09 17:43:07 ui:     virtualbox-iso: The following extra packages will be installed:
2016/01/09 17:43:07 ui:     virtualbox-iso: apache2-bin apache2-data libapr1 libaprutil1 libaprutil1-dbd-sqlite3
2016/01/09 17:43:07 ui:     virtualbox-iso: libaprutil1-ldap ssl-cert
2016/01/09 17:43:07 ui:     virtualbox-iso: Suggested packages:
2016/01/09 17:43:07 ui:     virtualbox-iso: www-browser apache2-doc apache2-suexec-pristine apache2-suexec-custom
2016/01/09 17:43:07 ui:     virtualbox-iso: apache2-utils openssl-blacklist
2016/01/09 17:43:07 ui:     virtualbox-iso: The following NEW packages will be installed:
2016/01/09 17:43:07 ui:     virtualbox-iso: apache2 apache2-bin apache2-data libapr1 libaprutil1 libaprutil1-dbd-sqlite3
2016/01/09 17:43:07 ui:     virtualbox-iso: libaprutil1-ldap ssl-cert
2016/01/09 17:43:07 ui:     virtualbox-iso: 0 upgraded, 8 newly installed, 0 to remove and 69 not upgraded.
2016/01/09 17:43:07 ui:     virtualbox-iso: Need to get 1,285 kB of archives.
2016/01/09 17:43:07 ui:     virtualbox-iso: After this operation, 5,348 kB of additional disk space will be used.
2016/01/09 17:43:07 ui:     virtualbox-iso: Get:1 http://us.archive.ubuntu.com/ubuntu/ trusty/main libapr1 amd64 1.5.0-1 [85.1 kB]
2016/01/09 17:43:07 ui:     virtualbox-iso: Get:2 http://us.archive.ubuntu.com/ubuntu/ trusty/main libaprutil1 amd64 1.5.3-1 [76.4 kB]
2016/01/09 17:43:07 ui:     virtualbox-iso: Get:3 http://us.archive.ubuntu.com/ubuntu/ trusty/main libaprutil1-dbd-sqlite3 amd64 1.5.3-1 [10.5 kB]
2016/01/09 17:43:07 ui:     virtualbox-iso: Get:4 http://us.archive.ubuntu.com/ubuntu/ trusty/main libaprutil1-ldap amd64 1.5.3-1 [8,634 B]
2016/01/09 17:43:07 ui:     virtualbox-iso: Get:5 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main apache2-bin amd64 2.4.7-1ubuntu4.8 [840 kB]
2016/01/09 17:43:08 ui:     virtualbox-iso: Get:6 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main apache2-data all 2.4.7-1ubuntu4.8 [160 kB]
2016/01/09 17:43:08 ui:     virtualbox-iso: Get:7 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main apache2 amd64 2.4.7-1ubuntu4.8 [87.6 kB]
2016/01/09 17:43:08 ui:     virtualbox-iso: Get:8 http://us.archive.ubuntu.com/ubuntu/ trusty/main ssl-cert all 1.0.33 [16.6 kB]
2016/01/09 17:43:08 ui:     virtualbox-iso: Preconfiguring packages ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Fetched 1,285 kB in 1s (859 kB/s)
2016/01/09 17:43:08 ui:     virtualbox-iso: Selecting previously unselected package libapr1:amd64.
2016/01/09 17:43:08 ui:     virtualbox-iso: (Reading database ... 61917 files and directories currently installed.)
2016/01/09 17:43:08 ui:     virtualbox-iso: Preparing to unpack .../libapr1_1.5.0-1_amd64.deb ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Unpacking libapr1:amd64 (1.5.0-1) ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Selecting previously unselected package libaprutil1:amd64.
2016/01/09 17:43:08 ui:     virtualbox-iso: Preparing to unpack .../libaprutil1_1.5.3-1_amd64.deb ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Unpacking libaprutil1:amd64 (1.5.3-1) ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Selecting previously unselected package libaprutil1-dbd-sqlite3:amd64.
2016/01/09 17:43:08 ui:     virtualbox-iso: Preparing to unpack .../libaprutil1-dbd-sqlite3_1.5.3-1_amd64.deb ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Unpacking libaprutil1-dbd-sqlite3:amd64 (1.5.3-1) ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Selecting previously unselected package libaprutil1-ldap:amd64.
2016/01/09 17:43:08 ui:     virtualbox-iso: Preparing to unpack .../libaprutil1-ldap_1.5.3-1_amd64.deb ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Unpacking libaprutil1-ldap:amd64 (1.5.3-1) ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Selecting previously unselected package apache2-bin.
2016/01/09 17:43:08 ui:     virtualbox-iso: Preparing to unpack .../apache2-bin_2.4.7-1ubuntu4.8_amd64.deb ...
2016/01/09 17:43:08 ui:     virtualbox-iso: Unpacking apache2-bin (2.4.7-1ubuntu4.8) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Selecting previously unselected package apache2-data.
2016/01/09 17:43:09 ui:     virtualbox-iso: Preparing to unpack .../apache2-data_2.4.7-1ubuntu4.8_all.deb ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Unpacking apache2-data (2.4.7-1ubuntu4.8) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Selecting previously unselected package apache2.
2016/01/09 17:43:09 ui:     virtualbox-iso: Preparing to unpack .../apache2_2.4.7-1ubuntu4.8_amd64.deb ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Unpacking apache2 (2.4.7-1ubuntu4.8) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Selecting previously unselected package ssl-cert.
2016/01/09 17:43:09 ui:     virtualbox-iso: Preparing to unpack .../ssl-cert_1.0.33_all.deb ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Unpacking ssl-cert (1.0.33) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Processing triggers for ureadahead (0.100.0-16) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: ureadahead will be reprofiled on next reboot
2016/01/09 17:43:09 ui:     virtualbox-iso: Processing triggers for ufw (0.34~rc-0ubuntu2) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Setting up libapr1:amd64 (1.5.0-1) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Setting up libaprutil1:amd64 (1.5.3-1) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Setting up libaprutil1-dbd-sqlite3:amd64 (1.5.3-1) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Setting up libaprutil1-ldap:amd64 (1.5.3-1) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Setting up apache2-bin (2.4.7-1ubuntu4.8) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Setting up apache2-data (2.4.7-1ubuntu4.8) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Setting up apache2 (2.4.7-1ubuntu4.8) ...
2016/01/09 17:43:09 ui:     virtualbox-iso: Enabling module mpm_event.
2016/01/09 17:43:09 ui:     virtualbox-iso: Enabling module authz_core.
2016/01/09 17:43:09 ui:     virtualbox-iso: Enabling module authz_host.
2016/01/09 17:43:09 ui:     virtualbox-iso: Enabling module authn_core.
2016/01/09 17:43:09 ui:     virtualbox-iso: Enabling module auth_basic.
2016/01/09 17:43:09 ui:     virtualbox-iso: Enabling module access_compat.
2016/01/09 17:43:09 ui:     virtualbox-iso: Enabling module authn_file.
2016/01/09 17:43:09 ui:     virtualbox-iso: Enabling module authz_user.
2016/01/09 17:43:09 ui:     virtualbox-iso: Enabling module alias.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling module dir.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling module autoindex.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling module env.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling module mime.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling module negotiation.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling module setenvif.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling module filter.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling module deflate.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling module status.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling conf charset.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling conf localized-error-pages.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling conf other-vhosts-access-log.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling conf security.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling conf serve-cgi-bin.
2016/01/09 17:43:10 ui:     virtualbox-iso: Enabling site 000-default.
2016/01/09 17:43:10 ui:     virtualbox-iso: * Starting web server apache2
2016/01/09 17:43:11 ui:     virtualbox-iso: *
2016/01/09 17:43:11 ui:     virtualbox-iso: Setting up ssl-cert (1.0.33) ...
2016/01/09 17:43:11 ui:     virtualbox-iso: Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
2016/01/09 17:43:11 ui:     virtualbox-iso: Processing triggers for ureadahead (0.100.0-16) ...
2016/01/09 17:43:11 ui:     virtualbox-iso: Processing triggers for ufw (0.34~rc-0ubuntu2) ...
2016/01/09 17:43:12 ui:     virtualbox-iso: [sudo] password for vagrant: Generating grub configuration file ...
2016/01/09 17:43:12 ui:     virtualbox-iso: Found linux image: /boot/vmlinuz-3.19.0-25-generic
2016/01/09 17:43:12 ui:     virtualbox-iso: Found initrd image: /boot/initrd.img-3.19.0-25-generic
2016/01/09 17:43:13 packer-builder-virtualbox-iso.exe: 2016/01/09 17:43:13 remote command exited with '0': echo 'vagrant'|sudo -S sh '/tmp/script_7943.sh'
2016/01/09 17:43:13 packer-builder-virtualbox-iso.exe: 2016/01/09 17:43:13 [INFO] RPC endpoint: Communicator ended with: 0
2016/01/09 17:43:13 [INFO] RPC client: Communicator ended with: 0
2016/01/09 17:43:13 [INFO] RPC endpoint: Communicator ended with: 0
2016/01/09 17:43:13 [INFO] 12338 bytes written for 'stdout'
2016/01/09 17:43:13 [INFO] 179 bytes written for 'stderr'
2016/01/09 17:43:13 ui:     virtualbox-iso: done

Vagrant 的什么进程会导致这种奇怪的行为? (缓存系统,virtualbox缓存....)

我试试

  • 删除项目的.builds目录
  • 删除 virtualbox 中的镜像 vm
  • 删除项目中的 packer_cache 目录
  • 创建自己的脚本并添加到模板中
  • 从头开始一个新的打包器项目,结果相同

这似乎是一个非常非常奇怪的问题,不仅涉及脚本,还涉及 vagrant 和 virtualbox 运行的机制。

为什么我的 vagrant 中找不到我安装的包?

配置

  • 操作系统主机:windows 7 pro
  • 操作系统访客:Ubuntu 14.04 LTS
  • 虚拟机技术:VirtualBox 5.0.10
  • VM 技术:Vagrant 1.7.4
  • VM 工具生成器:Packer 0.8.6

【问题讨论】:

  • 您在编辑base.sh之前是否使用原始Packer运行构建的盒子创建了Vagrant VM?
  • 没有用于构建 Vagrant 的原始打包程序。为此使用了一个打包器项目。
  • 抱歉,我没有关注您的回复。您说示例项目运行正确。示例项目包含一个 Packer 构建,然后是 vagrant up 使用该构建中的框。在构建示例框文件后,您是否运行了vagrant up?还是您编辑了base.sh,再次运行Packer,然后第一次运行vagrant up
  • 我编辑 base.sh 以添加 apache2 并运行打包器,该打包器可以正确运行和构建包的其余部分。问题是使用 apache 构建日志打包器,而在 vagrant 中没有 apache2。我在 builds 目录项目中将 Vagrantfile 与 packer 生成的框一起使用。
  • 好的,所以要完全清楚...您第一次运行 Vagrant 是在您编辑 base.sh 并运行 Packer 之后?这是一个非常重要的细节。

标签: vagrant virtualbox


【解决方案1】:

以下是我们知道的关键细节。我们可以在您的 Packer 构建的输出中看到,Apache 显然正在安装。因此,生成的 box 文件包含 Apache 安装,并且使用它来创建 Vagrant VM 应该会导致该 VM 安装了 Apache。但是,在您的情况下,Vagrant VM 没有安装了 Apache。

使用消除过程,这就是我认为发生的事情。在运行 Vagrant 之前,您必须已经使用 Packer 的 box 文件添加了一个同名的 Vagrant 盒子。当您执行vagrant up 时,Vagrant 将查看 Vagrantfile 中的框的名称(在本例中为 config.vm.box),检查它是否已经有一个该名称的框,如果存在则使用它。否则,Vagrant 将使用框 URL(此处为config.vm.box_url)找到新框,然后使用提供的名称添加它。

您知道 Packer 的 box 文件已安装 Apache。您只需要确保 Vagrant 导入该框,而不是使用它已有的同名框。为此,您需要在运行 Vagrant 之前将其删除...

vagrant box remove ubuntu-14.04-amd64
vagrant up

然后你的 Vagrant VM 将使用 Packer 创建的已经安装了 Apache 的盒子。

【讨论】:

    猜你喜欢
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2021-06-20
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多