Slide 1

Slide 1 text

AWS Service Catalogを利用した IaCのテンプレート化と Terraformによるデプロイ ビヨンド勉強会 #44 【大阪】AWS構築・開発の技術勉強会【リアル開催】 2024/12/04 株式会社ビヨンド 寺岡 佑樹

Slide 2

Slide 2 text

resource “my_profile” “nezumisannn” { name = “Yuki.Teraoka” nickname = “ねずみさん家。” company = “beyond Co., Ltd.” job = “Infra Engineer + HR” X     = “@yktr_sre” favorite = [“Terraform”,”Packer”] } × ねずみさん家。のインフラエンジニア道場 自己紹介 Youtube Udemy

Slide 3

Slide 3 text

今日のゴール AWS Service Catalogを使って Terraformのコードを元に AWS上に リソースを構築する

Slide 4

Slide 4 text

Service Catalogとは

Slide 5

Slide 5 text

Service Catalogとは ● 承認された AWSサービスのカタログを作成、管理することができるサービス ● 公開されたカタログを用いて、 AWSの各種サービスに精通していない人でも簡 単にAWS上にインフラを構築できる ● カタログ = IaCのコード(テンプレート )

Slide 6

Slide 6 text

Service Catalogを利用する シチュエーション

Slide 7

Slide 7 text

Service Catalogを利用するシチュエーション ● AWS(以外のクラウドもそうだが )のサービスを利用する場合、作りたいシステム の特徴や必要な機能に応じて、複数あるサービスの中から取捨選択して必要な ものだけを組み合わせる必要がある

Slide 8

Slide 8 text

全てのサービスの特徴や仕様に 全員が深く精通していくことは 現実的に厳しい

Slide 9

Slide 9 text

基盤チーム インフラ サービス 開発チーム ユーザー アプリケーション AWS + ① 基盤チームが必要な技術を集約してAWS上のインフラを設計・構築する ② サービス開発チームがAWS上にデプロイするアプリケーションを開発する ③ ユーザーが実際に利用する ① ② ③

Slide 10

Slide 10 text

基盤チーム インフラ サービス 開発チーム AWS ① 複数サービスの開発チームに構成や設定が統一されたインフラを提供したい ② 開発者自身が必要なインフラ構成を必要なときにデプロイしたい ① ②

Slide 11

Slide 11 text

基盤チーム サービス 開発チーム AWS ① 必要な設定が定義されたIaCのテンプレートを公開できる ② Service Catalog経由で基盤チームが公開したテンプレートを利用できる ① ② Service Catalog

Slide 12

Slide 12 text

実際に利用してみる

Slide 13

Slide 13 text

やること EC2インスタンスとそれに必要な VPCネットワークを構築する

Slide 14

Slide 14 text

やること ● Terraform Reference Engineのプロビジョニング ● Terraformのコード記述 ● 製品の作成 ● ポートフォリオの作成 ● ポートフォリオと製品の紐付け ● 製品に制約を追加 ● ポートフォリオにアクセス権限を付与 ● 製品を起動 ● 起動後確認

Slide 15

Slide 15 text

Service Catalogの構成要素 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 16

Slide 16 text

Terraform Reference Engineのプロビジョニング 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 17

Slide 17 text

Terraform Reference Engineのプロビジョニング ● Service CatalogからTerraform Community Editionを利用するために必要な 環境を構築する必要がある ● AWS公式からGitHubのリポジトリで必要なファイル一式が提供されている ○ https://github.com/aws-samples/service-catalog-engine-for-terraform-os

Slide 18

Slide 18 text

Terraform Reference Engineのプロビジョニング ● 事前にいくつかのツールのインストールが必要 ● 作業としてはリポジトリを cloneしてシェルスクリプトを実行するだけ ● 裏側ではsam deployでcfnのスタックが実行される Terraform実行用のEC2インスタンスやNATGateway含みVPCが作成されるので 維持費が若干お高めかもしれない・・・

Slide 19

Slide 19 text

Terraformのコード記述 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 20

Slide 20 text

Terraformのコード記述 ● 必要なコードを書いていく (aws_vpc とか aws_instanceとか) ※コードは GitHubで公開します

