前提
terraformで作業をしていると、workspaceを切り替えることを忘れ、production環境にapplyをしてしまうようなミスが考えられます。
プロンプトにworkspaceを表示することにより、ヒヤリハットを防ぐことが重要です。
一般的にterraformのworkspaceを表示するコマンドは次の通りです。
$ terraform workspace show
プロンプト設定
上記のコマンドをスクリプトに落とし込むスクリプトを掲載しているリポジトリを見つけました。
github.com
このリポジトリでは次のようなプロンプト設定をしていました。
#!/usr/bin/env bash function terraform_prompt() { if [ -d .terraform ]; then workspace="$(command terraform workspace show 2>/dev/null)" echo " (${workspace})" fi } export PS1='\u@\h \[\033[38;5;135m\]\w\[\e[38;5;99m\]\[\e[1m\]$(terraform_prompt)\e[0m\$ '
command
というコマンドは、仮にterraform
コマンドがaliasで置き換えられていても問題なく動作するような意図だと考えられます。
また、標準エラー出力を捨てることでterraform環境下ではない場所でもエラーを吐かずに空振り実行できるようになっているようです。
oh-my-posh設定
私が使っているプロンプト環境でもあるoh-my-poshの設定は下記の通りに設定するようです。
{ "type": "terraform", "style": "powerline", "powerline_symbol": "", "foreground": "#000000", "background": "#ebcc34", "template": "{{.WorkspaceName}}" }
表示用のスクリプトは下記のようになっています。
github.com
この部分でworkspaceを取得しているようです。
tf.WorkspaceName, _ = tf.env.RunCommand(cmd, "workspace", "show")