template.json@Packer¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. セットアップ¶
インストール¶
▼ aptリポジトリから¶
$ curl -L https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
$ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
$ sudo apt-get update && sudo apt-get install packer
02. builders¶
buildersとは¶
作成するマシンイメージやコンテナイメージの内容を設定する。
typeがamazon-ebsの場合¶
▼ region¶
AMIを作成するリージョンを設定する。
{"builders": [{"type": "amazon-ebs", "region": "ap-northeast-1"}]}
▼ source_ami¶
AMIの基とするAMI (例:Amazon Linux 2 AMI) を設定する。
{"builders": [{"type": "amazon-ebs", "source_ami": "ami-0b7546e839d7ace12"}]}
▼ ami_name¶
AMIの名前を設定する。
{"builders": [{"type": "amazon-ebs", "ami_name": "bar-ami"}]}
▼ ami_users¶
{"builders": [{"type": "amazon-ebs", "ami_users": "<AWSアカウントID>"}]}
▼ snapshot_users¶
{"builders": [{"type": "amazon-ebs", "snapshot_users": "<AWSアカウントID>"}]}
▼ instance_type¶
{"builders": [{"type": "amazon-ebs", "instance_type": "t2.micro"}]}
▼ ssh_username¶
EC2へのSSH公開鍵認証時に使用するユーザー名を設定する。
{"builders": [{"type": "amazon-ebs", "ssh_username": "ec2-user"}]}
▼ ena_support¶
{"builders": [{"type": "amazon-ebs", "ena_support": "true"}]}
▼ encrypt_boot¶
{"builders": [{"type": "amazon-ebs", "encrypt_boot": "false"}]}
▼ force_deregister¶
同じ名前のマシンイメージが存在する場合に、既存のマシンイメージを登録解除してからこれを作成するか否か、を設定する。
Packerの作成するマシンイメージの名前は、ランダム値をつけない限り、常に同じである。
マシンイメージの名前の重複を許可しないプロバイダー (例:AWS) では、1
個の名前のマシンイメージを一回しか作成できないことになってしまう。
そういった場合に必要になる。
{"builders": [{"type": "amazon-ebs", "force_deregister": "true"}]}
▼ launch_block_device_mappings¶
EC2に紐付けるルートデバイスボリュームを設定する。
{
"builders":
[
{
"type": "amazon-ebs",
"launch_block_device_mappings":
[
{
"device_name": "/dev/xvda",
"volume_type": "gp2",
"delete_on_termination": "true",
"volume_size": "300",
},
],
},
],
}
03. provisioners¶
type¶
▼ typeとは¶
サーバー/コンテナのプロビジョナーを設定する。
ansibleの場合¶
▼ playbook_file¶
{"provisioners": [{"type": "ansible", "playbook_file": "./playbook.yml"}]}
▼ user¶
{"provisioners": [{"type": "ansible", "user": "ec2-user"}]}
shellの場合¶
▼ inline¶
{"provisioners": [{"type": "shell", "inline": ["echo Hello World"]}]}
04. variables¶
variablesとは¶
ファイル内で使用する変数を設定する。
{
"variables": {"region": "ap-northeast-1"},
"builders": [{"region": "{{ user `region` }}"}],
}