OpenTofuとGitLabを使用したInfrastructure as Code
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLabでインフラストラクチャを管理するには、OpenTofuとのインテグレーションを使用して、バージョン管理、再利用、共有が可能なリソースを定義できます:
- コンピューティング、ストレージ、ネットワーキングリソースなどの低レベルのコンポーネントを管理します。
- DNSエントリやSaaSの機能などの高レベルのコンポーネントを管理します。
- GitLabをOpenTofuステートストレージとして使用します。
- OpenTofuモジュールを保存して使用し、一般的かつ複雑なインフラストラクチャパターンを簡素化します。
- GitOpsデプロイとInfrastructure as Code(IaC)のワークフローを組み込みます。
GitLabがOpenTofuとのインテグレーションで提供する機能の動画の概要をご覧ください。
以下の例では、主にOpenTofuを使用していますが、Terraformでも動作します。
TerraformとOpenTofuのサポート
GitLabは、TerraformとOpenTofuの両方と統合できます。ほとんどの機能は完全に互換性があり、以下が含まれます:
簡略化のため、GitLabドキュメントでは主にOpenTofuについて説明します。ただし、TerraformとOpenTofuのインテグレーションの違いについては、ドキュメントに記載されています。
パイプラインでOpenTofuプロジェクトをクイックスタート
OpenTofuは、GitLab OpenTofu CI/CDコンポーネントを使用して、Terraform固有のすべてのGitLab機能と統合できます。
コンポーネントを含めることで、検証、プラン、適用ワークフローをパイプラインに追加できます:
include:
- component: gitlab.com/components/opentofu/validate-plan-apply@<VERSION>
inputs:
version: <VERSION>
opentofu_version: <OPENTOFU_VERSION>
root_dir: terraform/
state_name: production
stages: [validate, build, deploy]テンプレート、インプット、およびOpenTofu CI/CDコンポーネントの使用方法の詳細については、OpenTofu CI/CDコンポーネントのREADMEを参照してください。
独自のTerraform CI/CDテンプレートをビルドしてホストする
GitLabはTerraform CI/CDテンプレートとterraform-images(terraformなど、基盤となるジョブイメージ)を配布しなくなりましたが、GitLabパイプラインでTerraformを引き続き使用できます。
独自のテンプレートとイメージをビルドしてホストする方法については、Terraform Imagesプロジェクトを参照してください。
関連トピック
- GitLabをTerraform/OpenTofuモジュールレジストリとして使用します。
- ローカルストレージまたはリモートストアにステートファイルを保存するには、GitLab管理のTerraform/OpenTofuステートを使用します。
- Terraformコードの変更とIaCワークフローで共同作業を行うには、マージリクエストでのTerraformインテグレーションを使用します。
- ユーザー、グループ、プロジェクトなどのGitLabリソースを管理するには、GitLab Terraformプロバイダーを使用します。GitLab Terraformプロバイダーのドキュメントは、Terraformドキュメントサイトで入手できます。
- Amazon Elastic Kubernetes Service(EKS)で新しいクラスターを作成します。
- Google Kubernetes Engine(GKE)で新しいクラスターを作成します。
- GitLabとTerraformの問題をトラブルシューティングします。
gitlab-terraformShellスクリプトを含むイメージを表示します。