Slide 1

Slide 1 text

Terraform for GCP の新機能 Infrastructure Managerの ご紹介。ついでにあなたの健康もIaC化する情報をお届 けします。
 
 2023年12月15日
 
 アライアンス事業部 エンジニアグループ
 
 室井 靖成
 1

Slide 2

Slide 2 text

今回の私のロール ❏ トレーナー3割エンジニア7割 ● 今回は3割がトレーナーの私、7割がエンジニアとしての私です

Slide 3

Slide 3 text

このセッションで得られること ❏ Google Cloud Infra Manager基礎情報 ❏ 生涯に通じる健康知識(病気予防)

Slide 4

Slide 4 text

今回の目次 ❏ IaCとは(30秒) ❏ Terraformとは(30秒) ❏ Infrastructure Manager とは(8分) ❏ 今こそ健康のIaC化をするときが来ました(6分)

Slide 5

Slide 5 text

自己紹介 ● アライアンス事業部 エンジニアグループ ● Google Cloudのリセール周りを担当 ● 趣味:筋トレ、野良猫探索、格闘技
 ● クラウド資格
 ○ Google Cloud9個、Azure8,9個、AWS1 個
 ● Google Cloudトップエンジニア 2024
 ● トレーナー歴4年
 ○ マジ筋トレ歴6年以上
 ○ NSCA CSCS


Slide 6

Slide 6 text

自己紹介 ● アライアンス事業部 エンジニアグループ ● Google Cloudのリセール周りを担当 ● 趣味:筋トレ、野良猫探索、格闘技
 ● クラウド資格
 ○ Google Cloud9個、Azure8,9個、AWS1 個
 ● トレーナー歴4年
 ○ マジ筋トレ歴6年以上
 ○ NSCA CSCS


Slide 7

Slide 7 text

IaC(Infrastructure as Code)とは

Slide 8

Slide 8 text

IaCとは ❏ IaC(Infrastructure as Code)とは IaCは、ITインフラストラクチャの定義とそのプロビジョニングを自動化する ための方法です。 ❏ Google Cloudの場合 Terraform(Infrasturacture Manager)、DeploymentManager、 CDK、が存在します。

Slide 9

Slide 9 text

Terraformとは

Slide 10

Slide 10 text

Terraformとは ❏ Terraformとは Google Cloudのみならず、多くのクラウドプロバイダー(AWS, Azureな ど)と互換性があります。これにより、マルチクラウド環境を管理するため の一元化したツールとしても使用することができます。 宣言的なコード: Terraformは宣言的な構文を記述することにより、あるべ き状態を定義します。よって、環境の複製や差分などをより簡素化して管 理することも可能です。

Slide 11

Slide 11 text

Google Cloud × Terraform resource "google_compute_network" "default" { name = "my-network" } resource "google_compute_subnetwork" "default" { name = "my-subnet" ip_cidr_range = "10.0.0.0/16" region = "us-central1" network = google_compute_network.default.id } resource "google_compute_address" "internal_with_subnet_and_address" { name = "my-internal-address" subnetwork = google_compute_subnetwork.default.id address_type = "INTERNAL" address = "10.0.42.42" region = "us-central1" } グローバルVPC リージョナルサブネット

Slide 12

Slide 12 text

Infrastructure Managerとは

Slide 13

Slide 13 text

Infrastructure Manager(Infra Manager)とは
 ❏ Infrastructure Manager(Infra Manager)とは ● Infra ManagerはGoogle Cloudエコシステム内で完全に統合されており、リソースの プロビジョニング、構成、管理を行うために 特別に設計されているGCP 専用の IaC ツール ● Terraform仕組みを使用して、GCP環境のリソースのデプロイと管理を自動化す る。

Slide 14

Slide 14 text

Infra Manager for Terraform
 ❏ ステートの管理 ● Git リポジトリまたはCloud Storage バケットでバージョン管理 ● Infra Manager を使用して、インフラストラクチャ展開を リビジョンで更新 リビジョンは展開のバージョンです。最初にデプロイメントを作成するとき、この デプロイメントもリビジョンであり、リビジョン ID が付けられます(例)r-0

Slide 15

Slide 15 text

