メモ
Document
terraform-provider-googleの場合、website/docs
に格納
schema.Schema
- Type: 設定する値の型 (ValueType)。bool, int, float64, string, []interface{}, map[string]interface{}, *schema.Set などが含まれる。
- ConfigMode: スキーマが属性として扱われるか、ブロックとして扱われるかを制御するオプション (SchemaConfigMode)。
- Required: 設定が必須かどうかを示すフラグ。
- Optional: 設定がオプションかどうかを示すフラグ。Required と併用不可。
- Computed: プロバイダーがこの属性に独自の値を設定できるかどうか。Required とは併用不可。
- ForceNew: 値が変更された際にリソースの再作成が必要かどうか。
- DiffSuppressFunc: フィールドの差分を無視するカスタム関数。
- DiffSuppressOnRefresh: 差分抑制機能がリフレッシュの際にも適用されるかどうか。
- Default: 設定されていない場合に使用されるデフォルト値。
- DefaultFunc: デフォルト値を動的に計算する関数。
- Description: このフィールドの説明。ドキュメントやユーザー向けの説明に使用される。
- InputDefault: 入力要求時のデフォルト値。
- StateFunc: 値を保存または比較する前に呼ばれる関数。
- Elem: TypeList, TypeSet, TypeMap の要素の型。
- MaxItems: TypeSet, TypeList における最大項目数。
- MinItems: TypeSet, TypeList における最小項目数。
- Set: TypeSet 要素のカスタムハッシュアルゴリズム。
- ComputedWhen: 再計算が必要になる設定の変更を指定。
- ConflictsWith: 同時に設定できない他の属性を指定。
- ExactlyOneOf: どれか1つだけ設定可能な属性群。
- AtLeastOneOf: 1つ以上が設定されている必要がある属性群。
- RequiredWith: 同時に設定が必要な他の属性を指定。
- Deprecated: 廃止予定の属性であることを示すメッセージ。
- ValidateFunc: 属性の値を検証するための関数。
- ValidateDiagFunc: 値を検証し、診断情報を返す関数。
- Sensitive: センシティブな情報を隠すためのフラグ。
ブロック
ブロックを定義してるファイル
terraform-provider-google/google/provider/provider_mmv1_resources.go
リソース (ResourcesMap)
- 作成・更新・削除の操作が可能(CRUD操作)。
- resource ブロックを使用してTerraform構成で定義される。
- インフラストラクチャの要素を管理する。
データソース (DataSourcesMap)
- 読み取り専用の操作のみ可能(リードオンリー)。
- data ブロックを使用してTerraform構成で定義される。
- 外部システムや既存のリソースからデータを取得。
Resource構造体
Managed Resource スキーマ、作成、読み取り、更新、削除 (CRUD) などの // ライフサイクル操作を持つインフラストラクチャコンポーネント
Data Resource データソースとも呼ばれます。スキーマと読み取りライフサイクル操作のみを持つインフラストラクチャコンポーネント
Create
マネージドリソースを作成するときに呼ばれる
Read
マネージドリソースやデータリソースの状態をリフレッシュしたいときに呼ばれる
Update
マネージドリソースを更新したいときに呼ばれる
Delete
マネージドインスタンスをdestroyしたいときに呼ばれる
Importer
nilだったらimportコマンドは実行できない
Schema
Schemaはこのコンポーネントの構造と型情報を表す。 このフィールド、または SchemaFunc はすべての Resource 概念に必須です。 プロバイダーのライフサイクル全体でスキーマ情報をメモリに保持するのを防ぐために、 SchemaFunc を使用することを推奨します。
コマンド実行の流れ
main.go-> initCommand() -> XxxxxCommand
Terraformが実行し、削除されるまで
- terraform import
- HCLで記述しているプロパイダーを特定し、各プロバイダーのソースを
.terraform
フォルダ配下にDLする
terraform plan
terraform apply
terraform destory