Slide 21

Slide 21 text

製品の作成 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 22

Slide 22 text

製品の作成 ● Service Catalog > 製品リスト > 製品を作成 > 製品の詳細 TRE経由でTerraform Community Edition を利用するため 外部 を選択 その他は任意の値で OK

Slide 23

Slide 23 text

製品の作成 ● Service Catalog > 製品リスト > 製品を作成 > バージョンの詳細 tfファイル群を tar.gzで圧縮してアップロードす る(GitHub等の外部リポジトリと連携することも もちろん可能 ) > 製品の作成ボタンをクリック

Slide 24

Slide 24 text

ポートフォリオの作成 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 25

Slide 25 text

ポートフォリオの作成 ● Service Catalog > ポートフォリオ > ポートフォリオの作成 任意の値を入力 > 作成ボタンをクリック

Slide 26

Slide 26 text

ポートフォリオと製品の紐付け 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 27

Slide 27 text

ポートフォリオと製品の紐付け ● Service Catalog > ポートフォリオ > ポートフォリオを選択 > アクション > ポート フォリオに製品を追加

Slide 28

Slide 28 text

ポートフォリオと製品の紐付け ① 一旦チェックを外す (後で設定する ) ②ボタンをクリック

Slide 29

Slide 29 text

製品に制約を追加 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 30

Slide 30 text

製品に制約を追加 ● Service Catalogの信頼ポリシーを持った IAMロールを作成する (SCLaunch-か ら始まるロール名である必要がある ) ● ロールに紐づけるポリシーは Terraformで作成するリソース作成に必要なもの 権 限を持ったものを作成して紐づける

Slide 31

Slide 31 text

製品に制約を追加

Slide 32

Slide 32 text

製品に制約を追加 ● ポートフォリオ > ポートフォリオを選択 > 制約タブ > 制約を作成 ● 製品を選択、起動タイプは「起動」にしておく

Slide 33

Slide 33 text

製品に制約を追加 ● 起動の制約 > IAMロールを選択 > IAMロールのプルダウンで出てきたものを選 択 > 作成ボタンをクリック

Slide 34

Slide 34 text

ポートフォリオにアクセス権限を付与 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 35

Slide 35 text

ポートフォリオにアクセス権限を付与 ● ポートフォリオ > ポートフォリオを選択 > アクセスタブ > アクセス権の付与 Service Catalogを利用して製品 を起動する IAMリソース(グループ or ロール or ユーザー)を指定 > アクセス権を付与ボタンをクリック

Slide 36

Slide 36 text

製品を起動 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 37

Slide 37 text

製品を起動 ● プロビジョニング > 製品 ● アクセス権限が付与されていれば製品が一覧に表示されているはず ● 製品を選択 > 製品を起動 製品の名前を入力して製品バー ジョンを選択する

Slide 38

Slide 38 text

製品を起動 ● Terraformのコード内で variableで変数を定義しておくと Service Catalogの画 面からパラメータとして値をセットできる > 製品を起動ボタンをクリック

Slide 39

Slide 39 text

起動後確認 ● プロビジョニング > プロビジョニングされた製品 ● Terraformで構築したリソースがリソースグループでまとめられている

Slide 40

Slide 40 text

起動後確認 ● グループリソースとして構築されたリソースの一覧を確認できる

Slide 41

Slide 41 text

Service Catalogの構成要素(再掲) 基盤チー ム サービス 開発チーム Service Catalog tfファイル ポートフォリオ 起動制約 設定 IAMロール ・・・・ 製品A ※TRE(Terraform Reference Engine)の構成要素として EC2インスタンス以外も存在するが作図の関係上省略 製品N 記述 登録 アクセス 許可(IAM) 製品起動 ※TRE インスタンス プロビジョニング プロビジョニング された製品 製品構築

Slide 42

Slide 42 text

まとめ ● Service Catalogとは承認された AWSサービスのカタログを作成、管理すること ができるサービス ● 利用すると必要な設定が定義された IaCのテンプレートを公開できる ● 公開されたテンプレートを使って TerraformやAWSに精通していなくてもインフラ を構築できる ● 気になる方は使ってみてください

Slide 43

Slide 43 text

終わり