はじめに
AWS CloudShell 上で Terraform を実行した際に、terraform init
の段階で以下のようなエラーが発生しました。
Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v5.89.0...
Error: Failed to install provider
Error while installing hashicorp/aws v5.89.0: write
.terraform/providers/registry.terraform.io/hashicorp/aws/5.89.0/linux_amd64/terraform-provider-aws_v5.89.0_x5:
no space left on device
このエラーは、CloudShell のディスク容量が不足していることが原因です。CloudShell の /home/cloudshell-user
は /dev/loop0
にマウントされており、ディスクの使用率が100% になっていると、Terraform のプラグインをインストールできなくなります。
本記事では、この問題を解決する方法を紹介します。
1. ディスクの空き容量を確認
まず、現在のディスク使用状況を確認します。
df -h
また、ホームディレクトリの使用量を確認するには、以下のコマンドを実行します。
du -sh /home/cloudshell-user/*
今回の環境では、/home/cloudshell-user
にマウントされている /dev/loop0
の使用率が 100% になっていました。
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 974M 907M 0 100% /home/cloudshell-user
この状態では、新しいファイルを作成できないため、Terraform のプラグインがインストールできません。
2. 不要なファイルを削除
(1) Terraform のキャッシュを削除
Terraform のキャッシュフォルダを削除すると、ディスクの空きを確保できる場合があります。
rm -rf .terraform
rm -rf ~/.terraform.d
その後、terraform init
を再試行してください。
(2) 不要なファイルを削除
以下のコマンドで不要なファイルを削除します。
rm -rf ~/Downloads/*
rm -rf ~/.cache/*
rm -rf ~/.npm/*
rm -rf ~/.local/share/Trash/*
Terraform の zip ファイルなど、古いファイルも削除して空き容量を増やします。
rm -f ~/terraform_0.14.2_linux_amd64.zip
3. Terraform の作業ディレクトリを /tmp
に移動
CloudShell の /tmp
ディレクトリは /home/cloudshell-user
とは異なる領域であり、空き容量がある場合があります。そのため、Terraform の作業ディレクトリを /tmp
に移動して実行できます。
mv ~/terraform_project /tmp/
cd /tmp/terraform_project
terraform init
4. CloudShell をリセットする
もし /home/cloudshell-user
の容量を確保できない場合、CloudShell をリセットすると環境が初期化され、空き容量が回復することがあります。
exit
その後、CloudShell を開き直して Terraform を試してください。
5. Terraform のプラグインキャッシュを /tmp
に変更する
デフォルトでは .terraform
フォルダが /home/cloudshell-user
に作成されますが、プラグインキャッシュの保存先を /tmp
に変更することで容量不足を回避できます。
export TF_PLUGIN_CACHE_DIR="/tmp/.terraform.d/plugin-cache"
mkdir -p $TF_PLUGIN_CACHE_DIR
terraform init
6. 別の環境(ローカルマシン・EC2)で実行する
CloudShell のディスク容量には制限があるため、ローカルマシンや EC2 で Terraform を実行するのも選択肢の一つです。
- EC2 インスタンスを作成
- Terraform をインストール
- Terraform のコードを移動して実行
まとめ
No | 解決策 |
---|---|
1 | 不要ファイルを削除 (rm -rf .terraform .terraform.d ~/.cache/* ) |
2 | Terraform プロジェクトを /tmp に移動 (mv ~/terraform_project /tmp/ ) |
3 | CloudShell をリセット (exit して再接続) |
4 | Terraform のプラグインキャッシュを /tmp に変更 |
5 | 別の環境(ローカル or EC2)で Terraform を実行 |
CloudShell は便利な環境ですが、ディスク容量の制限があるため、容量不足にならないよう注意しながら作業する必要があります。
今回紹介した対策を試して、Terraform の環境をスムーズに構築してみてください!