Phase 0:環境準備¶
目標¶
ローカル PC の Terraform から API キー(API Key)で OCI を操作できるようにし、作業を始める前に費用アラートを設定しておきます。
ローカル PC¶
- Terraform:
winget install --id Hashicorp.Terraform -e - VS Code 拡張機能:
hashicorp.terraform(シンタックスハイライト、補完)
ヒント
Terraform をインストールした直後は、すでに開いているターミナルでは terraform コマンドが認識されません。ターミナルを開き直せば解決します(PATH はターミナル起動時に読み込まれるため)。
OCI コンソール(GUI)での準備¶
1. コンパートメント(Compartment)¶
アイデンティティとセキュリティ(Identity & Security)→ コンパートメント(Compartments)→ コンパートメントの作成(Create Compartment)
- 名前は
tf-lab、親は root - 練習用のリソースはすべてここに置く → 確認しやすく、片付けやすく、予算(Budget)も個別に設定できる
2. 予算アラート¶
請求とコスト管理(Billing & Cost Management)→ 予算(Budgets)
| 対象 | 金額 | アラート |
|---|---|---|
コンパートメント tf-lab |
$1 | 実績が 1% を超えたとき |
| root(テナンシ(Tenancy)全体) | $5 | 同上 |
3. API キー¶
右上のプロフィール・アイコン → マイ・プロファイル(My profile)→ API キー(API keys)→ API キーの追加(Add API key)→ API キー・ペアの生成(Generate API key pair)
- 秘密鍵をダウンロードして
~/.oci/に置く(プロジェクト・ディレクトリや Git には絶対に入れない) - Add をクリックすると、コンソールに config のスニペットが表示される
4. ~/.oci/config¶
[DEFAULT]
user=ocid1.user.oc1..xxxx
fingerprint=xx:xx:...
tenancy=ocid1.tenancy.oc1..xxxx
region=ap-osaka-1
key_file=C:\Users\<you>\.oci\oci_api_key.pem
Terraform の provider にはプロファイル名だけを書き、認証情報はすべてこのファイルから読み込みます。
ハマりどころ¶
did not find a proper configuration for private key
コンソールが生成するスニペットは key_file=<path to your private keyfile> # TODO になっています。
OCI の config は行末コメントに対応していないため、# TODO がパスの一部として扱われます。パスを書き換えるときは # TODO も一緒に削除します。
Git に入れないもの¶
.gitignore で最初から次のファイルを除外しています。
| ファイル | 理由 |
|---|---|
*.tfstate |
リソースの詳細情報、場合によってはパスワードまで含まれる |
*.tfvars(*.tfvars.example だけをコミット) |
OCID、ローカル PC の IP などの環境情報 |
*.pem / *.key |
秘密鍵 |
backend.hcl |
オブジェクト・ストレージ(Object Storage)のネームスペース(Namespace)など |