こんにちは。
simplineのmiddleでございます。
Trick or Treat 🙂
★今回のお題
CloudFormationのテンプレート調達
その1 背景〜CloudFormationとは
その2 初心者がテンプレートを書いてみます①
その3 初心者がテンプレートを書いてみます② ←本日はこちら
その4 おまけ「Outputsでクロススタック参照」編
★テンプレートを作る
ここからは実際に私がやった方法です。
まず、サンプルのテンプレートの中から、作りたいリソースに似ているっぽいものを探します。
■参考:
Amazon サンプルテンプレート – AWS CloudFormation
サンプルはjson形式なので、これをyamlに変換します。
ここでいきなりデザイナーの出番なのですが、サンプルを貼り付けて「yaml」を選択すると、変換してくれます!
▲デフォルトがJSONになっているので、貼り付け後YAMLをクリックします。
続いて、変換できたテンプレートを、実際に作りたいリソースに合わせていじっていきます。
ここが肝なわけですが、これが意外と(?)どうにかなるというか、わかります。
例えばこれはEC2のテンプレートの一部なのですが……。
AWSTemplateFormatVersion: 2010-09-09
Resources:
EC2Instance1:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-xxx # AMIのID
InstanceType: t2.micro # インスタンスタイプ
SubnetId: subnet-xxx # サブネットのID
InstanceInitiatedShutdownBehavior: stop
Tenancy: default
# PrivateIpAddress: # プライベートIPアドレス指定したい時
# UserData:
BlockDeviceMappings:
– DeviceName: /dev/xvda
Ebs:
VolumeSize: 40
VolumeType: gp2
Tags:
– Key: Name
Value: xxx
SecurityGroupIds: [!ImportValue “xxx-SG1Id”]
結構わかりやすいのではないでしょうか?
例えば、赤字にした「InstanceType」部分だったら、インスタンスタイプを指定すればよいわけです。
そのままですね。
そして「わかりやすいだろうからyamlがいい」というご意見をいただいておりましたが、確かにわかりやすいです。
コメント書けるのよいですね!
ある程度いじれるようになったら、次はサンプルにないプロパティや、別のリソースを追加してみます。
私が超よく見ているのがこちらです。↓
■参考:
AWS リソースプロパティタイプのリファレンス – AWS CloudFormation
そしてまたデザイナーの出番なのですが、このデザイナーを「プレビュー機能」として利用しています。
いじったテンプレートを貼り付けることで、思っている通りのリソースができるかを確認します。
また、プレビューは記述がおかしいとちゃんと表示されないので、構文チェックとしてもそこそこ利用できます。
雑なまとめになりますが、あとはもうトライアンドエラーでなんとかします……。
CloudFormationは利用料金がかからないのでよいですね。
そのうちサンプルに頼らなくても、そこそこ書けるように(なったつもりに)なれます!!!
★モチベーションアップのために
テンプレートが書けたなと思ったら、実際にスタック作成をするのがよいです!
▲S3に置いたテンプレートを選択する方式をとっております。
上手くいくと大変モチベーションが上がります。
▲上がりすぎて作りすぎたの図
ちなみに失敗した時ロールバックするのも、無事(?)確認できました。
というわけで、急にテンプレートを書くことになった方は、よろしければ何かの参考にしてください。
以上です。
よろしくお願いいたします。