ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を終える際は、これらの値をクラウド環境に固有の値に置き換えてください。
CI/CDパイプラインを使用した、GitLabリポジトリからOCIテナンシへのTerraformコードの接続
イントロダクション
Oracle Cloud Infrastructure(OCI)または他のクラウドで作業している間、あらゆる場所での自動化に関する明確な指示が必要であり、インフラストラクチャのプロビジョニングに必要な最も重要な自動化の1つです。
ユーザーは、Terraformを使用してクラウド・インフラストラクチャをプロビジョニングしたいと考えており、コードが含まれている場合は、コード・リポジトリでAgile開発プラクティスを使用してクラウド・インフラストラクチャを管理し、完全なDevOps方法で管理したいと考えています。リポジトリが初期コードで設定されると、開発者は新しいコードを発行し、継続的インテグレーションおよび継続的デリバリ/デプロイメント(CI/CD)パイプラインからトリガーされた新しいインフラストラクチャをデプロイできます。
このチュートリアルでは、Terraform自動化マネージド・インフラストラクチャ・パイプラインを開発の俊敏な方法で構成するために必要なすべてのステップを理解し、リポジトリ・プロバイダとしてGitLabを使用します。同じプロセスが、GitHubやAzure DevOpsなどの他のプロバイダにも適用されます。
目的
-
Agile開発プラクティスを使用して、Terraform自動化マネージド・インフラストラクチャ・パイプラインを構成します。
-
GitLabエージェントがOCIテナンシに接続する基準となるユーザーのAPIキーを設定します。
-
すべてのTerraformコードがプッシュされるGitLabリポジトリを設定し、OCIテナンシの詳細を取得するための初期Terraformコードを設定します。
-
リポジトリで新しいコードがプッシュおよび承認されるとすぐにTerraformアクションをトリガーするYAMLベースのCI/CDパイプラインを設定します。
前提条件
-
Oracle Cloud Infrastructure Identity and Access Management (OCI IAM)で許可されるOCIおよびポリシーへの必要なアクセス。ユーザーは、Terraformコードを使用して作成または更新する対応するリソースにアクセスできる必要があります。
-
GitLabにアクセスして、リポジトリ、後続のパイプラインおよびコード・プッシュを作成します。
-
ソフトウェア開発のアジャイル手法に関する基本的な理解
タスク1: APIキーの設定
-
サービス・アカウントまたは管理ユーザーを使用してOCIテナンシにログインし、ユーザー設定に移動します。
または
OCI IAMコンソールからもユーザーに移動できます。このユーザーに、OCIでインフラストラクチャを作成または更新するために必要なすべてのアクセス権があることを確認してください。
-
ユーザーの「リソース」セクションに移動し、「APIキー」および「APIキーの追加」をクリックします。ここでは、新しい公開キーと秘密キーをダウンロードするか、公開キーをアップロードするか、公開キーを貼り付けるかを選択できます。
-
いずれかのオプションを選択したら、次の図に示すように、キーを便利な場所に保存し、構成ファイルを保存します。Terraformを使用してテナンシに接続する場合は、この構成ファイルと秘密キーが必要になります。
タスク2: Terraformコードを使用したGitLabリポジトリの設定
-
GitLabにリポジトリを作成します。このリポジトリを使用して、Terraformコードをプッシュします。
-
テナンシへの接続に必要なTerraformコードを開発します。このチュートリアルでは、Terraformコードを使用してテナンシに接続し、可用性ドメインの詳細を取得します。
-
provider.tf
provider "oci" { tenancy_ocid = var.tenancy_ocid user_ocid = var.user_ocid fingerprint = var.fingerprint private_key_path = var.private_key_path region = var.region } terraform { required_providers { oci = { version = ">= 3.0.0" } } }
-
variables.tf
.variable "tenancy_ocid" { type = string default = "ocid1.tenancy.oc1..aaaaaaaacko" } variable "user_ocid" { type = string default = "ocid1.user.oc1..aaaaaaaafelq" } variable "fingerprint" { type = string default = "72:d4:6c:f8:89" } variable "private_key_path" { type = string default = "oracleidentitycloudservice_user_key.pem" } variable "region" { type = string default = "us-ashburn-1" }
-
oracleidentitycloudservice_user_key.pem
.content of your private key
-
availability-domains.tf
.data "oci_identity_availability_domains" "ads" { #Required compartment_id = var.tenancy_ocid }
-
outputs.tf
.# The "name" of the availability domain to be used for the compute instance. output "name-of-first-availability-domains" { value = data.oci_identity_availability_domains.ads.availability_domains[0].name }
ノート:保存された構成ファイルの値を使用して、
variables.tf
ファイルにパラメータ値を入力します。 -
タスク3: コード・マージに基づくYAMLベースのCI/CDパイプラインおよびトリガーの設定
-
TerraformコードがGitLabリポジトリにプッシュされたら、パイプラインを作成し、
yaml
ファイルを使用して構成します。 -
リポジトリに
.gitlab-ci.yml
ファイルを作成し、次のコードを追加します。build-job: stage: build script: - echo "Hello Gitlab" - uname -r - yum install -y yum-utils - yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo - sed -i 's/$releasever/7/g' /etc/yum.repos.d/hashicorp.repo - yum -y install terraform - pwd - ls -ltra - terraform init - terraform plan - terraform apply -auto-approve test-job1: stage: test script: - echo "This job tests something" test-job2: stage: test script: - echo "This job tests something, but takes more time than test-job1." - echo "After the echo commands complete, it runs the sleep command for 20 seconds" - echo "which simulates a test that runs 20 seconds longer than test-job1" - sleep 5 deploy-prod: stage: deploy script: - echo "This job deploys something from the main branch." environment: dev
ノート:
- すべてのTerraformコマンド
init
、plan
およびapply
はビルド・ステージで実行されますが、それに応じて必要なステージで使用できます。 - このデモの
yml
ファイルは、Oracle Linux 7を実行しているGitLabエージェントに基づいています。エージェントのOSとネットワークの可用性に基づいて、Terraformモジュールの可用性をチェックします。
- すべてのTerraformコマンド
関連リンク
承認
- 著者 - Lovelesh Saxena(プリンシパル・ソフトウェア・エンジニアリング・アーキテクト)
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Connect Terraform Code from a GitLab Repository to an OCI Tenancy using a CI/CD Pipeline
F94449-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.