2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【作業メモ】GitOpsでTerraformのコードを管理する(GCPチュートリアル)

Posted at

はじめに

IaCやるならコードはGitリポジトリで管理したいなあと思って以下ハンズオンにtry

  • devとprod環境のみ作成
  • devまたはprod環境のブランチにpushしたらCloud Buildが走る
  • GCP側の操作はCloud Shellで行う

1. APIを有効にする

GCPのCloud BuildとCompute EngineのAPIを有効化する。

2. GitHubのサンプルリポジトリをフォークする

リポジトリを見てみると、environmentsフォルダ配下にサブフォルダ(devとprod)がある。
フォルダでワークロードを分離していて、極力類似した構成にするのがよいけど、サブフォルダごとに設定変更をすることも可能。

3. 保存場所をCloud Storageバケットにする

バケットを作る。デプロイ履歴を残すためにオブジェクトのバージョニングを有効にする。

バージョニングを有効にするとストレージコストはその分増える

terraform.tfvars ファイルと backend.tf ファイルのパスを書き換える(プレースホルダになっているところにプロジェクトIDを入れる)

4. Cloud Buildサービスアカウントに権限付与する

サービスアカウントはアプリケーションや仮想マシンに権限をつけるGoogleアカウント。
APIを呼び出すときはサービスアカウントを使用する。

Terraformスクリプトを実行できるようにするにはプロジェクトへのアクセス権限が必要。

5. Cloud BuildをGitHubリポジトリに接続

最初All repositoriesを選択してインストールしてしまったけど、GCPコンソールのCloud Build APIのダッシュボードから何も見えず...ハンズオンの説明だとリポジトリを選択しろとあったのでやり直し。リポジトリを選択したら接続できた。

6. 開発環境ブランチでファイアウォール設定を変更する

なんかビルド失敗した。マージ可能な状態ではあるけど、とりあえず次の手順をやってみる

7. ブランチにルールを設定する

devとprodブランチでステータスチェックに成功しないとマージできないようにルール追加。
先ほどのpull requestに戻ってみると確かにマージできなくなっている。

こんな感じ
image.png

エラーログ見たらbucket doesn't existで言ってて、
3. の手順でterraform.tfvars ファイルと backend.tf ファイル内でバケットのパスをちゃんと書き換えられていなかった(プロジェクトIDが入るべきところがプレースホルダのままになっていた)ので、今回はもうGitHubから手動で書き換えた。→無事ビルドできた。

8. devに変更をマージ

ハンズオンの指示通りにGitHub操作

9. devブランチをprodブランチにマージ

同上

10. デプロイしたWebサーバにアクセス

ビルドログにIPが出るので、ブラウザからアクセスする。無事アクセスできた。

11. リソース削除

適宜お片付け

おわりに

GitHubのセットアップしたり途中ビルドが上手くいかず結構時間かかった印象。4~5hくらいかかったかな。

Storageのパスがなんかうまく書き換わってなかったのは、Cloud ShellからGit pushしようとしたときのGitの認証でパスワード認証しようとしたからっぽい。
Shellのコンソールでも"Support for password authentication was removed on August 13, 2021."って怒られてたので、アクセストークンも取得して認証試したら通った。
(今回はGitHub側でGUIで操作しちゃったけど……)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?