Deployment Manager Convert(DM Convert)は、Deployment Manager の構成とテンプレートにGoogle がサポートする他の宣言型の構成形式に他の宣言型に変換するために使用できるツールです。現在 Google は、Terraform と Kubernetes リソースモデル(KRM)をサポートしています。
Terraform または KRM に変換する理由
Terraform と KRM は、Google Cloud サービスとインフラストラクチャの管理によく使用されている手段です。アクティブに更新されるエコシステムを提供し、シークレット管理や継続的な整合(KRM 用)などの最新機能をサポートしています。
Google は、HashiCorp と協力して、Google Cloud 用の Terraform プロバイダを開発しています。2020 年、Google では、お客様が Kubernetes を使用して、Google Cloud のリソースタイプを容易に管理できるように、Config Connector もリリースしました。
Terraform
Terraform は、インフラストラクチャをプロビジョニングするためのオープンソース ツールです。Terraform を用いて宣言型構成を記述することで、Google Cloud 用の Terraform プロバイダを使用して Google Cloud サービスとリソースを管理できます。詳細については、Google Cloud での Terraform をご覧ください。
Kubernetes Resource Model(KRM)
KRM は、宣言型の構成管理用に API とリソース定義を構築するためのパラダイムです。Google Cloud リソースがカスタム リソース定義(CRD)として表され、Config Controller を使用して有効にできます。
サポートされているタイプとタイプ プロバイダ
DM Convert は、Deployment Manager 構成 YAML ファイルや、Jinja または Python テンプレート ファイルを、KRM または Terraform 構成ファイルに変換します。
DM Convertがタイプ プロバイダとリソースタイプをサポートしている現況を確認するには、--list-supported-types
フラグを使用します。
DM Convert が形式間でコンセプトを変換する仕組みについて
次の表は、DM 変換が Deployment Manager から KRM や Terraform にコンセプトを変換する方法を示しています。
Deployment Manager のコンセプト | KRM と Config Connector の変換 | Terraform への変換 |
---|---|---|
参考資料 | リソース参照: KRM スキーマがフィールドをリファレンスとして定義している場合。KRM スキーマでフィールドを参照として定義していない場合、Deployment Manager リファレンスは解決された値に置き換えられます。 | Terraform リファレンスは、Deployment Manager リファレンスと同様に表示し動作します。 |
明示的な依存関係(depends_on ) |
明示的な依存関係の順序付けはサポートされていません。リソースは結果整合性のある方法でアクチュエートされます。 | depends_on |
Identity and Access Management(IAM)バインディング(権限のある accessControl ブロック) |
IAMPolicy |
<resource_type>_iam_policy タイプ(例: google_pubsub_topic_iam_policy ) |
IAM バインディング(権限のない iamMemberBinding タイプ) |
IAMPolicyMember |
<resource_type>_iam_member (例: google_project_iam_member ) |
複合タイプ | 複合タイプは非推奨です。DM Convert によって変換されません。 | 複合タイプは非推奨です。DM Convert によって変換されません。 |
アクション、カスタムタイプ プロバイダと出力 | サポートされていません。 | Terraform に宣型に相当するものがあるアクションが変換されます。詳細については、アクションのサポートをご覧ください。 |
DM Convert でのアクションのサポート(Terraform 用)
Actions は、使用可能な API メソッドのセットを拡張する Deployment Manager のプレビュー機能です。アクションはサポートされておらず、DM 変換では Terraform に次のような宣言型に相当するものがないアクションは変換されません。
API をパッチ適用、削除、一覧表示する
カスタム タイプ プロバイダで定義された API
カスタム API(
sqladmin-v1beta4:sql.instances.restart
など)
次の場合、DM 変換は、アクションに相応する Terraform への変換をサポートしています。
リソースを挿入する API へのアクション呼び出しを、同等の Terraform リソースに置き換えます。たとえば、
action: gcp-types/storage-v1:storage.buckets.insert
はgoogle_storage_bucket
に変換されます。可能であれば、リソースを取得する API へのアクション呼び出しを Terraform
data
型に変換します。たとえば、actions: gcp-types/compute-v1:compute.subnetworks.get
はgoogle_compute_subnetwork
に変換されます。setIamPolicy
コマンドはgetIamPolicy
で使用されているかどうかに応じて、*_iam_policy
(権限のある) リソース、または*_iam_member
(権限のない) リソースに変換されます。
Deployment Manager 内でアクションの使用を相応の宣言型に移行する方法については、アクションの使用の置換をご覧ください。
Terraform に変換するワークフロー
DM 変換を使用して Deployment Manager 構成を Terraform に変換するには:
- Terraform に変換する Deployment Manager 構成を特定します。
- リソースが最新かどうか確認するには、構成の有効なデプロイをすべて整合します。
- Terraform 構成に変換するには、ローカルで DM 変換ツールを実行します。
- 生成された Terraform 構成にリソースの現在の状態が反映されていることを確認します。
- Deployment Manager デプロイメントを削除します。デプロイを削除するときにリソースを保持するには、
delete-policy
をabandon
に設定します。
次のような Terraform のベスト プラクティスに従うことをおすすめします。
このワークフローの詳細なチュートリアルについては、DM 変換を使用した Deployment Manager の構成の変換をご覧ください。
DM Convert でのデータ収集
収集するデータ(デフォルト)
DM 変換ツールは、ツールの保守と改善のために、デフォルトでは匿名の使用状況データを Google に送信します。DM Convert ツールの実行時に、リクエストされたオペレーション、オペレーションの成功、変換のタイミングに関するデータが収集されます。このデータは匿名であり、個人情報、機密データ、顧客コンテンツはすべて除外されます。
使用状況データには以下が含まれることがあります。
変換コマンドの入力パラメータ: ツールを実行する際の変換コマンドのパラメータ値が記録されます。出力形式(KRM または Terraform)や、他のフラグが指定されているかを示すブール値の表現も含まれます(これらのフラグの特定の値は収集しません)。
変換結果: 問題が発生した場合、変換のステータス(
SUCCESS
やFAILURE
)、エラーコードやエラー メッセージなどの変換結果が記録されます。変換時間: 変換の開始時間と終了時間を記録します。
Google によるデータの使用
Google は、以下の目的で、使用状況に関するデータを収集して処理します。
一番使われている機能や設定など、ツールの使用方法を理解します。
ツールの失敗した使用状況を診断し、技術的なサポートを求めるユーザーにガイダンスを提供します。
問題を解決し、場合によっては機能の適用範囲を拡大することで、ツールを改善します。
データ収集の無効化
Google では、変換の実行時にデフォルトで使用状況データを収集しますが、このデータ収集は無効にできます。
特定の変換に対するデータ収集を無効にするには、変換コマンドで --opt_out_data_collection=true
フラグを指定できます。今後このデータの収集を継続して無効にするには、変換を実行するたびにフラグを指定する必要があります。
特定のコンバージョンのデータ収集を有効にするには、コンバージョン コマンドでフラグ --opt_out_data_collection=false
を指定するか、コマンドからフラグを省略します。