hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

Terraform歴4時間くらいのメモ

今週の初めくらいからちょっとずつTerraformを触っていて、といっても1日30分とか1時間くらいで手探り状態だけど、今のところの理解のメモ。

  • AWS CDKとなにがちがうか
    • CDKはCloudFormationのYAMLを生成するためのもので、TypeScript, Pythonに対応していて、TypeScriptならTypeScriptの補完が使える
    • TerraformはHCL(HashiCorp Configuration Language)という言語であって、補完はHCL用に開発されたものが動く
      • VSCode拡張が乱立していて、HashiCorp製の拡張はインストール数は多く評価は低い、という謎な状況
    • AWS CDKはAWSだけど、Terraformは汎用的なものなので、GitHubのorgの管理とかもできる
  • CloudFormationとの違い
    • 既存のプログラミング言語のなかで自由に書けるわけではない、という点はCloudFormationのほうが近い
      • Terraformのループの書き方はちょっととっつきにくさを感じる(慣れてないだけだと思う)
  • stateファイル
    • CloudFormationでは状態の管理や差分検出をAWS側でやってくれているけど、Terraformの適用先はAWSに限らないので状態をファイルに書き込んで管理している
      • 毎回APIを取りに行って差分を見るのは非効率なので、Terraformで管理するなら、一度取得した状態を保持しておいても困ることはない
      • CloudFormationにはドリフトの検出機能があった。Terraformではrefreshしてplanを見る
      • Detecting and Managing Drift with Terraform
    • applyしなければ安全というわけではなくて、importするとstateにリソースが追加される。手元で試しているだけでもstateファイルに書き込んでしまうと他人の環境に影響が出る
      • stateがどこにあるか注意すること
      • 一時的に手元でimportを交えた練習なんかをしたいときに、backend s3をbackend localに書き換えて試していてちょっと格好悪い。なんかいい方法ないのかな…
    • lockを取って作業することができる
      • CloudFormationのスタックも、いまUPDATE_IN_PROGRESSで止まってるね、とかみんなで観測したりしていたので、それがS3に置かれる1ファイルになったと考えるとそんなに違和感ない

今見返すとどこを見ればよさそうかわかるものでも、本当に前提知識がないときには、どこが自分と関係あるか判別しにくい。
公式サイトにはintroがあったりtutorialがあったりして、どこから見ていけばいいかわからないな、となったので本を読んでみたら、AWSにあれこれ構築するとか、モジュールを作るとか、環境の管理とか、ステートファイル間のリソースの移動とか教えてもらえてよかった。

追記

ブコメで教えていただいた、ありがとうございます

Terraformのlanguage server公式のlanguage serverが後発なので云々 詳しくは https://github.com/hashicorp/terraform-ls#terraform-ls-vs-terraform-lsp

https://b.hatena.ne.jp/michael26/20201019#bookmark-4692956382982889602

追記(2)

Spaceliftの方からメールが来て、このチュートリアルが読者にも役立つと思うよ!とのことだったので貼っておきます。
spacelift.io

SpaceliftはTerraformを実行してくれるCIサービスみたいなもののようです。
我々も手元からはplan, applyしてないので、こういうCI/CDツールがあると便利そう。

Discord気に入ってきた

仕事中にリモートメンバーとペアプロや相談などするのに、これまではカレンダーで会をセットして招待したメンバーとペアで活動する、を主体としていたけど、最近はDiscordの音声通話部屋で活動するのが好きになってきた。
漠然と繋いで、偶然に合わせた人にちょっと話しかけたり、チャットに現れた新情報に対して感想を述べたり、どういう方針が良いと思うとか、自由に発話したりできて便利。失われていたオフィスでの立ち話したり、隣の人のメンバーと漠然と話したり、がようやく手に入った。
これまでは、電話に対する苦手意識から、顔が見えてたほうが良いかと思ってたけど、顔を見るよりは話題が書かれた同じ画面や共同編集できるドキュメントを見たほうが有用。
あとは、メタファーとして場があるのが便利で、今どこに居るという地理的なイメージが生まれる。今日は一日の大半を「ポップコーン売り場」という部屋で過ごしていた。

Discordの変なところは他人をドラッグして他の部屋に移動させられることで、質問があったら連れてきて質問したりできる。デザインのモックをもとに実装していて、ここどうなってるんだっけ、というときに2秒後くらいに呼びつけることができる。乱暴かつ便利な機能。
勝手に移動させられたりするので、そういう事が起きてもびっくりしないオープンな精神状態のときに使うべきで、いまのところ集中して作業したいときにはDiscordから離れて一人で作業している。

モブプロ的な世界観に近づいていくと、自分のパソコンというものはなくなって皆の共通のIDEで暮らすと聞いた。
一人で落ち着ける場がなくなっていって常に誰かと行動をともにできてきているので、次は全員のエディタやその設定を統一していきたい。ペアプロ中に「git pu」が実行されたとして、そのエイリアスは何ですか?って質問するのは前時代的で、全員が同じコマンドを打つほうがモブプロ的世界観に近づけていると思う。
開発環境もオンラインに置いて誰でもつなげるような形になると良いと思っていて、共通の書きかけのコードが置いてある開発環境に人々が訪れてちょっと仕事をして去っていく、みたいになると、私のPull RequestじゃなくてみんなのPull Requestという雰囲気になってよさそう。

他チームのメンバーと偶然すれちがう、みたいなのはあまりできてなくて、チーム内のPopcorn売り場は盛り上げていこうと活動しているけど、チームを出ると誰がどこでどういうことをしているかわからなくなる。
1人だけぽつんといる部屋に用もなく突入したら1on1になってしまうので入りにくく、2人いる部屋は相談していそうだし、3人以上のところに突入していくとミーティングの邪魔かな、と思ってしまう。
いつでも突入できて、ダラダラできる部屋であることが分かっている事が重要で、そのためには、日頃から「この部屋でダラダラしています!」とか宣言していくことが大事なのかなと思う。

23時に寝て10時に起きたので11時間くらい寝ていた。
起きた瞬間トラブル対応が始まって頭が冴えていた。
昼はチョコパンと、妻が最近再び在宅勤務になっていて、サンドイッチを買ってきてくれたので食べた。
チョコパンを食べる頻度が人生で一番上がっている。一度購入すると定期購入になるのを忘れてチョコパンがどんどん届いた結果、こんなにチョコパン食べんでいいよって定期購入をストップしてしまったけど、あったら何も考えずに食べられるので、続けても良かったかもしれない。

30分のミーティングを連続させるとまったく休憩時間がなくなる問題がある。25分とかで打ち切ればよいのかもしれない。タルトは23時くらいに食べたらめちゃうまかった。昼はサイゼリヤに行ってみて500円ランチを食べて、通りすがりにふらっと買ったタルトはランチ代より高級だった。

ほったらかし度とうまみの一番バランスの良い料理がローストビーフで、塩をふってオーブンに入れると1時間くらいで完成する。一晩冷蔵庫に置いといて翌日食べる。

いきなりアニメの最終話を見るのは、物語を理解することを放棄して、推測だけで鑑賞する、なんとなく感動的な風景は見たい、など、インド映画を字幕無しで観るときの体験に近い。
問題としては、最終話を連続して再生するUIが存在しないことがある。