普段GCPにてシステムを運用しています。
これからの新規システムやリプレース等でもGCPの採用が多くなると思っています。
その為、面倒な環境構築を自動化 及び メンテナンスを簡易にする為に
Terraform・Terrafomerというツールを利用していきたいと思います。
※terraformにてプロジェクトを作成するのは面倒なので
あらかじめ作成しておきます。(My Project)
○ 読者対象
・GCP初心者
・GCPをこれから使おうと思っている方
1.TerraformのダウンロードおよびPath設定(windows) 所要時間:3分
公式ページ より各OSでの設定が記載されています。
私の環境はWindows 64bitですので、64bitをクリックしダウンロードします。
※2020/02/19現在 terraform_0.12.20_windows_amd64.zip
Windows10では以下Pathの通っている場所が元々あった為
そこにzip内のterraform.exeを追加します。
C:\Users\ユーザ名\AppData\Local\Microsoft\WindowsApps
2.ユーザ設定(windows) 所要時間:5~10分
Cloud SDK をWindowsにインストールしている前提で進みます。
私事ですが、普段使っているユーザは使いたくない為
以下コマンドでユーザを切り替え・確認します。
・アカウントの切り替え gcloud auth login →ブラウザが起動され、今回利用するユーザを選択 ・プロジェクトの選択 gcloud config set project <プロジェクトID> ・切り替え後の確認 gcloud config list →accountの値を確認 →regionとprojectの値は後々利用します
今回以下のAPIをCloudコンソールの「APIとサービス」→「ライブラリ」から
有効にする必要があるのですが、クレジットカードを登録しないと有効にできない為
無料トライアルを登録し、有効にします。
・Google Compute Engine API
・Cloud Resource Manager API
次にサービスアカウントの秘密鍵を生成します。
「IAMと管理」→「サービスアカウント」にて「Compute Engine default service account」の「鍵を作成」を実行します。
(test.jsonとします)
3.定義ファイルの作成(tfファイル) 所要時間:5分~10分
公式ページ のProvidersから「Google Cloud Platform」を選択します。
ファイルの書式や書き方等が書いてあります。
・対象インフラサービス provider "google" { credentials = file("./test.json") サービスアカウントの秘密鍵 project = "my-project-id" GCPプロジェクトID region = "asia-northeast1" リージョン }
Provider以降はProvider Configuration Referenceを等を参考に入力していきます。
今回はプロジェクト内にGCEを作成します。※最低限な設定にしています。
resource "google_compute_instance" "default" { name = "test" machine_type = "f1-micro" zone = "asia-northeast1-b" boot_disk { auto_delete = true initialize_params { image = "ubuntu-os-cloud/ubuntu-1804-lts" size = 10 type = "pd-standard" } } network_interface { network = "default" } }
ひとまずこれで作成し、実行ディレクトリを作成・ファイルを移動します。
mkdir terraform cd terraform start . →test.tfファイルと2でダウンロードしたJSONの秘密鍵(test.json)をコピー
4.terraformコマンドの実行 所要時間:3分
terraform init 初期化 terraform plan 計画 上記問題なければ、以下で実行 terraform apply →yesを入力し実行
「Compute Engine」→「VMインスタンス」にて確認ができます。
今回、利用してみて個人的には初回はCloudコンソールで細かく構築し
その後Terrafomerで既存設定の出力→メンテナンス
または、その設定ファイルを基にTerraformで複製等を行う
のが良いと思いました。
※学習コスト削減の為
ここまでお読みいただきありがとうございました。