LoginSignup
0
0

More than 1 year has passed since last update.

terraform 再入門②

Last updated at Posted at 2022-06-23

▼ 目的

使いそうなCLIを書いておきます


CLI

コマンド群

  • terraform state list : tfstateファイルを参照してリソースを見る
  • terraform state show {<リソース種別>.<リソース名> }:指定したリソース種別のリソース情報を表示する
    • eg1: data.aws_ami.app
    • eg2: aws_instance.app_server
  • terraform state mv <リネーム前リソース名> <リネーム後リソース名> : tfstateファイルのリソース名を変更する
    • 要点: リソース差分なしにするためにはtfstateファイルの変更及びコードの変更の2つが必要
    • 注意点1: どちらか片方のみの場合、削除&新規作成となるため、必ず両方修正すること
    • eg1: terraform state mv aws_instance.app_server aws_instance.application_server
  • terraform import <terraformリソース名> <AWSリソースID> : 管理対象外リソースをtfstateファイルに取り込む
    • eg. aws_instance.testserver i-00070c7173168c015 (既存EC2をtestesrverの名前でtfstateファイルに取り込む)
    • 要点: 取り込んだあとにコード側にも追加しないと差分として扱われる
  • terraform state rm <tfstateのリソース名> : tfstateファイルから対象のリソースを消す
    • 要点: tfstateファイルから管理対象から外したいリソースを消すコマンド
    • 注意点1: コードからも削除しないと新規作成になる
    • 注意点2: あくまでtfstateファイルの操作のため、AWS上のリソースは残る。
  • terraform refresh : リソースの情報をtfstateファイルに反映させる
    • 要点: 手でEC2等の設定を変更した際にtfstateファイルに取り込む
    • 注意点1: コードも追従しないと差分として検出される

Meta引数

詳しくは こちらの記事を参照

  • depends_on
  • count (指定回数ループさせられる)
    • for_eachと同時に使えない
    • idnexを使うことで数値を扱える(「user_1」,「user_2」の様に出来る)
  • for_each(map,setを使ってループできる。listは使えない)
    • リストを使いたい場合は、toset()を使って変換が必要

lifecycle引数

resourceブロックの中に定義できる。CfnでいうDeletation_policyを登録するのと同じイメージ

  • create_before_destroy : リソースを削除する前に作成する(EC2等で使いそう?)
  • prevent_destory : 削除防止(RDSなど削除してほしくないものに設定)
  • ignore_changes : 指定した属性に変更があったとしても無視する
    • 用途: コード上将来使うが今は仮置きしたい属性等を定義したい時

リソースの依存関係の見方

  • コードをDOT形式に変換、Graphvizで見れる
    • terraform graph > <file name>.dot
    • <filename>をSVGのためviewer(Graphviz)で見る
    • VScodeの場合はコマンドパレットからGraphvizを使う

3項演算子

terraformにはif文は存在しないため、分岐をさせたい場合はこれらを駆使する。
例えば、prod/dev等の環境毎に異なる部分で使う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0