4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Jira - BitBucket Cloud - Terraform Cloud - AWS パイプライン

Last updated at Posted at 2023-12-23

はじめに

この記事は SRA Advent Calendar 2023 の23日目の記事です。

アドバンスト クラウド エンジニアリング事業部の杉本です。
日々の業務では、ネットワーク、AWS、Azureの基盤の構築・運用を行なっています。
その中で、IaC や自動化を取り入れることもミッションとされています。

今週、忘年会を 3件入れたことを後悔しつつも前向きに、この記事を書いております。

社内の AWS 環境では、Jira と AWS Service Catalog を利用 し、環境の払い出しをしておりますが、昨今の CI/CD パイプラインのブームに乗っかるため、この払い出し方法を考えてみようと思います。

現在の構成

現在は、AWS Service Catalog と Jira を組み合わせて AWS Account の払い出しを行なっています。払い出しには Cloud Formation と一部 Lambda を使用しています。 数年前に Lambad のランタイムの変更で、一度コードを修正したくらいでほぼ手間はかからずでした。
ただ、Lambda で実行するスクリプトを zip して S3 に置くところは、少々面倒さを感じておりました。

スクリーンショット 2023-12-22 16.09.19.png

こうしてみたい

まず、Cloud Formation ではなく、Terraform を使いたいが一番にあります。Terraform の plan して差分を見て apply する流れに運用する上ではこの上ない安心感があるためです。

次に、リポジトリですが、現在社内では Jira を使用しているので、そのまま使える BitBucket にしました。
最後にワークフローについては Jira をそのまま利用することにしました。

スクリーンショット 2023-12-22 16.09.10.png

やってみた

まず最初に、Jira のワークフローの部分は間に合わせることが出来ませんでした。そのため、上記の図の BitBucket から右側のみです。 Bitbucket内の Terraform テンプレート リポジトリのマージをトリガーに、Terraform Cloud が plan を自動実行し、その後 apply することで AWS リソースがデプロイされることを確認できました。
スクリーンショット 2023-12-22 17.07.24.png

それぞれのサービスでは以下を実施しました。

Terraform Cloud

1. Terraform Cloud アカウント作成
2. Project, Workspace 作成
3. AWS アクセス用環境変数作成

  • AWS 側で割り当てたロールの ARN を指定
    4. Bitbucket で作成したコンシューマキーを登録

AWS

1. IAM で IDプロバイダ として、app.terraform.io を登録
2. ロール割り当て

  • AWSアカウント、IAMユーザ・グループ作成のみなので、許可ポリシーは Organizations と IAM のみとした
  • 信頼されたエンティティは Terraform Cloud の Project名、Workspace 名で絞った

Bitbucket Cloud

1. Butbucket アカウント作成
2. ワークスペース、リポジトリ作成
3. ワークスペースの設定から OAuth コンシューマキーを作成

  • コールバックURL は Terraform Cloud のコンシューマキー登録ページに表示されたものを登録

4. Terraform のテンプレートファイルをリポジトリに追加

まとめ

上記を実施することで、リポジトリにマージされたタイミングで Terraform Cloud が動き、AWSリソースをデプロイすることができました。
Terraform のテンプレートの差分は Bitbucket で、 tfstate の差分は Terraform Cloud とそれぞれで確認することになりますが、それぞれの得意分野での確認なので気になることはなさそうです。

Terraform Cloud は、複数メンバーでデプロイ作業するため環境を統一したいが、サーバを管理対象として持ちたくない場合に便利だと感じました。 tfstate を持つ単位で Terraform Cloud の Workspace を分ける必要があるので、 Workspace を分ける単位は最初にある程度考えた方が良さそうです。

Jira Service Management から繋がることでパイプラインが完成するので、社内の環境払い出しを変えるため、次は Jira にトライしてみる予定です。

4
0
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?