テラフォームを用いたGCP上の自動化インフラストラクチャ
4539 ワード
私はGCPのプロジェクトに取り組んでいるとき、私はすべてを自動化しようとします.これには、サービスの配備と新しいサービスのためのビルドのプロビジョニングが含まれます.
私がプロジェクトにサービスを加えるならば、私はそれのためにCI/CDパイプラインを構成する方法を覚えている多くの時間を浪費したくありません.私は既存のモジュールをコピーして、私の他のサービスと全く同じように働く何かを得たいです.
これを設定するには、私のGCPプロジェクトのすべてを実行するために必要なビルドとリソースを準備するterraform repoがあります.そのrepoにコードを押すと、新しいビルドとサービスが展開されます.実際に言えば、そのレポ私は実行にプッシュ
私のプロジェクトのそれぞれのサービスは、それ自体が集約的に展開されます.私がこのセットアップをして、走らせるならば、私はサービスをアップデートすることができて、GCPコンソール自体の範囲内で最小の構成仕事で新しいサービスを加えることができます-私はちょうどサービスを変えて、サービスを加えるか、サービスを走らせる基盤を修正するために適当なrepoにコードを押します.
これは、プロジェクトのスターターレポといくつかの一般的なモジュールの助けを借りて、複雑なものであるように聞こえます.一度起動して、新しいサービスを実行しているサービスをプロジェクトに追加できます. サービスのためのREPOをリンクすることCloud Source Repository
設定 追加Cloud Build Trigger プロジェクトのために サービスをterraformで実行するリソースの追加 このポストはTorraformを使用して連続インフラストラクチャ展開のための新しいGCPプロジェクトを設定する方法を歩きます.
まず、GCPで新しいプロジェクトを立ち上げます.私は個人的なプロジェクトとしてこれをしていると仮定します.我々の組織が我々の環境で利用できるならば、より多くがありますmature tooling 利用可能です.
次に、プロジェクト内のクラウドソースリポジトリとしてインフラストラクチャレポとなります.私mirror Bitbucketからの個人的なレポですが、Githubやクラウドソースそのものもうまく使えます.
この例では、this 私がスターターとしてクローンするrepo.それは私が始めるために使用するいくつかのterraformモジュールを持っています、そして
一旦これを持つならば、「倉庫名」のメモをとってください.ビルドパイプラインをリンクする必要があります.
私の使用this 新しいスタートアップを開始するインフラスターター.そのためには、プロジェクトにクラウドシェルを開き、repoをクローンします.そこで私は
次に、以下を実行します. そして、私は行く準備ができているインフラのための連続配備パイプラインを持っています.そうすることができますスターターが初期化されているか確認してください. ビルドを実行するサービスアカウント 我々の入力repoへの変化に関して動くビルドトリガー ログの保管口座 地形形態の保管口座 サービスアカウントに上記の使用を許可する適切なアクセス許可
このビルドの出力は、クラウドビルドのビルドトリガーとして確認できます.
そして、我々は手動でそれを実行することができますまたは根本的なレポにコードをプッシュすることによってそれをトリガ!
あなたのインフラストラクチャのレポを適切に構造化する方法については、ドキュメントを参照してください.YAMLから:
そして、バックエンド状態で作成された特定のストレージバケットのバックエンドを指します.
私がプロジェクトにサービスを加えるならば、私はそれのためにCI/CDパイプラインを構成する方法を覚えている多くの時間を浪費したくありません.私は既存のモジュールをコピーして、私の他のサービスと全く同じように働く何かを得たいです.
これを設定するには、私のGCPプロジェクトのすべてを実行するために必要なビルドとリソースを準備するterraform repoがあります.そのrepoにコードを押すと、新しいビルドとサービスが展開されます.実際に言えば、そのレポ私は実行にプッシュ
terraform apply
.私のプロジェクトのそれぞれのサービスは、それ自体が集約的に展開されます.私がこのセットアップをして、走らせるならば、私はサービスをアップデートすることができて、GCPコンソール自体の範囲内で最小の構成仕事で新しいサービスを加えることができます-私はちょうどサービスを変えて、サービスを加えるか、サービスを走らせる基盤を修正するために適当なrepoにコードを押します.
これは、プロジェクトのスターターレポといくつかの一般的なモジュールの助けを借りて、複雑なものであるように聞こえます.一度起動して、新しいサービスを実行しているサービスをプロジェクトに追加できます.
cloudbuild.yaml
ファイル名新しいGCPプロジェクトの設定
まず、GCPで新しいプロジェクトを立ち上げます.私は個人的なプロジェクトとしてこれをしていると仮定します.我々の組織が我々の環境で利用できるならば、より多くがありますmature tooling 利用可能です.
次に、プロジェクト内のクラウドソースリポジトリとしてインフラストラクチャレポとなります.私mirror Bitbucketからの個人的なレポですが、Githubやクラウドソースそのものもうまく使えます.
この例では、this 私がスターターとしてクローンするrepo.それは私が始めるために使用するいくつかのterraformモジュールを持っています、そして
cloudbuild.yaml
"hello "を出力し、ビルドトリガーが実行されていることを確認するファイルです.一旦これを持つならば、「倉庫名」のメモをとってください.ビルドパイプラインをリンクする必要があります.
自動ビルドの追加
私の使用this 新しいスタートアップを開始するインフラスターター.そのためには、プロジェクトにクラウドシェルを開き、repoをクローンします.そこで私は
cd
にsrc
ディレクトリと変更terraform.tfvars
プロジェクトを参照し、プロジェクトのインフラストラクチャを管理するソースREPOを参照します.次に、以下を実行します.
terraform init
terraform apply
このビルドの出力は、クラウドビルドのビルドトリガーとして確認できます.
そして、我々は手動でそれを実行することができますまたは根本的なレポにコードをプッシュすることによってそれをトリガ!
terpoを実行するためにrepoを設定する
あなたのインフラストラクチャのレポを適切に構造化する方法については、ドキュメントを参照してください.YAMLから:
steps:
- id: 'Terraform Init'
name: 'hashicorp/terraform:1.0.0'
entrypoint: 'sh'
args:
- '-c'
- |
cd src
terraform init
- id: 'Terraform Plan'
name: 'hashicorp/terraform:1.0.0'
entrypoint: 'sh'
args:
- '-c'
- |
cd src
terraform plan
- id: 'Terraform Apply'
name: 'hashicorp/terraform:1.0.0'
entrypoint: 'sh'
args:
- '-c'
- |
cd src
terraform apply -auto-approve
logsBucket: '$_LOG_BUCKET_URL'
options:
logging: GCS_ONLY
ここで、プロジェクトのスターターによって設定された変数からログバケットURLを引いているところです.そして、バックエンド状態で作成された特定のストレージバケットのバックエンドを指します.
terraform {
backend "gcs" {
bucket = "subtle-app-346916-tf-state"
}
}
terraform {
required_version = "~> 1.0.0"
}
あなたがこれを持っているならば、あなたのterraformコードを更新して、RIPOを押すことはあなたのプロジェクトの基盤を更新しなければなりません.Reference
この問題について(テラフォームを用いたGCP上の自動化インフラストラクチャ), 我々は、より多くの情報をここで見つけました https://dev.to/bradasaurusrex1/automating-infrastructure-on-gcp-using-terraform-48n8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol