[Google Cloud]Cloud ShellのプリインストールからTerraform CLIが含まれなくなりました

[Google Cloud]Cloud ShellのプリインストールからTerraform CLIが含まれなくなりました

Google CloudのCloud Shellから2026年6月の更新でTerraform CLIがプリインストールから削除されました。実際の影響を確認しながら、Terraform CLIのインストール手順と永続化方法を紹介します。
2026.09.02

2026/6/20付けの更新で Cloud ShellのプリインストールからTerraform CLIが含まれなくなりました。

Cloud Shell no longer includes the Terraform CLI by default. Users can customize their environment to install the CLI on environment startup, or install the binary to their home directory to persist the install between sessions.

出典: Cloud Shell release notes

以前はGoogle CloudのCloud ShellのプリインストールにTerraform CLIが含まれており、Cloud Shellを開いてすぐTerraformが使えるのでハンズオン等で活用していました。

実際に手を動かして、動作への影響とTerraform CLIのインストール手順を確認してみます。

terraformを実行すると何が起きるか

Cloud ShellをRestartして新しい環境でterraformを実行してみます。

$ terraform

  Follow the instructions at https://developer.hashicorp.com/terraform/install to install terraform, or run the commands below:

  wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
  echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
  sudo apt update && sudo apt install terraform
  bash

  To persist the installation between sessions, either add the above commands to $HOME/.customize_environment, or install the terraform binary in your home directory.

command not foundではなく、インストール手順を案内するメッセージが表示されます。

このメッセージがどこから来ているのか、typewhichcatで調べてみます。

$ type terraform
terraform is hashed (/google/bin/terraform)

$ which terraform
/google/bin/terraform

$ cat "$(which terraform)"
#!/bin/bash
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)

cat $SCRIPT_DIR/terraform-install.txt

$ grep -rn "terraform" ~/.bashrc ~/.bash_profile ~/.profile /etc/bash.bashrc /etc/profile.d/*.sh 2>/dev/null
(該当なし)

.bashrcのようなシェル設定ではなく、/google/bin/terraformというスタブスクリプトによるものでした。中身は同じディレクトリのterraform-install.txtcatするだけです。terraformというコマンド名自体はPATH上に残っています。実行すると、未インストールである旨とインストール手順を表示するスタブに差し替えられている、というのが今回の変更の実態です。

対処法

まずはスタブメッセージ通りに、HashiCorp公式のapt手順をそのまま実行してみます。

参考: Install | Terraform | HashiCorp DeveloperのUbuntu/Debian向け手順

wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform
$ terraform --version
Terraform v1.16.0
on linux_amd64

これでインストールできました。ただ、この状態でCloud ShellをRestartすると、terraformは消えてスタブに戻ります。terraform --versionを実行しても、最初に見たのと同じ案内メッセージが表示されました。

$ type terraform
terraform is hashed (/google/bin/terraform)

apt install/usr配下にバイナリを置きます。/usrはセッションごとに作り直される領域であり、$HOMEの永続ディスクとは別だからです。Cloud Shell の仕組みでも、$HOME以外にインストールしたソフトウェアはインスタンス終了後に永続化されないと説明されています。

恒久的に使うには、$HOME/.customize_environmentにインストール手順を書いておく方法を使います。このファイルはCloud Shell起動時に自動実行されます。

https://docs.cloud.google.com/shell/docs/configuring-cloud-shell?hl=ja#environment_customization_script

cat <<'EOF' > $HOME/.customize_environment
#!/bin/bash
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install -y terraform
EOF
chmod +x $HOME/.customize_environment

作成後にRestartして確認したところ、terraformが使えるようになっていました。

$ terraform --version
Terraform v1.16.0
on linux_amd64

/var/log/customize_environmentにも実行ログが残っていて、0 upgraded, 1 newly installedとapt installが自動で走ったことが分かります。ログの途中にE: Could not get lock /var/lib/apt/lists/lockという行が一瞬混ざっていました。起動直後の他のapt処理との競合と思われますが、最終的にはリトライして完走していました。

バージョン管理まで見据えるなら、tenvを使う方法もあります。tenvはTerraform・OpenTofu・Terragrunt・Atmosに対応したバージョンマネージャーです。

Cloud Shellのホームディレクトリにインストールしておけば、プロジェクトごとに使うバージョンを切り替えられます。

https://dev.classmethod.jp/articles/try-tenv-terraform-version-manager/

おわりに

プリインストールされるTerraform CLIのバージョンが古いことは気になっており、以前最新版をインストールするブログを書きました。

https://dev.classmethod.jp/articles/google-cloud-terraform-cloudshell-latest/

プリインストールに含まれなくなったことは不便ですが、バージョンを選ぶきっかけにもなります。

Cloud ShellでTerraformを使う場合は、.customize_environment等の永続化の設定を忘れずに行うようにしたいですね。

この記事をシェアする

関連記事