4

我对整个 Packer/Vagrant、Puppet 世界都很陌生。我正在尝试使用 Packer 和 Puppet 构建我的第一个 VM。

我可以成功构建一个 virtualbox,并且我已经包含了一个 shell 脚本配置器来安装 puppet。我已经 ssh'ed 到 VM 以验证它是否工作并且 puppet 已安装。

然后我添加了一个额外的 puppet-masterless Provisioner,看起来就像这样:

# java dependency
package { 'openjdk-7-jdk' :
    ensure => present
}

当我运行打包程序时,它会到达这一点并卡住:

==> virtualbox-iso: Provisioning with Puppet...
virtualbox-iso: Creating Puppet staging directory...
virtualbox-iso: Uploading manifests...
virtualbox-iso: Running Puppet:   sudo -E puppet apply --verbose --modulepath='' --detailed-exitcodes /tmp/packer-puppet-masterless/manifests/ubuntu.pp

任何的意见都将会有帮助。甚至关于如何调试它以查看幕后发生的事情

4

1 回答 1

3

我遇到了同样的问题,并更改了 execute_command 以接收 vagrant 用户的密码。

"override": {
    "virtualbox-iso": {
    "execute_command": "echo 'vagrant' | {{.FacterVars}}{{if .Sudo}} sudo -S -E {{end}}puppet apply  --verbose --modulepath='{{.ModulePath}}' {{if ne .HieraConfigPath \"\"}}--hiera_config='{{.HieraConfigPath}}' {{end}} {{if ne .ManifestDir \"\"}}--manifestdir='{{.ManifestDir}}' {{end}} --detailed-exitcodes {{.ManifestFile}}"
     }
 }

整个街区看起来像这样

{
        "type": "puppet-masterless",
        "manifest_file": "../puppet/manifests/base.pp",
        "module_paths": [
            "../puppet/modules/"
        ],
        "override": {
            "virtualbox-iso": {
                "execute_command": "echo 'vagrant' | {{.FacterVars}}{{if .Sudo}} sudo -S -E {{end}}puppet apply  --verbose --modulepath='{{.ModulePath}}' {{if ne .HieraConfigPath \"\"}}--hiera_config='{{.HieraConfigPath}}' {{end}} {{if ne .ManifestDir \"\"}}--manifestdir='{{.ManifestDir}}' {{end}} --detailed-exitcodes {{.ManifestFile}}"
            }
        }
    }

来源:在这里找到一个例子https://github.com/AdoptOpenJDK/openjdk-virtual-images/blob/master/packer/openjdk-development/openjdk-development.json

于 2014-06-13T16:59:37.737 回答