
【AWS】terraform のおべんきょーログ
terraform はじめました
お仕事ではAWSインフラ屋さんをやってるわけですが、実はいまだにWebコンソールで作成することが多いです🤤
調査対応とかするときはCLIも使ったりしますが、どうにも効率がよろしくないなぁと...
そこで去年末くらいから、terraformでおしゃれに構築できないかなといろいろ作ってきました!
せっかくなんでどんな風に学習していったのかをログとして残します
TL;DR
・基本コマンド(init / plan / apply)が理解できればおk
・使い捨てのリソースならドキュメント読めばだいたいいける
・CloudFormationとか既存環境からの切り替えは茨の道
What's is terraform?
まずはお決まりの
terraform とは
ってぐぐるところから始めました
すでに興味をもっていたので、概要は押さえてましたがそれでもググりました
自分はここで「バージョンごとに破壊的変更が多い」って知ってびびりました😱
※いまもバージョンどれで動かすか悩んでます…
コンテナで実行環境構築
この「破壊的変更」にびびっていろんなバージョン動かせるようにコンテナで実行環境作りました
コンテナはいいですね、作るのも潰すのも簡単ですから!
※なお、このときはtfenvを知りませんでした
手を動かしてみる
qiitaとかで入門系の記事をみたり実際に手を動かしてみました
いきなり0からリソースは作れないのでハンズオン的に記事をなぞって、以下の超基本を理解する
terraform init
terraform plan
terraform apply
ここらへんでリソースがぬるぬる起動するのを見てて、楽しくなってしまってドハマりしましたねぇ🥰
自分の作りたいリソースを0から作る
さー基本がわかったということで、自分の作りたいリソースを作っていくわけです
ここでネットで検索しちゃうとあとあと地雷を埋めることになります
そう、バージョン差分ですね....
めんどくさくとも公式のドキュメントをみましょう(英語怖くないよ!
実際、サンプルって意味では公式にもかいてある
引数の指定方法がわからないときに、そこだけググりましょ!
ちょっと慣れてくると...
いろいろ試してみたくなります
自分の環境はCloudFormationとか手動で作ったリソースもあるんで、インポートできたらはっぴーよねって手をつけてみました
🤷♂️🤷♂️🤷♂️ここから本当の地獄だ状態🤷♂️🤷♂️🤷♂️
インポート自体はできるけれど、リソース名gdgdだしリネームはtfstate壊れるしで…
ある程度いけたか!?って思っても完全にterraformに切り替えできたわけでないから今後と野良リソース増えることに気づいてしまい\(^o^)/
terraformerというツールを使えるようになったことだけが収穫でした
あとはterraformer導入でterraform本体のバージョン管理いるやんってなって、ここでtfenvに出会いました
コンテナで環境構築なんていらなかったんや!!!
これからのこと!
今はチームにリリースできるようにプレ運用したり、ドキュメント整備中です
もうある程度は諦めて新規に環境つくるときだけでも効率化できることを目指しましたー
きっとリリースしたらしたでいろいろあると思うで、それはまたいつか!!!🙋♂️
学習ログ用に
github pagesで調べたことを展開しようと思ってます
noteは感想とかそーゆーことを書いて、gitにはアウトプットを残す、そんなかたちでやってけたらといいなぁ