tl;dr
皆さん, パカパカパッカーしてますか.
先日に引き続き, Packer で作った EC2 AMI ID を SSM Parameter Store に登録する Post Processor プラグインを作ったので自慢させて下さい.
packer-post-processor-aws-parameter-store
リポジトリ
Packer テンプレート
パカパカ Packer のテンプレートは以下のような感じになります.
{ "variables": { ... 略 ... }, "builders": [ ... 略 ... ], "provisioners": [ ... 略 ... ], "post-processors": [ [ { "type": "aws-parameter-store", "parameters": [ { "name": "/my/ami/ami1" }, { "name": "/my/ami/ami2", "ami_data_type": true }, { "name": "/my/ami/ami3", "secure_string": true } ] } ] ] }
name
はパラメータ名を指定します. name
のみを指定した場合には, String
タイプで登録されます. ami_data_type
を true
で指定した場合には, aws:ec2:image データタイプで登録されます. aws:ec2:image データタイプの有用性については, 以下の記事で紹介されていますのでご一読下さい.
また, secure_string
を true
に指定することで, SecureString
タイプで登録が可能となります.
以下は実行例です.
$ packer build sample.json amazon-ebs: output will be in this color. ==> amazon-ebs: Prevalidating any provided VPC information ==> amazon-ebs: Prevalidating AMI Name: packer-sample-1588773879 ... 略 ... ==> amazon-ebs: Connected to SSH! ==> amazon-ebs: Running local shell script: /var/folders/w_/w3rfn_250g7803h_hkk90jfw0000gn/T/packer-shell172250629 amazon-ebs: shell-local ==> amazon-ebs: Provisioning with shell script: /var/folders/w_/w3rfn_250g7803h_hkk90jfw0000gn/T/packer-shell497132425 amazon-ebs: shell ==> amazon-ebs: Stopping the source instance... amazon-ebs: Stopping instance ... 略 ... ==> amazon-ebs: Running post-processor: aws-parameter-store ==> amazon-ebs (aws-parameter-store): Register the AMI ID to Parameter Store.(Parameter Name: /my/ami/ami1, AMI ID: ami-xxxxxxxxxxxxxxxxxxx) ==> amazon-ebs (aws-parameter-store): Register the AMI ID to Parameter Store.(Parameter Name: /my/ami/ami2, AMI ID: ami-xxxxxxxxxxxxxxxxxxx) ==> amazon-ebs (aws-parameter-store): Register the AMI ID to Parameter Store.(Parameter Name: /my/ami/ami3, AMI ID: ami-xxxxxxxxxxxxxxxxxxx)
パラメータストアを確認すると, 以下のように登録されていることが確認出来ました.
$ pstore -prefix=/my/ami +--------------+-----------------------+--------------+---------------+---------+---------------------+ | NAME | VALUE | TYPE | DATATYPE | VERSION | LASTMODIFIEDDATE | +--------------+-----------------------+--------------+---------------+---------+---------------------+ | /my/ami/ami1 | ami-xxxxxxxxxxxxxxxxx | String | text | 1 | 2020-05-09 12:48:43 | | /my/ami/ami2 | ami-xxxxxxxxxxxxxxxxx | String | aws:ec2:image | 1 | 2020-05-09 12:48:44 | | /my/ami/ami3 | ****************** | SecureString | text | 1 | 2020-05-09 12:48:44 | +--------------+-----------------------+--------------+---------------+---------+---------------------+
以上
個人的な HashiCorp 祭りでした.
おまけ
Parameter Store をコマンドラインで操作する pstore というツール作っていますが, ちょっと修正したので v0.0.2 をリリースしました.