🎄Misoca、アドベントカレンダーやるってよ

先週に引き続きMisoca開発の黒曜です。

ほたるちゃん のCDデビューが決まったので、来年春が楽しみです。

🗓アドベントカレンダー

昨年に続き、今年もアドベントカレンダーをやってます。

f:id:kokuyouwind:20181213125401p:plain

今年は弥生株式会社ALTOAとの合同開催になってます。このブログでは見慣れないアイコンがいっぱいありますね。
カレンダーを立てたのは自分ですが、余ったところに入ろうと思っていたらあっという間に全部埋まっていました。

そんなわけで自分は不参加です。
ただ各人珠玉の非業務ネタで攻めていて開発ブログには誰も書いてなかったので、宣伝がてらこの記事を書いています。
もう半分終わってしまっていますが、まだ半分も残ってるということで…

どの記事も素晴らしいので、ぜひご一読ください。
個人的おすすめは、めっちゃバズって500はてブを超えたマルチカーソルを使わないVSCodeはただのVSCodeだ!です。

小ネタ: Terraformの結果をデスクトップ通知する

宣伝だけだと寂しいのでちょっとした小ネタを。

MisocaではTerraformを使ってAWSの設定をコード化して管理しています。

ただ terraform planterraform apply は地味に時間がかかり、ぼーっと待つには長いのですが他の作業をやると結果確認を忘れてしまったりします。

🖥terminal-notifier

そこでterminal-notifierを使って、planやapplyが完了したらデスクトップ通知を送るようにしました。

ついでにterraform-landscapeを使ってplanの結果を整形し見やすくしています。

結果、以下のようなエイリアスでわりと使い勝手良く利用できています。

alias tplan='terraform plan | bundle exec landscape | tee /tmp/plan.log; cat /tmp/plan.log | grep -E "^Plan|^No" | xargs -I{} terminal-notifier -title "Terraform Plan Finished" -message "{}" '
alias tapply='terraform apply -auto-approve | tee /tmp/apply.log; cat /tmp/apply.log | grep "^Apply" | xargs -I{} terminal-notifier -title "Terraform Apply Finished" -message "{}"'

ザ・ワンライナーですね。
なおこのスクリプトではlandscapeをbundler経由で入れている前提になっていますが、brewで入れているなら bundle exec は不要です。

実行例

実際にtplanして、変更がないとこんな感じの通知が来ます。

f:id:kokuyouwind:20181213132256p:plain

一方で変更があるとこんな感じ。

f:id:kokuyouwind:20181213132320p:plain

コンソールのほうを見ると、以下のように差分が確認できます。
今回はThorタスクを実行するRunCommand用SSM Documentの更新で、選択できるタスク名が増えたdiffになっています。*1

CLANNAD:kokuyou% tplan
~ module.ssm_documents.aws_ssm_document.RunThorTask
    content:   "type": "String",
                        "allowedValues": [
                          "list",
               +          "test:example"
                        ]
                      },
                      "executionTimeout": {
                        "type": "String",
                        "default": "3600",

Plan: 0 to add, 1 to change, 0 to destroy.

問題なさそうなのでtapplyすると以下のような通知が来ます。*2
[0m が残念感ありますが、まぁ実用上問題はないでしょう。

f:id:kokuyouwind:20181213132734p:plain

こうしてterraformの実行中はちょっとした他作業をしつつ、コマンドが完了したら即結果を確認、そのまま後続作業に取り掛かれるようになりました。

terminal-notifierは工夫次第で色々使えそうなので、ぜひお試しください。

📢宣伝

Misocaではアドベントカレンダーの記事を書きたい、もしくは参加しそびれて腹いせにワンライナーを書きたいエンジニアを募集しています。

www.wantedly.com

*1:タスク名は適当なものに変えてます

*2:通知が来たタイミングをスクショしそこねたので通知ログの画像を使ってます。このためtplanのと見た目が違いますが、ホントは同じように通知されています