Packer 文件配置器不复制

问题描述 投票:0回答:3

我在打包模板 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 文件放在应用程序文件夹中的 Packer 文件夹中。

我做错了什么?

我的应用程序文件夹是这样的:

api_v1
├── template.json
├── app
│   ├── bin
│   ├── config
│   ├── packer
│   │   ├── api-clients
│   │   │   └── database.yml
│   ├── lib
│   ├── log
│   ├── ... 

它似乎与 Packer 上的相对路径/绝对路径有关,但我无法弄清楚出了什么问题......

提前致谢,

amazon-web-services build devops provisioning packer
3个回答
1
投票

由于路径不是以

/
开头,因此它是相对路径。执行时相对于当前工作目录
packer build

使用源

packer/api-clients/database.yml
,您必须从
app
目录运行打包程序,即

packer build ../template.json

使用源

api-clients/database.yml
,您必须从
packer
目录运行打包程序,即

packer build ../../template.json

有关更多信息,请参阅 Packer 文档 - 文件配置器:源


0
投票

正如你所猜测的那样,这是一条路径。

如果您移动了 api-clients 文件夹或它与该位置的打包机一起使用。

如果您的文件夹结构始终是这样,那么为了避免混淆,如果您使用源的完整路径,无论您从哪里运行打包程序,它都将始终有效

例如 /api_v1/app/packer/api-clients/database.yml

如果必须使用相对路径,请确保源路径始终与运行打包程序的文件夹相对。


-1
投票
"provisioners": [
    {
      "type": "file",
      "source": "<source_path>",
      "destination": "<target_path>",
      "pause_before": "30s"
    }]
    
© www.soinside.com 2019 - 2024. All rights reserved.