背景
TerraformでOracleクラウドを構成しようとした。
ociコマンドを使って鍵を作る手順が一番簡単だったので紹介する。
事前準備
テナンシのOCIDとリージョン情報を準備する。
テナンシのOCIDとユーザーのOCIDを取得する場所
https://docs.cloud.oracle.com/ja-jp/iaas/Content/API/Concepts/apisigningkey.htm#five
手順
プロファイルとPEMキーの作成
% oci setup config
してプロファイルを作る。
次へ次へで良い。パスフレーズは入力しないほうが後々楽。
画面の指示通り進めれば、この過程でPEMキーが作成される。
PEMキーの登録
Web管理画面にてPEMキーの登録を行う。
- 画面右上のユーザボタンをクリックして[ユーザ設定]を選択する。
- ユーザ管理画面より左下の[APIキー]をクリックして表示される画面にて[APIキーの追加]をクリックする
キーの選択画面にて前の手順で作成したPEMキーを選択する。セットアップ通り作成していれば/Users/ユーザ名/.oci/oci_api_key_public.pem
に保存されている
Terraformへ反映
cat ~/.oci/config
の結果を参考に、以下の通りTerraformに反映する。
variable "fingerprint" { default = "<fingerprintの値を記載>"}
variable "private_key_path" { default = "/Users/ユーザ名/.oci/oci_api_key.pem"}
variable "tenancy_ocid" { default = "<tenancyの値>"}
variable "region" { default = "<regionの値>"}
サンプルTerraform
https://github.com/terraform-providers/terraform-provider-oci/tree/master/examples/always_free
上記スクリプトのままだとエラーが出るので、以下の通り書き換える。
ssh_authorized_keys = file(var.ssh_public_key)
SSH接続方法
% terraform output
app = http://xxx.xxx.xxx.xxx
appのIPアドレスに次のコマンドでSSHする。
$ ssh opc@xxx.xxx.xxx.xxx -i ~/.ssh/id_rsa
トラブルシュート
Error: Service error:NotAuthorizedOrNotFound. shape VM.Standard.E2.1.Micro not found. http status code: 404
下記の番号を変える。
variable "ad_region_mapping" {
type = map
default = {
us-phoenix-1 = 2
us-ashburn-1 = 1
us-seattle-1 = 2
}
}