チェックポイント
Create a service account and a key (SA Name: terraform)
/ 10
Grant your Service Account the Owner role on your project
/ 20
Create and configure a GCS bucket
/ 10
Run Terraform for the first time
/ 10
Add a subnet
/ 10
Allow https traffic
/ 10
Create an image from the boot disk
/ 10
Deploy the VM using Terraform
/ 20
VM の移行: 計画
- GSP616
- 概要
- 設定と要件
- タスク 1. 環境を設定する
- タスク 2. 変数を設定する
- タスク 3. Google Cloud のアクセス認証情報を設定する
- タスク 4. リモート状態を設定する
- タスク 5. Terraform を実行する
- タスク 6. サブネットを追加する
- タスク 7. HTTPS トラフィックを許可する
- タスク 8. Terraform 出力を追加する
- タスク 9. 最初の VM を作成する
- タスク 10. ベースイメージをキャプチャする
- タスク 11. Terraform 構成を更新する
- タスク 12. Terraform を介して VM をデプロイする
- タスク 13. アプリケーション VM を更新する
- タスク 14. インフラストラクチャを破棄する
- まとめ
GSP616
概要
Google Cloud のクラウド移行パス方法論は、次の 4 ステップで構成されており、ユーザーを成功に導く明確で再現性のある移行方法を提供します。
-
評価: 現在の環境を評価して、既存のリソースを確実に把握し、移行の移動グループを定義します。
-
計画: アプリをどのように移行するか、対応すべきワークロードを処理できる基本的なクラウド インフラストラクチャをどのように構築するかをプランニングします。たとえば、ID 管理、組織とプロジェクトの構造、ネットワーキング、アプリの分類、優先度に従った移行戦略などを計画します。
-
デプロイ: Google の Velostrata や CloudEndure のライブ マイグレーション ツールなど、Google Cloud の推奨移行ツールのいずれかを活用して、既存のオンプレミス サーバーまたはクラウドベース サーバーを Google Cloud にデプロイします。
-
最適化: 新しく移行したワークロードを最適化して、Google Cloud による費用上のメリットや運用効率を最大限に引き出します。
このラボでは、計画フェーズと、基本的なインフラストラクチャを Google Cloud にデプロイする方法について詳しく学習します。
学習内容
Terraform は、インフラストラクチャを定義およびプロビジョニングする(Infrastructure as Code)ための一般的なオープンソース ツールです。このラボでは、事前に構築された Infrastructure as Code テンプレートを活用して、クラウド ネットワークの設定、アクセスの設定、最初のアプリケーションのデプロイを安全かつ自動化された方法で行います。
具体的には、次の方法について学びます。
- Google Cloud で自動化のためのアクセス認証情報を作成する。
- Terraform を使用するための機能環境を作成する。
- 関連するファイアウォール ルールを使用して、カスタムモードの Virtual Private Cloud(VPC)ネットワークを作成する。
- Compute Engine でイメージを作成する。
- Terraform を使用してインスタンスを Compute Engine にデプロイする。
- 複数の Terraform デプロイメントでリソースを参照する。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. 環境を設定する
- Terraform が Cloud Shell 環境にインストールされていることを確認します。
コマンド出力:
- 次のコマンドを実行して、ラボコードを含む git リポジトリのクローンを作成します。
- 現在のディレクトリをネットワーキング ディレクトリに変更します。
タスク 2. 変数を設定する
このセクションでは、Terraform 構成の変数を設定します。変数により、Terraform 構成をパラメータ化して再利用できます。
変数が設定されていない場合、Terraform の実行時に変数を設定するように求められます。
変数値は、Terraform の実行時に自動的に読み込まれる terraform.tfvars
ファイルに保存できます。
- Cloud Shell で
terraform.tfvars
ファイルを作成します。
- コードエディタで
terraform.tfvars
ファイルを開きます。
vi
や nano
などの CLI コードエディタを使い慣れている場合は、それらを使用することもできます。- 以下を
terraform.tfvars
ファイルに貼り付けます。
- コマンドの <プロジェクト ID> は Qwiklabs のプロジェクト ID に置き換えてください。たとえば、
<プロジェクト ID>
をqwiklabs-gcp-xx-xxxxxxxxxxxx
に置き換えます。
タスク 3. Google Cloud のアクセス認証情報を設定する
このセクションでは、Google Cloud のアクセス認証情報として使用するサービス アカウント キーを作成してダウンロードします。また、これらのアクセス認証情報を使用するようにテンプレート ファイルを更新します。
Terraform を使用するには、Google Cloud のプロジェクトや環境へのアクセス権が必要です。Terraform Google Cloud プロバイダでは認証情報を指定する方法が複数ありますが、このラボでは、Google Cloud サービス アカウントに関連付けられた認証情報ファイルを作成してダウンロードします。Google Cloud サービス アカウント認証を使用するのが、おすすめの方法です。
デフォルトのサービス アカウント アクセス認証情報を作成してダウンロードする
- Cloud Shell セッションで次のコマンドを実行して、Terraform を実行するためのサービス アカウントを作成します。
コマンド出力:
- サービス アカウントを一覧表示して、新しい Terraform アカウントのメールアドレスを取得します。
コマンド出力:
- Terraform サービス アカウントを使用するためのキーを作成してダウンロードします。
<サービス アカウントのメールアドレス>
は、前のコマンドで出力された Terraform のメールアドレスに置き換えてください。
コマンド出力:
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。サービス アカウントおよびキーが正常に作成された場合は、評価スコアが表示されます。
- 次のコマンドを実行して、プロジェクトに対するオーナーのロールをサービス アカウントに付与します。
<プロジェクト ID>
は Qwikalbs のプロジェクト ID に、<サービス アカウントのメールアドレス>
は terraform サービス アカウントのメールアドレスに置き換えてください。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。プロジェクトに対するオーナーのロールがサービス アカウントに正常に付与された場合は、評価スコアが表示されます。
タスク 4. リモート状態を設定する
Terraform では、構成と作成されたリソースとの間のマッピングが Terraform の状態に保存されます。この状態はデフォルトでローカル ファイルに保存されますが、Cloud Storage にリモートで保存することをおすすめします。
このセクションでは、Terraform の状態を保存する Cloud Storage バケットを作成し、このバケットを指すように Terraform 構成を更新します。
Cloud Storage バケットを作成して構成する
- Terraform の状態を保存するための新しいバケットを作成します。Cloud Storage バケットはグローバルに一意である必要があるため、下のコマンドに示されているように、Qwiklabs の Google Cloud プロジェクト ID を名前の前に付けてください。
コマンド出力:
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。Cloud Storage バケットが正常に作成されている場合は、評価スコアが表示されます。
-
backend.tf
に保存されているバックエンド構成を開きます。
- 設定した名前と一致するようにバケット名を更新し、ファイルを保存します。
タスク 5. Terraform を実行する
認証情報とリモート状態を設定したので、いつでも Terraform を実行できます。次の図に示されているように、Terraform を使用する場合は通常、以下の手順に沿って環境をデプロイしてクリーンアップします。
Terraform を初めて実行する
- まず、Terraform を初期化して、Google および Random プロバイダの最新バージョンをダウンロードします。そのためには、Cloud Shell で次のコマンドを実行します。
- このコマンドの実行時に Cloud Storage バケットが存在しないというエラーが表示された場合は、backend.tf が正しい名前であることを確認してください。その後、下のコマンドを実行します。
これにより、ローカルの Terraform の状態がクリーンアップされ、正常に初期化されます。
- plan ステップを実行して構成の構文を検証し、作成される内容のプレビューを表示します。
plan の出力で、Terraform がネットワーク用に 8 つのリソースを作成することが示されます。
- 次に、terraform apply を実行して、これらの変更を適用します。
次のような出力が表示されます。
- プロンプトに「yes」と入力します。適用が終了すると、次のような出力が表示されます。
- 変更の適用後、show コマンドを使用して、Terraform の状態に含まれているリソースのリストを表示できます。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。Terraform の初回実行が正常に完了した場合は、評価スコアが表示されます。
タスク 6. サブネットを追加する
ダウンロードしたリポジトリには、ネットワークとサブネットを定義するモジュールが含まれています。移行された VM をホストするためのサブネットを新たに追加します。
追加のネットワークを作成する
-
network.tf
に保存されているネットワーク構成を開きます。このファイル内のネットワーク構成は、ネットワーク モジュールを使用して管理します。
- ファイルの
subnets
ブロックに追加のサブネットを書き加えます(40 行目)。10.10.30.0/24
など、独自の名前と CIDR 範囲を選択できます。
- また、サブネットのセカンダリ範囲を定義するセクションを追加する必要があります(49 行目)。これは空のリストにすることもできます。
- terraform apply を実行して、新しいサブネットを追加します。
Error waiting to create Subnetwork
」というエラーが表示された場合は、上記のコマンドを再実行してください
次のような出力が表示されます。
- プロンプトに「yes」と入力します。適用が終了すると、次のような出力が表示されます。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。Terraform スクリプトを使用してサブネットを追加するための変更が正常に適用された場合は、評価スコアが表示されます。
タスク 7. HTTPS トラフィックを許可する
このラボには、Terraform でファイアウォール ルールを管理するためのコードが含まれています。このコードを拡張して、受信トラフィックまたは送信トラフィックに関するファイアウォール ルールを追加できます。
-
firewall.tf
に保存されているファイアウォールの設定を開きます。
-
allow-http
ルールを編集して、ポート 443 上の HTTPS トラフィックも許可します(51 行目)。
- terraform apply を実行して、ファイアウォール ルールを更新します。
次のような出力が表示されます。
- プロンプトに「yes」と入力します。適用が終了すると、次のような出力が表示されます。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。Terraform スクリプトを使用してファイアウォール ルールを更新するための変更が正常に適用された場合は、評価スコアが表示されます。
タスク 8. Terraform 出力を追加する
Terraform 出力を使用すると、環境に関する非常に重要で有用な情報をキャプチャして、人間と機械の両方が利用できます。これには、主要な IP アドレス、インスタンス名などの情報が含まれることもあります。
このセクションでは、新しいサブネットの ID を共有するための出力を追加します。
-
outputs.tf
に保存されているネットワーク構成を開きます。
- 既存の出力に基づいて、新しいサブネットの名前を出力するセクションを追加します。サブネットにはゼロから始まる番号が付けられることに注意してください。
- terraform apply を実行して、ファイアウォール ルールを更新します。
-
値を入力するように求められたら、「yes」と入力します。
-
terraform output コマンドを使用して出力を確認します。
コマンド出力:
タスク 9. 最初の VM を作成する
VM を作成してネットワークにデプロイすることにより、これまでに完了した作業を拡張します。また、ベースイメージを作成し、VM の構成情報を動的に階層化する方法についても学びます。
イメージを作成するには、最初に、イメージに含めるソフトウェアのインストール先となる VM を起動する必要があります。
最初の VM を起動する
- 最初のサブネットワークで
gcloud
を使用して VM を起動します。
- VM に SSH 接続します。
コマンド出力:
-
「Y」と入力し、パスフレーズの入力を求められたら Enter キーを 2 回押します。
-
Apache を VM にインストールします。
- SSH セッションを終了します。
タスク 10. ベースイメージをキャプチャする
必要なソフトウェアを実行するマシンが用意できたので、そのマシンをベースイメージとしてキャプチャして、追加の同一の仮想マシンをスピンアップできます。
イメージを作成する
- VM を停止します。できるだけ、VM を停止してからイメージをキャプチャするようにしてください。
- ブートディスクからイメージを作成します。
ここでは、family
パラメータを含めて、イメージをファミリーに結び付けています。これにより、そのファミリーから簡単に情報を取得したり、最新のイメージをデプロイしたりすることができます。
- gcloud を使用して、最新の
my-apache-webserver
イメージに関する情報を取得します。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。ブートディスクからイメージが正常に作成された場合は、評価スコアが表示されます。
タスク 11. Terraform 構成を更新する
基となるイメージが用意できたので、Terraform を介してこのイメージをデプロイします。ただし、おすすめの方法は、Terraform 構成を論理単位に、VM インスタンスをアプリケーション層項目に分離することです。
そのため、新しいアプリケーション固有の Terraform 構成に切り替えてそこで更新を行い、ネットワーキング Terraform はそのままにします。
アプリケーション用の Terraform 構成を設定する
- Cloud Shell のアプリケーション ラボ ディレクトリに切り替えます。
- ネットワーキング構成から認証情報と変数ファイルをコピーします。
-
backend.tf
を編集して、アプリケーション用の Terraform コードのバックエンド構成を更新します。
- Terraform リモート状態のデータソースも更新する必要があります。Terraform リモート状態は、複数のプロジェクト間で情報や出力を共有するのに役立ちます。たとえば、中央ネットワーキング チームがアプリケーション チームとサブネット情報を共有する場合などに非常に便利です。ここでは、前に使用したバケットと一致するようにバケット設定を更新してください。
タスク 12. Terraform を介して VM をデプロイする
これで、インスタンスを起動するために作成したイメージを指すように Terraform を設定できます。インスタンスを起動する前に、この Terraform 構成の詳細を調べてみましょう。
VM 構成を確認する
- VM の Terraform 構成は vm.tf に保存されています。
- 目的のイメージをイメージ ファミリーにタグ付けしたため、Terraform によってそのファミリーから最新のイメージを取得できます。必要に応じて、指定したイメージ ファミリー名と一致するようにこのデータソースを更新します。
- また、参照を使用して、デプロイ先のサブネット名を選択することもできます。
data.terraform_remote_state.network.my_subnet_name
の宣言では、前に作成したネットワーキング構成からmy_subnet_name
の出力が自動的に取得されます。
- この構成ですべてが適切であれば、Terraform を使用して VM をデプロイできます。
- 値を入力するように求められたら、「yes」と入力します。
VM の外部 IP が出力されます。
- ウェブブラウザで http://<自分の IP アドレス> を開いて、ウェルカム メッセージを確認します。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。Terraform を使用して VM インスタンスが正常にデプロイされた場合は、評価スコアが表示されます。
タスク 13. アプリケーション VM を更新する
Terraform を介して VM 構成を定義することにより、Terraform 構成を微調整するだけで、アプリケーションの構成を宣言的に変更できます。
- vm.tf ファイルを開きます。
- 新しいウェルカム メッセージが表示されるように
metadata_startup_script
を変更します。
- Terraform を実行して、新しい構成で VM を再作成します。
- 値を入力するように求められたら、「yes」と入力します。
次のような出力が返されます。
- VM が完全に再作成された後、ウェブブラウザで http://<自分の IP アドレス> を開いて、新しいウェルカム メッセージを確認します。
terraform apply
」を再度入力します。タスク 14. インフラストラクチャを破棄する
Terraform 構成を使用すると、インフラストラクチャを使い終わった後に簡単に破棄することもできます。これは、一時的な開発やテスト用のインフラストラクチャに特に役立ちます。
VM 構成を更新する
- Terraform を介して VM インフラストラクチャを破棄します。
VM の破棄を確認するメッセージが表示されます。
- 値を入力するように求められたら、「yes」と入力します。
「yes」と入力すると、Terraform によってインフラストラクチャの破棄が開始されます。
- ネットワーキング インフラストラクチャもいつでも破棄できます。ネットワーキング インフラストラクチャは、ラボの有効期限が切れると自動的に破棄されます。
まとめ
これで、セルフペース ラボ「データセンターの移行: 自動化された基盤とデプロイ」は終了です。このラボでは、Google Cloud でネットワーク リソースのデプロイを自動化するワークフロー全体を完了しました。アクセス認証情報の設定、Terraform の設定、VPC ネットワーク、サブネット、ファイアウォール ルールなどのリソースの作成、既存のリソースの変更、それらのリソースの機能に関する十分な確認、およびその出力を行いました。
また、最初の VM の作成方法、ベースイメージのキャプチャ方法、Terraform 構成の更新方法、Terraform による VM のデプロイ方法についても学びました。
クエストを完了する
このセルフペース ラボは、「VM Migration」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、次のクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能な全クエストについては、Google Cloud Skills Boost カタログをご覧ください。
次のラボを受講する
Migrate for Anthos: Qwik Start に進んでクエストを続けるか、別の Google Cloud Skills Boost ラボ(VM の移行: StratoZone の評価の概要など)をご確認ください。
次のステップと詳細情報
さらに知識を深めるには、Terraform での管理に使用できる次のリソースをご覧ください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 12 月 8 日
ラボの最終テスト日: 2023 年 12 月 8 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。