【问题标题】:Parallel builds using identical json file使用相同的 json 文件并行构建
【发布时间】:2017-04-21 19:25:48
【问题描述】:

我有一个包含 java 和 tomcat (ami-c1f3e7a6) 的基础 AMI。我的应用程序堆栈包含 6 个基于我的基本 AMI 的独立 Java 应用程序,我正在使用打包程序创建 6 个独立的 AMI。 ansible playbook app_playbook.yml将war文件从S3直接下载到tomcat/webapps目录。我的打包器 JSON 是:

{
    "variables": {
        "war_file": ""
    },
    "builders": [{
        "type": "amazon-ebs",
        "region": "eu-west-1",
        "source_ami": "ami-c1f3e7a6",
        "instance_type": "t2.small",
        "ssh_username": "ec2-user",
        "ami_name": "app-{{user `war_file`}}-{{timestamp}}"
    }],
    "provisioners": [{
        "type": "ansible",
        "playbook_file": "ansible/app_playbook.yml",
        "extra_arguments": "--extra-vars 'war_file={{user `war_file`}}'"
    }]
}

在我正在做的命令行:

packer build -var 'war_file=release123/application_1.war' tomcat.json
packer build -var 'war_file=release123/application_2.war' tomcat.json
packer build -var 'war_file=release123/application_3.war' tomcat.json
packer build -var 'war_file=release123/application_4.war' tomcat.json
packer build -var 'war_file=release123/application_5.war' tomcat.json
packer build -var 'war_file=release123/application_6.war' tomcat.json

我一直在研究打包程序执行并行构建以加快构建过程的能力,但看起来配置器是针对每个构建器运行的,我需要将特定变量传递给每个构建器。

我知道我可以分叉 bash 命令来并行执行构建,但我觉得必须有一种“打包器”方式来执行此操作。有什么想法吗?

【问题讨论】:

    标签: packer


    【解决方案1】:

    Packer 不支持多次运行同一个构建器。如果您想这样做,您需要为您的amazon-ebs 构建器复制构建器部分,并使用only 复制供应器部分。

    这最好通过使用一些脚本预处理一个 sn-p 来创建最终模板。

    【讨论】:

    • 您有可以进行预处理的脚本示例吗?
    猜你喜欢
    • 1970-01-01
    • 2015-10-03
    • 2017-11-27
    • 1970-01-01
    • 2013-04-09
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多