Infra Managerの役割
 1. インフラストラクチャ管理 TerraformとIaCアプローチを用いた簡便で標準化されたデプロイワークフローの自動化 2. リソースライフサイクル管理 Terraformの状態管理機能を利用したインフラストラクチャ変更の監査と管理。 3. 合理化されたIaC 再利用可能なTerraformモジュールと組み合わせたGoogle Cloudリソースの簡易なプロビ ジョニングと管理 4. Google Cloudエコシステムとの統合 他のGoogle Cloud製品やサービスとの統合によるインフラストラクチャ管理の強化

Slide 16

Slide 16 text

Infra Managerの役割
 ❏ 合理化されたIaC ● Infrastructure ManagerでGoogle Cloudリソースの管理を簡素化できる ● Terraformのモジュールとジャンプスタートソリューションを使って、GCEやGCSバケット、など 対応している多様なリソースも簡単にセットアップできる ● これら全てをInfrastructure Managerが管理してくれるので、自動化や依存関係の心配は不 要 ● 時間とコストを節約し、チームの生産性を大幅に向上させることができ結果として、既存のイン フラストラクチャ設計や運用の改善に直結する

Slide 17

Slide 17 text

実際のデモ gcloud services enable config.googleapis.com gcloud iam service-accounts create サービスアカウントID gcloud projects add-iam-policy-binding プロジェクトID --member="serviceAccount:サービスアカウント [email protected]" --role=roles/config.agent APIを有効化 サービスアカウントの作成 サービスアカウントにロールを付与( Infra Manager の実行に必要な権限)

Slide 18

Slide 18 text

実際のデモ 新しく作成したプロジェクトへ請求サブアカウントを紐づける gcloud billing projects link プロジェクトID --billing-account=請求アカウントID

Slide 19

Slide 19 text

実際のデモ VPCに対する操作権限を付与 gcloud projects add-iam-policy-binding test-inframanager \ --member=serviceAccount:サービスアカウント[email protected] \ --role=roles/compute.networkAdmin

Slide 20

Slide 20 text

実際のデモ VPCのデプロイメント gcloud infra-manager deployments apply projects/test-inframanager/locations/us-central1/deployments/quickstart-deployment \ --service-account=projects/test-inframanager/serviceAccounts/サービスアカウント [email protected] \ --git-source-repo=https://github.com/terraform-google-modules/terraform-google-network \ --git-source-directory=modules/vpc \ --git-source-ref=master \ --input-values=project_id=プロジェクトID,network_name=リソース名

Slide 21

Slide 21 text

実際のデモ --git-source-repo と -git-source-directory terraform-google-network ├── modules │ ├── vpc │ │ └── main.tf │ └── compute │ └── main.tf └── README.md gcloud infra-manager deployments apply 〜省略〜 --git-source-repo=https://github.com/terraform-google-modules/terraform-google-network --git-source-directory=modules/vpc terraform-google-networkレポジトリの、modulesディレクトリ配下にあるVPCを利用

Slide 22

Slide 22 text

実際のデモ 変数の定義 --input-values=project_id=プロジェクトID,network_name=リソース名

Slide 23

Slide 23 text

実際のデモ VPCが作成される

Slide 24

Slide 24 text

実際のデモ 自動的にステートを管理するGCSバケットが作成される

Slide 25

Slide 25 text

実際のデモ gcloud infra-manager deployments describe projects/prj-inframanager/locations/us-central1/deployments/quickstart-deployment 状態などの情報を確認

Slide 26

Slide 26 text

実際のデモ createTime: '2023-12-15T02:16:03.203871397Z' latestRevision: projects/prj-inframanager/locations/us-central1/deployments/quickstart-deployment/revisions/r-0 lockState: UNLOCKED name: projects/prj-inframanager/locations/us-central1/deployments/quickstart-deployment serviceAccount: projects/prj-inframanager/serviceAccounts/test-inframanager-account@prj-inframanager.iam.gserviceaccount.com state: ACTIVE stateDetail: revision "projects/prj-inframanager/locations/us-central1/deployments/quickstart-deployment/revisions/r-0" applied terraformBlueprint: gitSource: directory: modules/vpc ref: master repo: https://github.com/terraform-google-modules/terraform-google-network inputValues: network_name: inputValue: quickstart-vpc project_id: inputValue: prj-inframanager updateTime: '2023-12-15T02:17:08.806501895Z' デプロイ情報

