はじめに
久々にMacにインストールしているterraformをアップデートしたら、zshのタブ補完が効かなくなってしまいました。
原因、経緯、対策を調べたので、超スーパーメモとして残します。
前提
- macOS
- zsh
- terraformはhomebrewでインストールしています
- terraform 0.11.1 -> 0.11.7 にバージョンアップしました
原因
- terraform 0.11.6から、zshの補完関数群が消されていました
Remove old completion file for zsh by ryosan-470 · Pull Request #17527 · hashicorp/terraform · GitHub
- brewのFormulaからも補完関数をインストールするくだりが消された
terraform 0.11.6 by commitay · Pull Request #26224 · Homebrew/homebrew-core · GitHub
背景
- 少し前からタブ補完をコマンド自体に組み込んでしまおうという方針になっているようです
CLI autocomplete by apparentlymart · Pull Request #16176 · hashicorp/terraform · GitHub
対策
- 以下のコマンドを実行すると、補完に必要となる設定を~/.zshrcおよび~/.bashrcに追記してくれます
command.
terraform -install-autocomplete
~/.zshrcに追記される内容
autoload -U +X bashcompinit && bashcompinit
complete -o nospace -C /usr/local/Cellar/terraform/0.11.7/bin/terraform terraform
ref.) Commands - Terraform by HashiCorp
- が、見ての通りコマンド実体を参照しており、今後もhomebrew運用を続けるのであれば以下のようにシンボリックリンクのほうに書き換えたほうがよさそうです
complete -o nospace -C /usr/local/bin/terraform terraform
おわりに
CIでもterraformを使っているのでなかなかバージョンアップしないのですが、相変わらずマイナーバージョンアップでもけっこう変わりますね。
個人的には元のほうがよかったのと、実装を見る限り各コマンド(applyとかplanとか)ごとに補完処理を書いていくようで、なかなか大変そうだなと思いました。
ただ、マルチクラウド構成管理ツールの雄であるterraformだけに、実行環境の環境差異も極力吸収したいということなのかもしれませんね。
Tao of HashiCorp万歳🙌 ということでこちらからは以上です。