デフォルトVPCがない環境でPackerを実行したらエラった話
デフォルトVPCがない環境でPackerを実行したらエラった話:
AWS環境でPackerを使ってゴールデンAMIを作ろうとしたら、エラったので書きます!
Packerは、事前に導入していることを前提とします。
また、今回作成するAMIは、Amazon Linux 2の最新を使います。
以下のテンプレートを作成します。
AMIの指定をamzn2-ami-hvm-*-x86_64-gp2にすることでAMIの最新を取得することができます。
クラスメソッドさんの記事を参考にさせていただきました。ありがとうございます!
次に変数用のファイルを作成します。
Packerを実行します。
デフォルトVPCがないよ!って怒られます。
そこで気付きました。
僕が構築しようとしているAWS環境にはデフォルトVPCがないことに。。Orz
てことで、デフォルトVPCを作ります!
まずはAWS CLIでデフォルトVPCがないかを念のため確認します。
デフォルトVPCは、"IsDefault": trueとなっています。
"IsDefault": falseのVPCしかない場合は、デフォルトVPCがない環境です。
デフォルトVPCを作成します。
これでデフォルトVPCが作成できました。
先ほどと同様にPackerを実行します。
無事にPackerを実行できましたね!
これでゴールデンAMIが作れますねヽ(*゚д゚)ノ
デフォルトVPCが必要であることを再認識しました。
https://stackoverflow.com/questions/47702265/eb-custom-platform-without-default-vpc-fails
https://dev.classmethod.jp/cloud/aws/packer-build-using-latest-ami/
はじめに
AWS環境でPackerを使ってゴールデンAMIを作ろうとしたら、エラったので書きます!
構成について
Packerは、事前に導入していることを前提とします。また、今回作成するAMIは、Amazon Linux 2の最新を使います。
- Cloud: AWS
- Region: ap-northeast-1
- OS: Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-0a2de1c3b415889d2
- Packer: 1.3.3
Packerテンプレートの作成
以下のテンプレートを作成します。- build.json
- variable.json
AMIの指定をamzn2-ami-hvm-*-x86_64-gp2にすることでAMIの最新を取得することができます。
クラスメソッドさんの記事を参考にさせていただきました。ありがとうございます!
build.json
{ "builders": [{ "type": "amazon-ebs", "region": "{{user `region`}}", "source_ami_filter": { "filters": { "name": "amzn2-ami-hvm-*-x86_64-gp2" }, "owners": "137112412989", "most_recent": true }, "instance_type": "{{user `instance_type`}}", "ssh_username": "{{user `ssh_username`}}", "ssh_timeout": "5m", "ami_name": "packer-base-{{timestamp}}", "tags": { "Base_AMI_ID": "{{ .SourceAMI }}", "Base_AMI_NAME": "{{ .SourceAMIName }}" } }], "provisioners": [{ "type": "shell", "inline": [ "sudo yum -y update" ] } ] }
variable.json
{ "ssh_username": "ec2-user", "region": "ap-northeast-1", "instance_type": "t3.micro", }
Packerを実行
Packerを実行します。$ packer build -var-file=variable.json build.json amazon-ebs output will be in this color. ==> amazon-ebs: Prevalidating AMI Name: amazon-linux-2-1547348873 amazon-ebs: Found Image ID: ami-0bab560bf1ee352f5 ==> amazon-ebs: Creating temporary keypair: packer_5c3aab89-2cad-f38c-0897-5c584e3becc3 ==> amazon-ebs: Creating temporary security group for this instance: packer_5c3aab8a-5624-8b3d-e0d5-fff48d8f95d7 ==> amazon-ebs: VPCIdNotSpecified: No default VPC for this user ==> amazon-ebs: status code: 400, request id: 1ca719b6-0dac-46ea-87e6-9e820aa8c9e8 ==> amazon-ebs: Deleting temporary keypair... Build 'amazon-ebs' errored: VPCIdNotSpecified: No default VPC for this user status code: 400, request id: 1ca719b6-0dac-46ea-87e6-9e820aa8c9e8 ==> Some builds didn't complete successfully and had errors: --> amazon-ebs: VPCIdNotSpecified: No default VPC for this user status code: 400, request id: 1ca719b6-0dac-46ea-87e6-9e820aa8c9e8 ==> Builds finished but no artifacts were created.
そこで気付きました。
僕が構築しようとしているAWS環境にはデフォルトVPCがないことに。。Orz
デフォルトVPCを作成
てことで、デフォルトVPCを作ります!まずはAWS CLIでデフォルトVPCがないかを念のため確認します。
デフォルトVPCは、"IsDefault": trueとなっています。
"IsDefault": falseのVPCしかない場合は、デフォルトVPCがない環境です。
$ aws ec2 --region ap-northeast-1 describe-vpcs
$ aws ec2 --region ap-northeast-1 create-default-vpc { "Vpc": { "VpcId": "vpc-0b114178f9b840174", "InstanceTenancy": "default", "Tags": [], "CidrBlockAssociationSet": [ { "AssociationId": "vpc-cidr-assoc-094b6605782c9f792", "CidrBlock": "172.31.0.0/16", "CidrBlockState": { "State": "associated" } } ], "Ipv6CidrBlockAssociationSet": [], "State": "pending", "DhcpOptionsId": "dopt-4ab7cf2d", "CidrBlock": "172.31.0.0/16", "IsDefault": true } }
仕切り直してPackerを実行
先ほどと同様にPackerを実行します。$ packer build -var-file=variable.json build.json amazon-ebs output will be in this color. ==> amazon-ebs: Prevalidating AMI Name: packer-base-1547352953 amazon-ebs: Found Image ID: ami-0bab560bf1ee352f5 ==> amazon-ebs: Creating temporary keypair: packer_5c3abb79-df65-ec32-be99-a6e76d702c18 ==> amazon-ebs: Creating temporary security group for this instance: packer_5c3abb7a-d5fa-19d3-f909-c4900131028a ==> amazon-ebs: Authorizing access to port 22 from 0.0.0.0/0 in the temporary security group... ==> amazon-ebs: Launching a source AWS instance... ==> amazon-ebs: Adding tags to source instance amazon-ebs: Adding tag: "Name": "Packer Builder" amazon-ebs: Instance ID: i-01ecec9982f2afc55 ==> amazon-ebs: Waiting for instance (i-01ecec9982f2afc55) to become ready... ==> amazon-ebs: Using ssh communicator to connect: 3.112.38.162 ==> amazon-ebs: Waiting for SSH to become available... ==> amazon-ebs: Connected to SSH! ==> amazon-ebs: Provisioning with shell script: /tmp/packer-shell353154586 amazon-ebs: Loaded plugins: extras_suggestions, langpacks, priorities, update-motd amazon-ebs: Resolving Dependencies amazon-ebs: --> Running transaction check amazon-ebs: ---> Package amazon-ssm-agent.x86_64 0:2.3.274.0-1.amzn2 will be updated amazon-ebs: ---> Package amazon-ssm-agent.x86_64 0:2.3.372.0-1.amzn2 will be an update amazon-ebs: --> Finished Dependency Resolution amazon-ebs: amazon-ebs: Dependencies Resolved amazon-ebs: amazon-ebs: ================================================================================ amazon-ebs: Package Arch Version Repository Size amazon-ebs: ================================================================================ amazon-ebs: Updating: amazon-ebs: amazon-ssm-agent x86_64 2.3.372.0-1.amzn2 amzn2-core 15 M amazon-ebs: amazon-ebs: Transaction Summary amazon-ebs: ================================================================================ amazon-ebs: Upgrade 1 Package amazon-ebs: amazon-ebs: Total download size: 15 M amazon-ebs: Downloading packages: amazon-ebs: Delta RPMs disabled because /usr/bin/applydeltarpm not installed. amazon-ebs: Running transaction check amazon-ebs: Running transaction test amazon-ebs: Transaction test succeeded amazon-ebs: Running transaction amazon-ebs: Updating : amazon-ssm-agent-2.3.372.0-1.amzn2.x86_64 1/2 amazon-ebs: Cleanup : amazon-ssm-agent-2.3.274.0-1.amzn2.x86_64 2/2 amazon-ebs: Verifying : amazon-ssm-agent-2.3.372.0-1.amzn2.x86_64 1/2 amazon-ebs: Verifying : amazon-ssm-agent-2.3.274.0-1.amzn2.x86_64 2/2 amazon-ebs: amazon-ebs: Updated: amazon-ebs: amazon-ssm-agent.x86_64 0:2.3.372.0-1.amzn2 amazon-ebs: amazon-ebs: Complete! ==> amazon-ebs: Stopping the source instance... amazon-ebs: Stopping instance, attempt 1 ==> amazon-ebs: Waiting for the instance to stop... ==> amazon-ebs: Creating unencrypted AMI packer-base-1547352953 from instance i-01ecec9982f2afc55 amazon-ebs: AMI: ami-067336a1eb42391d0 ==> amazon-ebs: Waiting for AMI to become ready... ==> amazon-ebs: Adding tags to AMI (ami-067336a1eb42391d0)... ==> amazon-ebs: Tagging snapshot: snap-0789dacf1298d6a75 ==> amazon-ebs: Creating AMI tags amazon-ebs: Adding tag: "Base_AMI_NAME": "amzn2-ami-hvm-2.0.20190110-x86_64-gp2" amazon-ebs: Adding tag: "Base_AMI_ID": "ami-0bab560bf1ee352f5" ==> amazon-ebs: Creating snapshot tags ==> amazon-ebs: Terminating the source AWS instance... ==> amazon-ebs: Cleaning up any extra volumes... ==> amazon-ebs: No volumes to clean up, skipping ==> amazon-ebs: Deleting temporary security group... ==> amazon-ebs: Deleting temporary keypair... Build 'amazon-ebs' finished. ==> Builds finished. The artifacts of successful builds are: --> amazon-ebs: AMIs were created: ap-northeast-1: ami-067336a1eb42391d0
これでゴールデンAMIが作れますねヽ(*゚д゚)ノ
まとめ
デフォルトVPCが必要であることを再認識しました。
参考サイト
https://stackoverflow.com/questions/47702265/eb-custom-platform-without-default-vpc-failshttps://dev.classmethod.jp/cloud/aws/packer-build-using-latest-ami/
コメント
コメントを投稿