こんにちは、こえじまです。
GCPのProfessional Cloud Architect受験に向け、Qwiklabsのハンズオンを勉強中です。
今回はDeployment Managerを使用したファイアウォールと起動スクリプトの構成(GSP302)の解説をします。
シナリオ(抜粋)
あなたはDeployment Managerのテンプレート開発を依頼されました。
手元には、既存の基本的なDeployment Managerテンプレートがありますが、このテンプレートでは単一のComputeインスタンスをデプロイすることしかできません。
では、やっていきましょう。
事前準備
Cloud Shellを開き、問題文に指定がある通り必要なファイルをダウンロードします。
# deployment_managerフォルダを作成
mkdir deployment_manager
# deployment_managerフォルダに移動
cd deployment_manager
# Deployment ManagerテンプレートをGCSよりダウンロード
gsutil cp gs://spls/gsp302/* .
ダウンロードされるのは以下の5ファイルです。
- boot.sh
- install-web.sh
- qwiklabs.jinja
- qwiklabs.jinja.schema
- qwiklabs.yaml
boot.sh
Apache2のインストールスクリプトです。
install-web.sh
こちらもApache2のインストールスクリプトです。
qwiklabs.jinjaでstartup-script-urlの対象となっています。
qwiklabs.yaml
テンプレートの呼び出しファイルです。
vm-testというGCEをデプロイするテンプレートと、Firewallルールを1つ作成するテンプレートが入っています。
qwiklabs.jinja
qwiklabs.yamlから呼び出されるvm-testの構成ファイルです。
vm-testのインスタンス詳細を定義しています。
qwiklabs.jinja.schema
テンプレートのメタデータ定義ファイルです。
今回は何も編集しません。
Task1. Deployment Managerテンプレートを変更して、受信HTTPトラフィックを許可するタグ付きファイアウォールルールを作成する
クリア条件は、httpというタグをTargetとしたTCP:80宛てのトラフィックを許可するファイアウォールルールをDeployment Manager経由で作成することです。
qwiklabs.yamlにすでにファイアウォールルールがあるので、そのルールのタグを変えるだけで大丈夫かと思いきや、試験クリア条件はqwiklabs.jinjaにファイアウォールルールの定義があることなので注意しましょう。
qwiklabs.yamlから以下行を削除し、
# Create the firewall rule
- name: tcp-firewall-rule
type: compute.v1.firewall
properties:
sourceRanges: ["0.0.0.0/0"]
targetTags: [ web-server ]
allowed:
- IPProtocol: TCP
ports: [80]
- IPProtocol: TCP
ports: [22]
qwiklabs.jinjaに以下行を追加します。
# Create the firewall rule
- name: tcp-firewall-rule
type: compute.v1.firewall
properties:
sourceRanges: ["0.0.0.0/0"]
targetTags: [ http ]
allowed:
- IPProtocol: TCP
ports: [80]
Task2. Deployment Managerテンプレートを変更して、Computeインスタンスに起動スクリプトを追加する
続いて起動スクリプトを追加します。
起動スクリプトはstartup-script
とstartup-script-url
があるのですが、今回はstartup-script
を採用します。
startup-script-url
でGCSのinstall-web.shを指定してもApacheのインストールはされます。(実際に試して確認しています。)
しかし残念ながらstartup-script-url
ではQwiklabsの試験がクリアになりません。
ということで、qwiklabs.jinjaに以下の行を、
metadata:
items:
- key: startup-script-url
value: gs://spls/gsp302/boot.sh
以下のように書き換えましょう。
metadata:
items:
- key: startup-script
value: |
#!/bin/bash
apt-get update
apt-get install -y apache2
Task3. Deployment Managerテンプレートを変更して、インスタンスへの受信HTTP トラフィックを許可するファイアウォールルールタグを追加する
Qwiklabs.jinjaのnetwork tag部分を変更しましょう。
以下のようにtagがweb-serverとなっているので、
tags:
items:
- web-server
httpに書き換えます。
tags:
items:
- http
Task4. 構成をデプロイする
作成したテンプレートをデプロイしましょう。
# Deployment Managerにてテンプレートから構成をデプロイ
gcloud deployment-manager deployments create vm-test --config=./qwiklabs.yaml
何か間違えたり、不足があった場合は一旦Deployment Managerから削除してからもう一度作り直しましょう。
# Deployment Managerから削除
gcloud deployment-manager deployments delete vm-test
[aside type=”warning”]注意
何か変更を加える場合は既存のDeployment Managerテンプレートを削除しないと、リソース量の問題でアカウントがロックされる可能性があります。
必ず上記コマンドで削除してから、再構成しましょう。
[/aside]
Apache2が起動するまでには少し時間がかかるのでDeployment Managerでのデプロイが完了してもすぐにはクリアになりません。
1分ほど待つとApache2が起動し、全タスク完了です。
お疲れさまでした!
このラボが含まれる、Cloud Architecture: Design, Implement, and Manageのクエスト解説は次の記事でまとめています。
良かったらそちらもご覧ください。
[kanren2 postid=”2317″]
コメント
startup-scriptのところ、sudo su -を入れているとエラーになりましたので報告します。
匿名さん
ご指摘ありがとうございます。公式でもsudo su -は入っていませんでしたね。
記事を修正しました。
https://cloud.google.com/compute/docs/startupscript?hl=ja