Slide 27

Slide 27 text

実際のデモ gcloud infra-manager resources list --revision=projects/プロジェクト ID/locations/us-central1/deployments/quickstart-deployment/revisions/REVISION_ID VPC自体の情報を確認

Slide 28

Slide 28 text

実際のデモ gcloud infra-manager deployments delete projects/prj-inframanager/locations/us-central1/deployments/quickstart-deployment VPCを削除

Slide 29

Slide 29 text

Infra Managerのメリット
 gcloudコマンドのみで、Infra Managerの機能を操作できる Terraformの構文を覚える必要がないため、初心者でも簡単に始められる Google Cloudの各種機能とシームレスに連携できるため、より効率的なインフラ 管理が可能 Infrastructure Managerは既存のTerraform機能を利用するが、GCPリソースとの 統合や専用の機能強化を備えた、改良版またはGCP専用のマネージドサービスと 考えられる

Slide 30

Slide 30 text

Infra Managerのまとめ
 今回使用した公式ドキュメント https://cloud.google.com/infrastructure-manager/docs/deploy-vpc-with-terrafo rm?cloudshell=true

Slide 31

Slide 31 text

今こそ健康のIaC化をする時が来ました

Slide 32

Slide 32 text

健康のスライド
 まずは基礎代謝と活動代謝を計算して、 1日に必要なKcalを計算しましょう。 基礎代謝&活動代謝計算サイト https://keisan.casio.jp/exec/user/1671632573 基礎代謝=何も動かずに過ごしても消費する Kcal 活動代謝=動いた時に消費した Kcal(運動や日常生活...etc)

Slide 33

Slide 33 text

健康のスライド
 ダイエットやボディメイクは、その日の基礎代謝と活動代謝を元 に食事量を調整するのがベターです。

Slide 34

Slide 34 text

健康のスライド ❏ 皆さんへ健康のテンプレート用意しました(食事のIaC)

Slide 35

Slide 35 text

健康のスライド-食事編 ● 起床〜出勤 ○ 起床 6:30 ○ ブラックコーヒー or 微糖を飲む(ほぼ0kcal) 6:35 ○ 準備&支度〜出勤 6:45~7:45 1時間 ■ 通勤&支度などの日常生活を有酸素運動にして脂肪燃焼 ○ 朝食 プロテイン(100kcal P20)+400kcalの食べ物 = 500kcal 7:45〜8:00 ○ 昼食 プロテイン(100kcal P20)+400kcalの食べ物 = 500kcal 12:00~13:00 ○ 間食 プロテイン(100kcal P20)=タンパク質の補給    15:00 ○ ここまでで1100kcal ○ 夜食 タンパク質含む食事 (P20) 500kcal~1000kcal ○ 合計1600kcal(在宅日)〜2100kcal(出社日) ダイエット=健康じゃないよね?? いえ、適正な食事量を保つことで身体の炎症や不調 は改善します

Slide 36

Slide 36 text

健康のスライド
 ❏ 適切なカロリーとPFCバランスにより、健康も筋肉も成長させる ことができます。 ❏ (例)P20% C50% F30% 1000kcalなら、P60g C125g F35g 今回は筋トレよりかは、ダイエットと健康に焦点の たタンパク質は少なめ

Slide 37

Slide 37 text

健康のスライド-運動IaC編 ● 基本食べる前に運動 ○ 血糖値の上昇を防ぐ=体脂肪増加や糖尿病になりにくい ○ 筋トレ → お風呂 → 食事(筋トレから30分後の栄養摂取) ● 運動前にカフェインを摂取する ○ ブラックコーヒーor微糖を飲む(なるべく 0kcalのものを選定) ○ モンスター0やレッドブル0でも可(ただしたまにがおすすめ) ● 日常の活動を有酸素運動として活用する ○ 基本早歩き ○ 階段を選ぶ→足裏の母子球で爆発的に蹴る=速筋繊維が刺激される ○ 電車はなるべく立つ→内腿を意識して下腹部に力を入れて姿勢よく立つ 実は消費Kcalが高く見込めるのは 筋トレ < 日常の運動

Slide 38

Slide 38 text

Thank you for Muscle for Infra Manager