TerraformとGitLabによるInfrastructure as Codeの実現
GitLabでインフラストラクチャを管理するには、Terraformとのインテグレーションを使って、バージョン管理、再利用、共有が可能なリソースを定義することができます:
- コンピュート、ストレージ、ネットワークリソースのような低レベルのコンポーネントを管理します。
- DNSエントリやSaaS機能などの高レベルコンポーネントを管理します。
- GitOps デプロイと Infrastructure-as-Code (IaC) ワークフローの組み込み。
- GitLabをTerraformのステートストレージとして使用します。
- Terraformモジュールを保存して使用し、一般的で複雑なインフラストラクチャのパターンを簡素化します。
TerraformとのインテグレーションでGitLabが提供する機能の概要をビデオでご覧ください。
プロジェクトとTerraformのインテグレーション
IaC ScanningはGitLab 14.6で導入されました。
GitLabとTerraformとのインテグレーションはGitLab CI/CDを通して行われます。include
属性を使って Terraform テンプレートをプロジェクトに追加し、そこからカスタマイズします。
始めるには、あなたのニーズに最も適したテンプレートを選んでください:
すべてのテンプレート
- GitLabが管理するTerraformステートをTerraformステートストレージのバックエンドとして使用します。
- 4つのパイプラインステージをトリガーします:
test
,validate
,build
, anddeploy
. - Terraformコマンドを実行します:
test
validate
,plan
,plan-json
. また、デフォルトブランチでのみapply
を実行します。 - IaC Scanningを使ってセキュリティの問題をチェックします。
最新のTerraformテンプレート
最新のテンプレートは最新のGitLabバージョンに対応しています。最新のGitLabの機能を提供しますが、変更を含む可能性があります。
最新のTerraformテンプレートを安全に使うことができます:
- GitLab.comを使うなら。
- GitLabの新しいリリースごとに更新されるセルフマネージドインスタンスを使う場合。
安定した高度なTerraformテンプレート
以前のバージョンのGitLabを使用している場合、GitLabのバージョンとテンプレートのバージョンの非互換エラーに直面するかもしれません。このような場合、これらのテンプレートのいずれかを使うことができます:
- 安定したテンプレートで、その上に構築できるスケルトンがあります。
- あなたの設定を完全にカスタマイズするための高度なテンプレート。
Terraformテンプレートを使う
Terraformテンプレートを使うには:
- 左のサイドバーで、Searchを選択するか、もしくはGo toを選択し、Terraformとインテグレーションしたいプロジェクトを探します。
- Code > Repositoryを選択します。
-
.gitlab-ci.yml
ファイルを編集し、include
属性を使用して Terraform テンプレートを取得します:include: # To fetch the latest template, use: - template: Terraform.latest.gitlab-ci.yml # To fetch the advanced latest template, use: - template: Terraform/Base.latest.gitlab-ci.yml # To fetch the stable template, use: - template: Terraform.gitlab-ci.yml # To fetch the advanced stable template, use: - template: Terraform/Base.gitlab-ci.yml
-
以下のように変数を追加します:
variables: TF_STATE_NAME: default TF_CACHE_KEY: default # If your terraform files are in a subdirectory, set TF_ROOT accordingly. For example: # TF_ROOT: terraform/production
- オプション。
.gitlab-ci.yml
ファイルで、設定をカスタマイズするために取得したテンプレートに存在する属性をオーバーライドします。
Terraformテンプレートレシピ
GitLabが作成したテンプレートレシピについては、Terraform template recipesを参照してください。
関連するトピック
-
gitlab-terraform
シェルスクリプトを含むイメージを表示します。 - GitLab をTerraform モジュールのレジストリとして使います。
- ステートファイルをローカルストレージやリモートストアに保存するには、GitLabが管理するTerraformのステートを使います。
- Terraformのコード変更とInfrastructure-as-Codeワークフローでコラボレーションするには、マージリクエストでTerraformインテグレーションを使います。
- ユーザー、グループ、プロジェクトのようなGitLabリソースを管理するには、GitLab Terraformプロバイダを使います。GitLab TerraformプロバイダのドキュメントはTerraform docsサイトにあります。
- Amazon Elastic Kubernetes Service(EKS) で新しいクラスターを作成します。
- Google Kubernetes Engineで新しいクラスターを作成(GKE).
- GitLabとTerraformのトラブルシューティング。