Packer(Terraform学習備忘録 #5)
今回はPackerについて勉強していきます。
Packerとは
Packerは、ソースの設定からマシンイメージを作成するHashiCorpのツールです。Packerのイメージには、使用用途に応じたオペレーティングシステムやソフトウェアを設定することができます。
Terraform設定では、Packerイメージを使用することで、手動で設定することなくインスタンスをプロビジョニングすることができます。Packerはマシンイメージの作成を自動化することで、効率的な開発を可能にします。
Packerの使用方法
packerを使う場合はまずはpackerで使用する設定ファイルを用意します。設定ファイルの中では、マシンイメージ作成に必要なプラグインを記述します。
## packer.pkr.hcl
packer {
required_plugins {
amazon = {
source = "github.com/hashicorp/amazon"
version = "~> 1"
}
}
}
その後、packer init
コマンドでプラグインをインストールします。
$ packer init packer.pkr.hcl
最後にインストールしたプラグインを用いてビルドします。
$ packer build -machine-readable packer-example.json
## packer-example.json
{
"variables": {
"aws_access_key": "",
"aws_secret_key": ""
},
"builders": [{
"type": "amazon-ebs",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"region": "ap-northeast-1",
"source_ami": "ami-0019e93cc76f0a409",
"instance_type": "t2.micro",
"ssh_username": "ubuntu",
"ami_name": "packer-example {{timestamp}}"
}],
"provisioners": [{
"type": "shell",
"scripts": [ "scripts/install_software.sh" ],
"execute_command": "{{ .Vars }} sudo -E sh '{{ .Path }}'",
"pause_before": "10s"
}]
}
注意点としては、ビルドする際に参照するAMIのソースは公開されたAMIでなければいけません。また、作成されるEBS自体にお金はかかりませんが、EBSスナップショットには料金が発生するので、不要になったスナップショットは削除する方が良いです。
以上です。