クラウドでのIaC:TerraformとResource ManagerをCI/CDパイプラインに組み込む―ネイティブに構成/IaC in the Cloud: Integrating Terraform and Resource Manager into your CI/CD Pipeline - Building Natively

 原文はこちら:https://blogs.oracle.com/developers/iac-in-the-cloud%3a-integrating-terraform-and-resource-manager-into-your-cicd-pipeline-building-natively

Oracle CloudでのTerraformを使ったインフラ管理についてのブログシリーズの最終回へようこそ。前回のポストではOCI CLIをGitHub Actionsパイプラインの中で用いて、Resource Managerでのスタックとジョブ作成を経由してTerraformスクリプトを実行しました。このポストでは、ネイティブTerraformをGitHub Actionsで使うことで、コンセプトをもう少しシンプルに、移植可能なかたちで実現していきます。Resource Managerの多機能さや柔軟性といった利点は失うことにはなりますが、あなたがもしインフラのビルドと維持をシンプルにやりたいだけなら、このソリューションはまさにぴったりなものです!

パイプラインからインフラを構築する

Just like in our last post, we’ll need some secret values so that we can execute our Terraform scripts from our CI/CD pipeline. Set some secrets for the following values from your tenancy.

前回のポストと同じように、CI/CDパイプラインからTerraformスクリプトを実行するためにいくつかのSecretの値が必要になります。あなたのテナンシーから、以下の値でSecretをセットしておきましょう。


Terraformでの実行

OCI CLIを使い、Resource Managerを経由してTerraformスクリプトをビルドするのも良いでしょう。しかし前回のポストで学んだように、このやり方ではCLIをインストールする必要があり、パイプライン/ビルドサーバーではなくクラウドテナンシーの中でTerraformスクリプトが実行されるため、すごく速いやり方というわけではありません。ビルド時間を短縮するために(また、ビルドスクリプトの複雑さを低減するために)どうしたらいいかを、パイプラインの中でスクリプトをネイティブに実行する方法を通じて学んでいきましょう。

前回と同様に、build.yamlというファイルにパイプラインを定義することから始めます。

注:これまでと同様、同じGitHubプロジェクトの、ブランチしたものを使います。  https://github.com/recursivecodes/oci-resource-manager-demo/tree/github-actions-tf

前回同様に環境変数を定義していますが、今回はTF_VAR_というプリフィクスをつけています。このシリーズのこれまでの内容を思い出せれば、これがTerraformがピックアップしてスクリプト変数としてセットする特別なプリフィクスだとお気づきになるでしょう。次に、コードをチェックアウトしてHashicorp "setup-terraform"プラグインを設定しましょう。これはビルド環境にTerraformをインストールしてくれるものです。

- uses: actions/checkout@v2
- uses: hashicorp/setup-terraform@v1
view rawbuild.yaml hosted with ❤ by GitHub

これで設定は終わりです。これまでのシリーズでローカルマシン上で手動で実行したときと同じように、Terraform CLIから直接スクリプトを実行することができます。Terraformを初期化し、スクリプトを検証するためのステップを追加しておきましょう。

- name: 'Init Terraform'
  id: init
  run: terraform init
- name: 'Validate Terraform'
  id: validate
  run: terraform validate
view rawbuild.yaml hosted with ❤ by GitHub

そうしたらterraform planとterraform applyを実行します。

- name: 'Terraform Plan'
  id: plan
  run: terraform plan
  continue-on-error: false
- name: 'Terraform Apply'
  id: apply
  run: terraform apply -auto-approve
view rawbuild.yaml hosted with ❤ by GitHub 

ビルドをチェックイン、プッシュすると今回も自動的にパイプラインが実行されます。


ただし今回は実行がもっと速くなっています。3分17秒かかっていたものが、計13秒に。

まとめ

このポストでは、インフラをビルドするためのTerraformスクリプトをネイティブTerraform CLIを使ってCI/CDパイプラインの中で実行しました。

シリーズのまとめ

このシリーズでは、Infrastructure as Codeをテーマにしてきました。開発者のためのTerraformのごく基礎的な内容からソリューションのCI/CDパイプラインへの組み込みまで、インフラの自動化のそれぞれの側面について紹介してきました。あなたがこれらのソリューションを自身のクラウドネイティブアプリケーションで使うことの基本的な知識、また、そのメリットについてご理解いただけていれば幸いです。


0 件のコメント:

コメントを投稿