TerraformでOCI無料枠のA1インスタンスを勝ち取ろう
Oracle Cloud Infrastructure Always Freeを使ってタダでMisskeyインスタンスを立てよう#インスタンス作成でエラーになったら……でエラーになった場合、この記事を読んでください。
(思ったよりこちらの内容が長くなってしまい、普通にインスタンスが取れる場合もあるため、記事を分離しました。)
Oracle CloudのARM A1インスタンスは、リージョンごとに無料枠に限りがあるため、あぶれてしまうとこのようなエラーになってしまいます。
こういう争奪戦のとき、あなたならどうしますか?
……そう、令和になってもまだ残っている文化、F5連打です!!!
しかしここでF5を押してもリセットされるだけです。
(なお、1OCPUなら作成を連打するだけでも取れる可能性がありますが、アクセス制限にひっかかかるのでツールを使ったほうが無難です。)
TerraformでOCIのA1インスタンス無料枠争奪戦を戦う を参考に、バッチファイルでTerraformを数分おきに実行してなんとかインスタンスを取得してみましょう。
先ほど画面の作成の隣の [スタックとして保存] を選択します。
画面が切り替わったら、何もせず、左下の[次]を選択。その次も[次]を選択。
[Run Apply]を選択し、[作成]を選択。
このような画面になります。
ちょっと待つと…
残念、Out of host capacityと言われ、失敗してしまいました。 運よく成功した場合は、次の作業に移りましょう!
Terraform構成のダウンロードを選択します。
ダウンロードしたzipにmain.tfがあるか確認します。
ここで、デスクトップやユーザーディレクトリにterraform用の作業用フォルダを新しく作成します。
そして、作業用フォルダにmain.tfをコピーします。main.tfをメモ帳などで開いておいてください。
ブラウザに戻って一番右上のユーザーメニューを開き、[ユーザー設定]を選択します。
左下のリソースからAPIキーを選択、さらに[APIキーの追加]を選択。
[秘密キーのダウンロード]で秘密キーをダウンロードします。後で使いたいので、作業用フォルダに移動させてフルパスを控えておいてください。確認したら[追加]を選択。
構成ファイルのプレビューが表示されます。
ここで、main.tfの編集をします。main.tfの先頭は次のようになっていますが…
provider oci {}
次のように置き換えてください。
provider "oci" {
user_ocid = "ocid1.user.oc1..aaaaaaaa..."
fingerprint = "bf:ff:92:......"
tenancy_ocid = "ocid1.tenancy.oc1..aaaaaaaa..."
private_key_path = "C:\\Users\\....pem"
region = "ap-osaka-1"
}
値は仮のものですので、次の表のようにコピー・入力してください。
構成ファイルのプレビューの名前 | |
---|---|
user_ocid | user |
fingerprint | fingerprint |
tenancy_ocid | tenancy |
private_key_path | (ダウンロードした秘密キーのパス。\は\に置き換えます。) |
書き換えたらmain.tfを保存します。
Terraformの実行ファイルをダウンロードします。
https://www.terraform.io/downloads.html にアクセスし、お使いの環境に合ったterraformの実行ファイルをダウンロードします。
インストーラなどはなく、実行ファイルがそのまま入っているので、これを作業用フォルダにコピーします。
シェルで作業用フォルダに移動し(Windowsであればエクスプローラのコンテキストメニューから[Windows ターミナルで開く]を選択)、次のコマンドでterraformの初期化を行います。
./terraform init
これでTerraformを実行する準備が整いました。
とりあえず、インスタンスを手動で確保してみましょう。
(すでに作成したインスタンスがある場合、Terraformについての知識がない方は実行しないでください。既存のインスタンスを失うことになります。このミスで様々な人が自爆しています。)
./terraform apply -auto-approve
うーんやっぱりだめですね。
では、バッチファイルを作成して確保できるまでapplyを叩いてしまいましょう。
Windows環境では、次の内容でバッチファイルを作成します。ここではkakuho.batとします。
@echo off
set count=0
:loop
set /a count+=1
echo try %count%
call terraform apply -auto-approve
if %errorlevel% neq 1 (
echo Resource Created! >> result.txt
exit /b
)
timeout 150
goto :loop
Windows Terminalでバッチファイルを実行します。
バッチファイルをダブルクリックして実行してしまうとカウントの途中でお休みしてしまうことがあるので、Windows Terminalから実行するのが確実です。
./kakuho.bat
バッチファイルは150秒おきにapplyを実行し、確保でき次第終了します。
コンピュータのスリープの設定は切っておきましょう。
Apply complete! と出ていたら成功です!
ネットワークの設定(ポート開放)から作業を再開しましょう。