[Qwiklabs]Deployment Managerを使用したファイアウォールと起動スクリプトの構成

スポンサーリンク
GCP
当サイトではアフィリエイト広告を利用しています

こんにちは、こえじまです。

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のインストールスクリプトです。

boot.sh

install-web.sh

こちらもApache2のインストールスクリプトです。

qwiklabs.jinjaでstartup-script-urlの対象となっています。

install-web.sh

qwiklabs.yaml

テンプレートの呼び出しファイルです。

qwiklabs.yaml

vm-testというGCEをデプロイするテンプレートと、Firewallルールを1つ作成するテンプレートが入っています。

qwiklabs.jinja

qwiklabs.yamlから呼び出されるvm-testの構成ファイルです。

vm-testのインスタンス詳細を定義しています。

qwiklabs.jinja

qwiklabs.jinja.schema

テンプレートのメタデータ定義ファイルです。

今回は何も編集しません。

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-scriptstartup-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″]

コメント

  1. 匿名 より:

    startup-scriptのところ、sudo su -を入れているとエラーになりましたので報告します。

タイトルとURLをコピーしました