2017-12-07 11 views
2

アプリケーションを実行するためのカスタムプラットフォームを構築しています。私たちはデフォルトのVPCを削除しているので、ドキュメントによれば、VPCとサブネットIDはほとんどどこでも指定する必要があります。だから私はEBPのために実行コマンドは次のようになります。デフォルトのVPCを使用しないEBカスタムプラットフォーム

ebp create -v --vpc.id vpc-xxxxxxx --vpc.subnets subnet-xxxxxx --vpc.publicip{code} 

を上記パッカーは、インスタンスを構築するために開始したときしかし、いかなる問題なくpcakcer環境をスピンアップし、私は次のエラーを取得しています:

2017-12-07 18:07:05 UTC+0100 ERROR [Instance: i-00f376be9fc2fea34] Command failed on instance. Return code: 1 Output: 'packer build' failed, the build log has been saved to '/var/log/packer-builder/XXX1.0.19-builder.log'. Hook /opt/elasticbeanstalk/hooks/packerbuild/build.rb failed. For more detail, check /var/log/eb-activity.log using console or EB CLI. 
2017-12-07 18:06:55 UTC+0100 ERROR 'packer build' failed, the build log has been saved to '/var/log/packer-builder/XXX:1.0.19-builder.log' 
2017-12-07 18:06:55 UTC+0100 ERROR Packer failed with error: '--> HVM AMI builder: VPCIdNotSpecified: No default VPC for this user status code: 400, request id: 28d94e8c-e24d-440f-9c64-88826e042e9d'{code} 

テンプレートとplatform.yamlの両方がvpc_idとサブネットIDを指定しますが、これはpackerでは考慮されません。 platform.yaml: tomcat_platform.json

version: "1.0" 

provisioner: 
    type: packer 
    template: tomcat_platform.json 
    flavor: ubuntu1604 

metadata: 
    maintainer: <Enter your contact details here> 
    description: Ubuntu running Tomcat 
    operating_system_name: Ubuntu Server 
    operating_system_version: 16.04 LTS 
    programming_language_name: Java 
    programming_language_version: 8 
    framework_name: Tomcat 
    framework_version: 7 
    app_server_name: "none" 
    app_server_version: "none" 

option_definitions: 
    - namespace: "aws:elasticbeanstalk:container:custom:application" 
    option_name: "TOMCAT_START" 
    description: "Default application startup command" 
    default_value: "" 

option_settings: 
    - namespace: "aws:ec2:vpc" 
    option_name: "VPCId" 
    value: "vpc-xxxxxxx" 
    - namespace: "aws:ec2:vpc" 
    option_name: "Subnets" 
    value: "subnet-xxxxxxx" 
    - namespace: "aws:elb:listener:80" 
    option_name: "InstancePort" 
    value: "8080" 
    - namespace: "aws:elasticbeanstalk:application" 
    option_name: "Application Healthcheck URL" 
    value: "TCP:8080" 

{ 
    "variables": { 
    "platform_name": "{{env `AWS_EB_PLATFORM_NAME`}}", 
    "platform_version": "{{env `AWS_EB_PLATFORM_VERSION`}}", 
    "platform_arn": "{{env `AWS_EB_PLATFORM_ARN`}}" 

    }, 
    "builders": [ 
    { 
     "type": "amazon-ebs", 
     "region": "eu-west-1", 
     "source_ami": "ami-8fd760f6", 
     "instance_type": "t2.micro", 
     "ami_virtualization_type": "hvm", 
     "ssh_username": "admin", 
     "ami_name": "Tomcat running on Ubuntu Server 16.04 LTS (built on {{isotime \"20060102150405\"}})", 
     "ami_description": "Tomcat running on Ubuntu Server 16.04 LTS (built on {{isotime \"20060102150405\"}})", 
     "vpc_id": "vpc-xxxxxx", 
     "subnet_id": "subnet-xxxxxx", 
     "associate_public_ip_address": "true", 
     "tags": { 
     "eb_platform_name": "{{user `platform_name`}}", 
     "eb_platform_version": "{{user `platform_version`}}", 
     "eb_platform_arn": "{{user `platform_arn`}}" 
     } 
    } 
    ], 
    "provisioners": [ 
    { 
     "type": "file", 
     "source": "builder", 
     "destination": "/tmp/" 
    }, 
    { 
     "type": "shell", 
     "execute_command": "chmod +x {{ .Path }}; {{ .Vars }} sudo {{ .Path  }}", 
     "scripts": [ 
     "builder/builder.sh" 
     ] 
    } 
    ] 
} 

は予想通り、この作業を行う方法上の任意のアイデアを感謝しています。私はPackerとのいくつかの問題を見つけましたが、その側で解決されているように見えるので、ドキュメントではテンプレートがターゲットVPCとサブネットを指定しなければならないとしか言​​いません。

答えて

0

この例では、AWSのマニュアルが少し誤解を招くことがあります。カスタムプラットフォームを作成するには、デフォルトのVPCが必要です。私が見たことから、これは、ebp createコマンドに渡すVPCフラグが実際にプラットフォームを構築するパッカープロセスに渡されないためです。

エラーを回避するには、カスタムプラットフォーム作成に使用する新しいデフォルトVPCを作成するだけです。

関連する問題