Packer
はハッシコープ(HashiCorp)が開発したオープンソースのツールであり、一貫性のある環境をプロビジョニングするために使用されます。Packer
は、さまざまなクラウドプロバイダーや仮想化プラットフォーム用に仮想マシンイメージを作成する能力があります。
以下に、Packer
を用いてApacheをプリインストールしたUbuntuイメージを作成する一例を示します。
### PackerのJSONテンプレート作成
1. まず、以下の内容をapache_install.json
という名前で保存します。
{ "builders": [ { "type": "amazon-ebs", "region": "ap-northeast-1", "source_ami_filter": { "filters": { "virtualization-type": "hvm", "name": "ami-xxxx", "root-device-type": "ebs" }, "owners": ["099720109477"], "most_recent": true }, "instance_type": "t2.micro", "ssh_username": "ubuntu", "ami_name": "packer-example {{timestamp}}", "vpc_id": "your-vpc-id", "security_group_id": "your-security-group-id", "ssh_keypair_name": "your-existing-aws-keypair-name", "ssh_private_key_file": "~/.ssh/your-private-key.pem" } ], "provisioners": [ { "type": "shell", "inline": [ "sudo apt-get update", "sudo apt-get install -y apache2" ] } ] }
この例では、Amazon EC2用のイメージを作成していますが、他のプラットフォームも同様に指定することができます。
2. PackerとAWS CLIがインストールされていない場合は、それぞれインストールしてください。
3. AWSのクレデンシャルが設定されていない場合、aws configure
を実行して設定します。
4. ターミナルで次のコマンドを実行してイメージをビルドします。
packer build apache_install.json
この例を使えば、ApacheがプリインストールされたAmazon EC2用のAMIが作成されます。同様に、他のクラウドプロバイダーまたは仮想化プラットフォームにも適用することが可能です。ただし、各プラットフォーム用にbuilders
セクションの設定を調整する必要があります。