为什么不赢得shell-local download stage3?

时间:2015-10-27 22:23:13

标签: gentoo packer

我正在处理位于here的模板。在条款部分我有:

"provisioners": [
  {
    "type": "shell-local",
    "command": "wget http://distfiles.gentoo.org/releases/amd64/autobuilds/{{user `stage3-date`}}/stage3-amd64-{{user `stage3-date`}}.tar.bz2"
  },
  {
    "type": "file",
    "source": "stage3-amd64-{{user `stage3-date`}}.tar.bz2",
    "destination": "/root"
  },
  {
    "destination": "/root",
    "source": "scripts/",
    "type": "file"
  },
  {
    "environment_vars": [
      "STAGE3={{user `stage3-date`}}"
    ],
    "type": "shell",
    "inline": ["cd /root", "chmod u+x provision.sh", "./provision.sh"]
  }
]

我的目标是在需要时下载stage3,执行md5检查,然后将其移动到vm上的/ root,但这不会发生。 (对于那些不熟悉gentoo的人来说,这是需要解压缩到chrooted hd的实际安装文件)。这是输出。

john@g1 gentoo-packer $ packer build -debug gentoo64.json 
Debug mode enabled. Builds will not be parallelized.
virtualbox-iso output will be in this color.

1 error(s) occurred:

* Bad source 'stage3-amd64-20150924.tar.bz2': stat stage3-amd64-20150924.tar.bz2: no such file or directory

看起来打包器正试图运行"文件"供应商之前" shell-local"。由于打包器不按供应商数组的顺序排列,有没有办法在配置程序运行时强制执行订单?

注1:

我非常确定文件配置程序中的line 58导致了我的所有问题。在打包程序启动时检查文件,而不是在配置程序运行时检查。由于文件尚未下载,但它失败了。

1 个答案:

答案 0 :(得分:1)

这不是一个答案,更具潜力的指导

来自doc它说

  

对于每个定义,Packer将为每个定义运行配置程序   已配置的版本。供应商将在订单中运行   它们在模板中定义。

你确定该文件可用吗?你可以单独尝试shell-local provisioner并确保文件下载

您还可以尝试在wget上使用-P选项强制文件的目标,以确保它保存在有效目录中,然后在那里重新阅读。