Puppet 无法在 CentOS 7.1 上使用 Packer 进行保存

Puppet not getting saved with Packer on CentOS 7.1

我正在尝试使用 Packer 创建一个 Vagrant box,并且一切正常,直到我尝试在 Packer box 中安装 Puppet。 Packer 日志清楚地表明 Puppet 已正确安装。但是,当我在 Vagrant 和 SSH 中加载盒子时,找不到 Puppet(用 yum list | grep puppet 测试过)。当我发出 Packer 在直接在 Vagrant 盒子上创建盒子时应该执行的命令并再次 运行 我的测试命令时,Puppet 实际上被列在那里。

我已经尝试重新排列 shell 条款中脚本的顺序,但是 none 完全没有帮助。 Puppet 的命令似乎确实有效(看到我可以让它直接在 Vagrant 框中工作)。

我已经用我所有的文件创建了一个 gist。我在 CentOS 7.1 上安装它。

我要说的第一件事:

  • 确保在真正结束时进行清理(运行 cleanup.sh 在 puppet.sh 之后)
  • yum list <package> 将列出所有可用的包(和已安装的包),要知道安装了哪些包,您应该 运行 yum list installed(您的存储库或镜像可能有问题如果您的命令根本没有得到任何输出)
  • 当你从 rpm 安装时,你也可以 运行 rpm -qa | grep puppet 来查看软件包是否已经安装,你应该得到类似的东西(取决于版本)

    [vagrant@vagrant ~]$ rpm -qa | grep puppet
    puppetlabs-release-6-11.noarch
    

快速浏览一下,脚本看起来不错 - 我确实从以下脚本安装

install_puppet()
{
    echo "==> Installing Puppet"
    REDHAT_MAJOR_VERSION=$(egrep -Eo 'release ([0-9][0-9.]*)' /etc/redhat-release | cut -f2 -d' ' | cut -f1 -d.)

    echo "==> Installing Puppet Labs repositories"
    rpm -ipv "http://yum.puppetlabs.com/puppetlabs-release-el-${REDHAT_MAJOR_VERSION}.noarch.rpm"

    if [[ ${CM_VERSION:-} == 'latest' ]]; then
        echo "==> Installing latest Puppet version"
        yum -y install puppet
    else
        echo "==> Installing Puppet version ${CM_VERSION}"
        yum -y install "puppet-${CM_VERSION}"
    fi
}

所以基本上是一样的-

更新

这很奇怪,我根据你的要点创建了一个盒子,盒子没问题 - puppet 已安装。

我只是从puppet.sh

改过来的
#!/bin/sh
#rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm 
rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm 
yum -y install puppet

所以我能够安装 puppet 3.x 而不是 puppet 4.x - 我使用了一个简单配置的现有 Vagrantfile 并且一切正常

当我启动 VM 时,运行配置了 puppet 并打包安装。