スピーカ: chataroさん

Terraformについて説明

AWS IAMの準備

シンプルなEC2インスタンスを作ってみる Hello World的なもの(step1)

  1. terraform init
    • 準備
    • 初期化ではなく初期構築、何回やってもOK
  2. terraform plan
    • 確認
    • いわゆるdry-run
      • インスタンスIDなど動かさないとわからないものはcomputedと出る
    • 差分が見れる
      • ちなみにAnsibleでは--diffオプションで差分が見れる
  3. terraform apply
    • 実行
    • 昔はyes/no聞いてくれなかったらしい
    • terraform.tfstateは状態管理に使われるので触っちゃだめ!
    • terraform.tfstate.backupはひと世代前の状態
  4. terraform destroy
    • 削除
    • 複数のリソースをつくっていてもまとめて消せてしまう、色んな意味で強力

変数部分を分けて書く, ほしい情報を出力させる(step02)

  1. terraform.tfvars
    • このファイル名のほか、特定の接尾辞(?)のファイルは読んでくれる
      • terraform.tfvars*.auto.tfvarsにマッチするファイルを読む
      • 読み込みの順序はアルファベット順→オーバーライドファイル(*override.tfなど)
    • オプションで渡したり、環境変数で渡したりもできる
      • -var-file="filename"
  2. 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を削除して再実行すると新規作成扱い=別にリソースが作られてしまうので注意