Virtualbox 打包机&x27;木偶供应摊位

Virtualbox 打包机&x27;木偶供应摊位,virtualbox,puppet,packer,Virtualbox,Puppet,Packer,我对整个包装工/流浪汉、木偶世界都很陌生。我正在尝试使用Packer和Puppet构建我的第一个VM 我可以成功地构建一个virtualbox,并且我已经包含了一个shell脚本供应器来安装puppet。我已经用ssh连接到虚拟机中,以验证它是否工作以及是否安装了puppet 然后我添加了一个额外的傀儡无主供应器,看起来就像这样: # java dependency package { 'openjdk-7-jdk' : ensure => present } 当我运行packe

我对整个包装工/流浪汉、木偶世界都很陌生。我正在尝试使用Packer和Puppet构建我的第一个VM

我可以成功地构建一个virtualbox,并且我已经包含了一个shell脚本供应器来安装puppet。我已经用ssh连接到虚拟机中,以验证它是否工作以及是否安装了puppet

然后我添加了一个额外的傀儡无主供应器,看起来就像这样:

# java dependency
package { 'openjdk-7-jdk' :
    ensure => present
}
当我运行packer时,它会到达这一点并卡住:

==> 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

任何建议都会有帮助。甚至在如何调试它以查看幕后发生了什么时,我也遇到了同样的问题,并更改了execute_命令以接收流浪用户的密码

"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}}"
            }
        }
    }

来源:在这里找到一个示例

您可以尝试的一件事是在Puppet上启用
--debug
标志。我不熟悉Packer,但您似乎必须使用的
execute\u命令
可选参数。另一个建议是注释掉
资源,以便Puppet将使用空清单执行。如果有效,您可以取消对资源的注释,并尝试从VM内部运行
puppet apply
——我将从Packer的输出中复制并粘贴命令。这可能会给你一些线索,好主意。我试试看。我想用puppet的精神来使用它,所以我会试着调试它。如果sudo没有配置为允许覆盖env#u重置选项,那么sudo上的-E选项也可能会让你绊倒。凯恩,你能找到解决方案吗?我也看到了同样的问题。即使清单文件为空,它也会暂停。运行
应用程序
。。。VM中的命令工作正常,并返回退出代码0。