私は、Packer.ioを使用して基本的なAWSイメージを構築するための これら の指示に従おうとしています。しかし、それは私にとってはうまくいきません。
これが私のテンプレートファイルです:
{
"variables": {
"aws_access_key": "",
"aws_secret_key": ""
},
"builders": [{
"type": "Amazon-ebs",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"region": "us-east-1",
"source_AMI": "AMI-146e2a7c",
"instance_type": "t2.micro",
"ssh_username": "ubuntu",
"AMI_name": "packer-example {{timestamp}}",
# The following 2 lines don't appear in the tutorial.
# But I had to add them because it said this source AMI
# must be launched inside a VPC.
"vpc_id": "vpc-98765432",
"subnet_id": "subnet-12345678"
}]
}
下部に2行を追加して(VPCとサブネットの場合)、手順から逸脱する必要があることに気付くでしょう。これは、次のエラーが発生し続けたためです。
==> Amazon-ebs: Error launching source instance: The specified instance type
can only be used in a VPC. A subnet ID or network interface
ID is required to carry out the request.
(VPCResourceNotSpecified)
そのVPCとサブネットは私が手動で作成しなければならなかった一時的なものです。しかし、なぜ私はそれをしなければならないのですか?一時的なセキュリティグループとキーペアが作成されるように、packerがそれらを作成してから削除しないのはなぜですか?
さらに、これらの2行を追加した後でも、SSHタイムアウトが発生するため、AMIの作成に失敗します。どうして?このVPC内の他のインスタンスに手動でSSH接続することに問題はありません。一時パッカーインスタンスにはInstanceState=Running
、StatusChecks=2/2
および世界中からのSSHを許可するSecurityGroup。
以下のpackerコマンドのデバッグ出力を参照してください。
$ packer build -debug -var 'aws_access_key=MY_ACCESS_KEY' -var 'aws_secret_key=MY_SECRET_KEY' packer_config_basic.json
Debug mode enabled. Builds will not be parallelized.
Amazon-ebs output will be in this color.
==> Amazon-ebs: Inspecting the source AMI...
==> Amazon-ebs: Pausing after run of step 'StepSourceAMIInfo'. Press enter to continue.
==> Amazon-ebs: Creating temporary keypair: packer 99999999-8888-7777-6666-555555555555
Amazon-ebs: Saving key for debug purposes: ec2_Amazon-ebs.pem
==> Amazon-ebs: Pausing after run of step 'StepKeyPair'. Press enter to continue.
==> Amazon-ebs: Creating temporary security group for this instance...
==> Amazon-ebs: Authorizing SSH access on the temporary security group...
==> Amazon-ebs: Pausing after run of step 'StepSecurityGroup'. Press enter to continue.
==> Amazon-ebs: Launching a source AWS instance...
Amazon-ebs: Instance ID: i-12345678
==> Amazon-ebs: Waiting for instance (i-12345678) to become ready...
Amazon-ebs: Private IP: 10.0.2.204
==> Amazon-ebs: Pausing after run of step 'StepRunSourceInstance'. Press enter to continue.
==> Amazon-ebs: Waiting for SSH to become available...
==> Amazon-ebs: Timeout waiting for SSH.
==> Amazon-ebs: Pausing before cleanup of step 'StepRunSourceInstance'. Press enter to continue.
==> Amazon-ebs: Terminating the source AWS instance...
==> Amazon-ebs: Pausing before cleanup of step 'StepSecurityGroup'. Press enter to continue.
==> Amazon-ebs: Deleting temporary security group...
==> Amazon-ebs: Pausing before cleanup of step 'StepKeyPair'. Press enter to continue.
==> Amazon-ebs: Deleting temporary keypair...
==> Amazon-ebs: Pausing before cleanup of step 'StepSourceAMIInfo'. Press enter to continue.
Build 'Amazon-ebs' errored: Timeout waiting for SSH.
==> Some builds didn't complete successfully and had errors:
--> Amazon-ebs: Timeout waiting for SSH.
==> Builds finished but no artifacts were created.
t2.micro
インスタンスタイプを使用しています。これはVPC環境でのみ実行できます( T2インスタンス を参照)。
[〜#〜] vpc [〜#〜]にいるため、デフォルトではすべてのトラフィックがファイアウォールの背後にあるため、次のことを行う必要があります。 セキュリティグループを設定して、IPがそのインスタンスのSSHポートにアクセスできるようにします。
より簡単な方法は、m3.medium
インスタンスタイプを使用することです。少し高価ですが、すべてがより高速に実行され、VPC /セキュリティグループをセットアップする必要はありません。 -)まったく。
1)internetgateway(アクティブ、ブラックホールではない)がデフォルトのvpcに接続されていることを確認します。ここで、インスタンスを起動します。2)ルートテーブルも確認します。internetgateway(現在、古いものではありません)へのルートが存在します。