スピーカ: chataroさん
- GitHub: https://github.com/chataro0/terra_workshop
- GitPitch: https://gitpitch.com/chataro0/terra_workshop#/
Terraformについて説明
AWS IAMの準備
シンプルなEC2インスタンスを作ってみる Hello World的なもの(step1)
terraform init
- 準備
- 初期化ではなく初期構築、何回やってもOK
terraform plan
- 確認
- いわゆるdry-run
- インスタンスIDなど動かさないとわからないものはcomputedと出る
- 差分が見れる
- ちなみにAnsibleでは--diffオプションで差分が見れる
terraform apply
- 実行
- 昔はyes/no聞いてくれなかったらしい
- terraform.tfstateは状態管理に使われるので触っちゃだめ!
- terraform.tfstate.backupはひと世代前の状態
terraform destroy
- 削除
- 複数のリソースをつくっていてもまとめて消せてしまう、色んな意味で強力
変数部分を分けて書く, ほしい情報を出力させる(step02)
- terraform.tfvars
- このファイル名のほか、特定の接尾辞(?)のファイルは読んでくれる
terraform.tfvars
か*.auto.tfvars
にマッチするファイルを読む- 読み込みの順序はアルファベット順→オーバーライドファイル(*override.tfなど)
- Load Order and Semantics
- Overrides
- とはいえ、リソースタイプ毎にnameは一意じゃないといけないので、上書きは起こりにくいような?
- オプションで渡したり、環境変数で渡したりもできる
-var-file="filename"
- このファイル名のほか、特定の接尾辞(?)のファイルは読んでくれる
- output.tf
terraform apply
のときの出力を制御できる- AWS CLIの
--query
みたいなもの
terraform plan
では衝突は教えてくれない
AMI IDとか書かない方法(step03)
- イメージの絞り込み方
packerとの連携(step04)
- いわゆるゴールデンイメージパターン
moduleを使ってみる(step05)
- Terraform Module Registryなるものがある
- DockerHub的なもの
- Ansible Galaxy的なもの
- backend.tf
- ステートを別の場所(S3)に置くことができる
まとめ/Questions
- .gitignoreすべきもの
terraform import
で既存の状態を吸い出せる- tfstateを削除して再実行すると新規作成扱い=別にリソースが作られてしまうので注意