我在我的打包器模板json上配置了文件配置器:
"provisioners": [{
"type": "file",
"source": "packer/api-clients/database.yml",
"destination": "/tmp/api-clients-database.yml"
},
当我尝试在Amazon AWS上构建AMI时,下面的代码不起作用,它始终说:
Bad source 'packer/api-clients/database.yml': stat packer/api-clients/database.yml: no such file or directory
如果我这样做:
"source": "api-clients/database.yml",
它就像一个魅力。但是为了组织起见,我必须将我的所有Packer文件放在app文件夹中的packer文件夹中。
我做错了什么?
我的app文件夹是这样的:
api_v1
├── template.json
├── app
│ ├── bin
│ ├── config
│ ├── packer
│ │ ├── api-clients
│ │ │ └── database.yml
│ ├── lib
│ ├── log
│ ├── ...
它似乎与Packer上的相对路径/绝对路径有关,但我无法弄清楚出了什么问题......
提前致谢,
答案 0 :(得分:1)
由于路径不以/
开头,因此它是相对路径。执行packer build
时相对于当前工作目录。
使用来源packer/api-clients/database.yml
,您必须从app
目录运行打包程序,即
packer build ../template.json
使用来源api-clients/database.yml
,您必须从packer
目录运行打包程序,即
packer build ../../template.json
答案 1 :(得分:0)
这就像您猜到的一样。
如果您已经移动了api-clients,则不会说从哪个文件夹中调用打包程序以及调用命令是什么,或者何时使用“ source”:api-clients / database.yml。文件夹,或与该位置的打包程序一起使用。
如果您的文件夹结构总是这样,那么为避免混淆(如果您对源使用完整路径),无论您从何处运行压缩程序,它都将始终有效
例如 /api_v1/app/packer/api-clients/database.yml
如果必须使用相对路径,请确保源路径始终与运行打包程序的文件夹相对。