### [GCP自動化講習会(ハンズオン)] # 「Google Cloud Deployment Manager による動的サイトの自動構築」 ## 概要 > Google Cloud Deployment Manager は、Google Cloud リソースの作成と管理を自動化するインフラストラクチャ デプロイ サービスです。柔軟なテンプレートファイルと構成ファイルを作成し、それらを使用して、VPC、Compute Engine、Cloud SQL などのさまざまな Google Cloud サービスを連携させるように構成されたデプロイを作成します。 > > [Google Cloud Deployment Manager のドキュメント](https://cloud.google.com/deployment-manager/docs?hl=ja#docs) より ## 目的 当講習会ではGoogle Cloud Deployment Manager およびCloud Shellを使用し、従来、個別に作成していたネットワークやインスタンス等のリソースを、自動で作成する仕組みを学習します。 ## 前提事項 * [構成図スライド](https://hackmd.io/@nakajima-20220524/SkMLwrl83#/) の構成を元に環境を構築します。 ## 必須環境 * Microsoft Windows、Mac OS(X以降)が搭載されているノートパソコンまたはデスクトップパソコンで、インターネットアクセスができること * Microsoft Windowsユーザの場合は、コンピュータ管理者権限が付与されていること * インターネットブラウザは以下のいずれかのブラウザを利用すること Chrome, Firefox, Edge, Safari ## 注意事項 * <B><font color="red">Googleにプライベートアカウントでログインしている場合は、本講習会前に必ずログアウトをお願いします。 ※GCPアカウントはGoogleアカウントと紐づいているため</font> * GCPの [無料枠](https://cloud.google.com/free) でリソースを作成します。 * リソースの起動時間によって、無料枠を越えて使用した場合は課金が発生する可能性があります。 * 受講で利用しているGCPアカウントは、本講習内のみ有効とします。受講日以外ではログインできないようアクセス制限をしますのでご注意ください。※本講習会後に作成したリソースは強制的に停止させます。</B> ## ハンズオン目安時間 * 60分 ## 1. Google Cloud Deployment Managerによる構築 Google Cloud Deployment ManagerはAWSのCloud Formationと似たサービスです。 Cloud Formationと同様にGCP各種リソースのデプロイを指定するYaml形式の構成ファイルを使用して、Google Cloud サービスと API を設定、デプロイ、および表示するためのサービスを提供します。 Yaml + Jinja または Python でテンプレートを作成することで、設定を使い回すことができます。 テンプレートは可読性のあるテキストとして記述するため、ソースコードとして管理できます。 このようにインフラリソースをソースコードで管理し、プロビジョニングを自動化することを IaC (Infrastructure as Code) と呼びます。 ### 1.1. テンプレートの記述方法 ここでは、Google Cloud Deployment Managerの構成ファイルおよびテンプレートの記述方法について説明します。 ### 1.1.1. 構成ファイル 構成ファイルは Yaml という形式で記述します。 Yaml 形式 ```yaml= resources: - name: vm-created-by-deployment-manager type: compute.v1.instance properties: zone: us-central1-a machineType: zones/us-central1-a/machineTypes/n1-standard-1 disks: - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: sourceImage: projects/debian-cloud/global/images/family/debian-11 networkInterfaces: - network: global/networks/default ``` ### 1.1.2. テンプレート 簡単なワークロードの場合、基本的な構成ファイルで十分ですが、より複雑なアーキテクチャや再利用を行う構成の場合、構成を複数のテンプレートに分割できます。 テンプレートは、Jinja 2.10.x または Python 3.x で記述します。 YAML 構文により対応しているのは Jinja です。YAML に慣れている場合には、テンプレートを Jinja で作成するほうが簡単です。 ① 1.1.1.の構成ファイルをJinja形式のテンプレートで作成する場合 ```Jinja= - name: vm-template type: compute.v1.instance properties: zone: us-central1-a machineType: zones/us-central1-a/machineTypes/n1-standard-1 disks: - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: sourceImage: projects/debian-cloud/global/images/family/debian-11 networkInterfaces: - network: global/networks/default ``` ② 1.1.1.の構成ファイルをPython形式のテンプレートで作成する場合 ```Python= resources.append({ 'name': 'vm-template', 'type': 'compute.v1.instance', 'properties': { 'zone': 'us-central1-a', 'machineType': 'zones/us-central1-a/machineTypes/n1-standard-1', 'disks': [{ 'deviceName': 'boot', 'type': 'PERSISTENT', 'boot': True, 'autoDelete': True, 'initializeParams': { 'sourceImage': 'projects/debian-cloud/global/images/family/debian-11' } }], 'networkInterfaces': [{ 'network': 'global/networks/default' }] } }) ``` ### 1.1.3. バージョン宣言 CloudFormationとは異なり、Google Cloud Deployment Managerではバージョン宣言は不要です。 ### 1.1.4. リソースの定義 リソースは以下の例のように、リソース単位で記述します。 ```yaml= resources: # <- 必ず最初に Resources: を記述する - name: vm-created-by-deployment-manager type: compute.v1.instance # <- リソースタイプの指定。例ではGCEリソースとなる。 properties: # <- リソースプロパティタイプの指定。 zone: us-central1-a # <- Zoneの指定 machineType: zones/us-central1-a/machineTypes/n1-standard-1 # <- GCEのマシンタイプの指定 disks: # <- ディスクの指定 - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: sourceImage: projects/debian-cloud/global/images/family/debian-11 # <- OSの指定 networkInterfaces: # <- ネットワークの指定 - network: global/networks/default ``` ### 1.1.5. 構成ファイルからのインポート テンプレートの利用をする際の記載は以下のとおりです。 ```yaml= imports: - path: vm.jinja # <- テンプレートのJinjaをインポート resources: - name: hoge-vm type: vm.jinja properties: zone: us-central1-a machineType: f1-micro sourceImage: projects/debian-cloud/global/images/family/debian-9 ``` > リファレンス > [基本テンプレートの作成] > (https://cloud.google.com/deployment-manager/docs/configuration/templates/create-basic-template?hl=ja) ## 2. Google Cloud Deployment Manager 構成ファイルの作成 ここでは、Google Cloud Deployment Manager で使用する構成ファイルを作成します。 テンプレートファイルについてはGCPにて汎用的なテンプレートが用意されています。 本講習会ではパラメータ部分となる構成ファイルを作成し、GCPテンプレートと組み合わせてインフラ自動構築を行います。 テンプレートファイルは Windows であれば、メモ帳等のテキストエディタ(テキスト編集可能であれば何でも構いません)を使用して作成します。 テンプレートファイルの保存先として、任意の場所に gcp-work というフォルダを作成してください。 :::warning * テンプレート内で (リージョンコード) と記述されている箇所については、割り当てられたリージョンのリージョンコードを指定します。 ``` 大阪: asia-northeast2 シンガポール: asia-southeast1 台湾: asia-east1 香港: asia-east2 シドニー: australia-southeast1 ムンバイ: asia-south1 オレゴン: us-west1 ロサンゼルス: us-west2 サウスカロライナ:us-east1 バージニア: us-east4 モントリオール: northamerica-northeast1 アイオワ:us-central1 サンパウロ:southamerica-east1 フィンランド:europe-north1 ベルギー:europe-west1 ロンドン:europe-west2 フランクフルト:europe-west3 オランダ:europe-west4 ``` ``` 例) 大阪リージョンの場合 (リージョンコード)b -> asia-northeast2-b ``` * テンプレート内で (アカウント名) と記述されている箇所については、割り当てられたアカウント名を指定します。 ``` 例) 割り当てられたアカウント名が gcp001 の場合 vpc-(アカウント名) -> vpc-gcp001 ``` * テンプレート内で (プロジェクトID) と記述されている箇所については、講習用のプロジェクトID(learngcp-389112)を指定します。 ``` 例) 講習用のプロジェクトIDが learngcp-389112 の場合 --project=(プロジェクトID) -> --project=learngcp-389112 ``` ::: ### 2.1. ネットワーク構成ファイルの作成 ネットワーク構成ファイルでは、「VPC」、「サブネット」といった、GCP を構成する基礎となる、ネットワーク関連の設定を行います。 gcp-work フォルダ内に、以下のファイル名で構成ファイルを作成します。 ```= ファイル名: network.yaml ``` 構成ファイルに以下の内容を記述します。 ```yaml= imports: - path: templates/network/network.py name: network.py resources: - name: vpc-(アカウント名) # <- (アカウント名) を置換する type: network.py properties: autoCreateSubnetworks: false subnetworks: - name: public-subnet-(アカウント名) # <- (アカウント名) を置換する region: (リージョンコード) # <- (リージョンコード) を置換する ipCidrRange: 10.X.0.0/24 # <- 第2オクテットのXを以下のように置換する privateIpGoogleAccess: false enableFlowLogs: true ``` :::warning 上記ipCidrRangeの第2オクテットのXは以下に置き換えてください。 ・1 ⇒ 大阪(asia-northeast2) ・2 ⇒ シンガポール(asia-southeast1) ・3 ⇒ 台湾(asia-east1) ・4 ⇒ 香港(asia-east2) ・5 ⇒ シドニー(australia-southeast1) ・6 ⇒ ムンバイ(asia-south1) ・7 ⇒ オレゴン(us-west1) ・8 ⇒ ロサンゼルス(us-west2) ・9 ⇒ サウスカロライナ(us-east1) ・10⇒ バージニア(us-east4) ・11⇒ モントリオール(northamerica-northeast1) ・12⇒ アイオワ(us-central1) ・13⇒ サンパウロ(southamerica-east1) ・14⇒ フィンランド(europe-north1) ・15⇒ ベルギー(europe-west1) ::: ### 2.2. Firewall構成ファイルの作成 Firewall構成ファイルでは、インターネットから Web サーバへの通信許可と、Webサーバから DBサーバへの通信許可を設定するためのFirewallを作成します。 gcp-work フォルダ内に、以下のファイル名で構成ファイルを作成します。 ```= ファイル名: firewall.yaml ``` 構成ファイルに以下の内容を記述します。 ```yaml= imports: - path: templates/firewall/firewall.py name: firewall.py resources: - name: firewall-(アカウント名) # <- (アカウント名) を置換する type: firewall.py properties: network: vpc-(アカウント名) # <- (アカウント名) を置換する rules: - name: web-(アカウント名) # <- (アカウント名) を置換する allowed: - IPProtocol: tcp ports: - "22" - "80" description: rule for web server direction: INGRESS sourceRanges: - 0.0.0.0/0 - name: db-(アカウント名) # <- (アカウント名) を置換する allowed: - IPProtocol: tcp ports: - "3306" description: rule for db server direction: INGRESS sourceRanges: - 10.X.0.0/24 # <- 第2オクテットのXを以下のように置換する ``` :::warning 上記sourceRangesの第2オクテットのXは以下に置き換えてください。 ・1 ⇒ 大阪(asia-northeast2) ・2 ⇒ シンガポール(asia-southeast1) ・3 ⇒ 台湾(asia-east1) ・4 ⇒ 香港(asia-east2) ・5 ⇒ シドニー(australia-southeast1) ・6 ⇒ ムンバイ(asia-south1) ・7 ⇒ オレゴン(us-west1) ・8 ⇒ ロサンゼルス(us-west2) ・9 ⇒ サウスカロライナ(us-east1) ・10⇒ バージニア(us-east4) ・11⇒ モントリオール(northamerica-northeast1) ・12⇒ アイオワ(us-central1) ・13⇒ サンパウロ(southamerica-east1) ・14⇒ フィンランド(europe-north1) ・15⇒ ベルギー(europe-west1) ::: ### 2.3. インスタンステンプレート 構成ファイルの作成 インスタンステンプレート 構成ファイルでは、パブリックサブネットに Webサーバ2台分のテンプレートを作成します。また、「PHP」、「Apache」、「MySQL」、「Wordpress」といった、ブログサービスを提供するためのソフトウェアをインストール/セットアップするための内容も記述します。 gcp-work フォルダ内に、以下のファイル名で構成ファイルを作成します。 ```= ファイル名: instance-template.yaml ``` 構成ファイルに以下の内容を記述します。 ```yaml= imports: - path: templates/instance_template/instance_template.py name: instance_template.py resources: - name: instance-template-(アカウント名) # <- (アカウント名) を置換する type: instance_template.py properties: diskImage: projects/centos-cloud/global/images/family/centos-7 networks: - network: vpc-(アカウント名) # <- (アカウント名) を置換する subnetwork: https://www.googleapis.com/compute/v1/projects/(プロジェクトID)/regions/(リージョンコード)/subnetworks/public-subnet-(アカウント名) # <- (プロジェクトID)、(リージョンコード)、(アカウント名) を置換する accessConfigs: - type: ONE_TO_ONE_NAT machineType: e2-standard-2 tags: items: - http metadata: items: - key: startup-script value: | #!/bin/bash # Setup Network connect DB setsebool -P httpd_can_network_connect_db 1 # Install MySQL sudo yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 sudo yum install -y mysql-community-server # Install Apache sudo yum install -y httpd sudo systemctl start httpd sudo systemctl enable httpd sudo sed -i '349i KeepAlive On\nMaxKeepAliveRequests 100\nKeepAliveTimeout 600' /etc/httpd/conf/httpd.conf # Install PHP sudo yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm sudo sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/remi-php74.repo sudo yum install -y php php-mysql # Setup Apache sudo systemctl restart httpd sleep 10 sudo chown -R apache:apache /var/www # Download Wordpress sudo yum install -y wget wget https://ja.wordpress.org/latest-ja.tar.gz tar -xzf latest-ja.tar.gz sudo cp -r wordpress/* /var/www/html/ # Disabled SELinux sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config sudo reboot exit 0 ``` ### 2.4. LB用ターゲットプール構成ファイルの作成 LB用ターゲットプール構成ファイルでは、ロードバランサのターゲットプール を作成します。 gcp-work フォルダ内に、以下のファイル名で構成ファイルを作成します。 ```= ファイル名: targetpool.yaml ``` 構成ファイルに以下の内容を記述します。 ```yaml= resources: - name: webserver-pool-(アカウント名) # <- (アカウント名) を置換する type: compute.v1.targetPool properties: region: (リージョンコード) # <- (リージョンコード) を置換する sessionAffinity: CLIENT_IP ``` ### 2.5. データベース構成ファイルの作成 データベース構成ファイルでは、GCP のマネージドサービスである Cloud SQL を作成します。データベースのエンジンは MySQL を選択します。 gcp-work フォルダ内に、以下のファイル名で構成ファイルを作成します。 ```= ファイル名: database.yaml ``` 構成ファイルに以下の内容を記述します。 ```yaml= imports: - path: templates/cloud_sql/cloud_sql.py name: cloud_sql.py resources: - name: db-(アカウント名) # <- (アカウント名) を置換する type: cloud_sql.py properties: region: (リージョンコード) # <- (リージョンコード) を置換する databaseVersion: MYSQL_5_7 instanceType: CLOUD_SQL_INSTANCE settings: tier: db-n1-standard-1 backupConfiguration: startTime: '02:00' enabled: false locationPreference: zone: (リージョンコード)-b # <- (リージョンコード) を置換する ipConfiguration: ipv4Enabled: false privateNetwork: 'vpc-(アカウント名)' # <- (アカウント名) を置換する users: - name: admin password: password123! databases: - name: wordpress ``` ### 2.6. ロードバランサー構成ファイルの作成 ロードバランサー構成ファイルでは、GCP のマネージドサービスである ロードバランサー を作成します。 gcp-work フォルダ内に、以下のファイル名で構成ファイルを作成します。 ```= ファイル名: lb.yaml ``` 構成ファイルに以下の内容を記述します。 ```yaml= resources: - name: lb-(アカウント名) # <- (アカウント名) を置換する type: compute.v1.forwardingRule properties: region: (リージョンコード) # <- (リージョンコード) を置換する portRange: 80 IPProtocol: TCP target: https://www.googleapis.com/compute/v1/projects/(プロジェクトID)/regions/(リージョンコード)/targetPools/webserver-pool-(アカウント名) # <- (プロジェクトID)、(リージョンコード)、(アカウント名) を置換する ``` ## 3. GCPコンソールのログイン :::info ログイン先URL: 別紙参照 受講者用アカウント: 別紙参照 共通パスワード: 別紙参照 ::: ![](https://i.imgur.com/GZ8MM3b.png) <br> ![](https://i.imgur.com/4dQ4QYH.png) <br> ![](https://i.imgur.com/LY2Pv9d.png) <br> <br> <br> ![](https://i.imgur.com/Dbxbs64.png) <br> ## 4. Deployment Manager起動 1. 検索バーに[**Deployment Manager**]を入力し、検索結果の[**Deployment Manager**]をクリックする。 <br> ![](https://i.imgur.com/FCQ6ege.png) 2. Deployment ManagerのAPI有効化画面が表示されるので[**有効にする**]をクリックする。 <br> ![](https://i.imgur.com/lGzyJW7.png) 3. API有効後、以下のDeployment Manager画面が表示されることを確認する。 <br> ![](https://i.imgur.com/rAT1vRR.png) 4. 画面右上の[**Cloud Shellをアクティブにする**]アイコンをクリックする。 <br> ![](https://i.imgur.com/m3ufODF.png) 5. 画面下にCloud Shell使用確認のポップアップが表示されるので[**続行**]をクリックする。 <br> ![](https://i.imgur.com/gLRlvit.png) 6. 画面下に[**CLOUD SHELLターミナル**]が表示される。 <br> ![](https://i.imgur.com/LZb4Gos.png) <br> ## 5. 各構成ファイルの作成 ### 5.1. Deployment Managerのリポジトリをダウンロード CLOUD SHELLのターミナル上で以下を実行する。 :::info ターミナル上にctrl+Vでペーストできます。 ::: ```gherkin= git clone https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit ``` ![](https://hackmd.io/_uploads/HkYcTue83.png) ### 5.2. 空の構成ファイルを作成する。 CLOUD SHELLのターミナル上で以下を実行する。 ```gherkin= #/home/(アカウント名)/cloud-foundation-toolkit/dmと表示されること cd cloud-foundation-toolkit/dm ; pwd #空の構成ファイル(.yaml)の作成 (何も表示されないこと) touch network.yaml touch firewall.yaml touch instance-template.yaml touch targetpool.yaml touch database.yaml touch lb.yaml #上記で作成した構成ファイル(.yaml)が表示されること ls -l *.yaml ``` ### 5.3. CLOUD SHELL上の「エディタを開く」ボタンをクリックする。 ![](https://hackmd.io/_uploads/B1dIuVvHh.png) ### 5.4. 「5.2」で作成した各構成ファイル(.yaml)を左ペインで選択して右ペインに「2.1~2.6」で作成した構成ファイルの中身をコピー&ペーストする。 ※以下はnetwork.yamlの例。他の構成ファイルも同様にコピー&ペーストすること ```= network.yaml firewall.yaml instance-template.yaml targetpool.yaml database.yaml lb.yaml ``` ![](https://hackmd.io/_uploads/SJuc6VvBn.png) ### 5.5. 各構成ファイルをコピー&ペーストが完了したらCLOUD SHELL上の「ターミナルを開く」ボタンをクリックする。 ![](https://hackmd.io/_uploads/S1nMJHDS2.png) ## 6. 各リソースのデプロイ ### 6.1. VPC、パブリックサブネットの作成 ![](https://hackmd.io/_uploads/BkD5MUxU2.png) CLOUD SHELLのターミナル上で以下を実行する。 ```gherkin= # (アカウント名) を置換する gcloud deployment-manager deployments create vpc-(アカウント名) --config network.yaml ``` :::info CLOUD SHELL起動後、gcloudコマンド初回実行時には以下のポップアップが表示されるので「承認」をクリックする。 ::: :::info CLOUD SHELL承認後、ユーザ認証を求められた場合、各ユーザのパスワードを入力する。 ※ユーザ認証のタイムアウトになった場合はコマンドを再実行してください。 ::: ![](https://hackmd.io/_uploads/B1mIR5iS2.png) 以下例の実行結果になること ![](https://hackmd.io/_uploads/B1mxfrDr2.png) ### 6.2. Firewallルールの作成 ![](https://hackmd.io/_uploads/HyGhMUl82.png) CLOUD SHELLのターミナル上で以下を実行する。 ```gherkin= # (アカウント名) を置換する gcloud deployment-manager deployments create firewall-(アカウント名) --config firewall.yaml ``` 以下例の実行結果になること ![](https://hackmd.io/_uploads/S1zqQHDrn.png) ### 6.3. インスタンステンプレートの作成 ![](https://hackmd.io/_uploads/rkeTMLx8n.png) CLOUD SHELLのターミナル上で以下を実行する。 ```gherkin= # (アカウント名) を置換する gcloud deployment-manager deployments create instance-template-(アカウント名) --config instance-template.yaml ``` 以下例の実行結果になること ![](https://hackmd.io/_uploads/rJ2ESBPSh.png) ### 6.4. LB用のターゲットプール作成 ![](https://hackmd.io/_uploads/r1T6zUxU2.png) CLOUD SHELLのターミナル上で以下を実行する。 ```gherkin= # (アカウント名) を置換する gcloud deployment-manager deployments create webserver-pool-(アカウント名) --config targetpool.yaml ``` 以下例の実行結果になること ![](https://hackmd.io/_uploads/r1xTdOlLh.png) ### 6.5. インスタンスグループ作成 ![](https://hackmd.io/_uploads/rJc0fUxLn.png) CLOUD SHELLのターミナル上で以下を実行する。 ```gherkin= # (アカウント名)、(リージョンコード)を置換する gcloud compute instance-groups managed create instance-group-(アカウント名) \ --size 2 \ --template instance-template-(アカウント名) \ --target-pool webserver-pool-(アカウント名) \ --zones (リージョンコード)-b,(リージョンコード)-c ``` 以下例の実行結果になること ![](https://hackmd.io/_uploads/B1xFy8wrh.png) ### 6.6. DBサブネット作成、プライベート接続の作成 ![](https://hackmd.io/_uploads/Sy7L7Ix82.png) CLOUD SHELLのターミナル上で以下を実行する。 ```gherkin= # (アカウント名)、--addressesの第2オクテット、(プロジェクトID)を置換する ①DBサブネット作成 gcloud compute addresses create db-subnet-(アカウント名) \ --global \ --purpose=VPC_PEERING \ --addresses=10.X.1.0 \ --prefix-length=24 \ --description="allocated for DB" \ --network=vpc-(アカウント名) \ --project=(プロジェクトID) ②プライベート接続の作成 gcloud services vpc-peerings update \ --service=servicenetworking.googleapis.com \ --ranges=db-subnet-(アカウント名) \ --network=vpc-(アカウント名) \ --project=(プロジェクトID) \ --force ``` 以下例の実行結果になること ![](https://hackmd.io/_uploads/BJgkhDhorn.png) ### 6.7. Cloud SQL作成 ![](https://hackmd.io/_uploads/HJ1c78lUh.png) CLOUD SHELLのターミナル上で以下を実行する。 ```gherkin= # (アカウント名)を置換する gcloud deployment-manager deployments create database-(アカウント名) --config database.yaml ``` :::info Cloud SQL作成完了まで数分程度かかります。 ::: 以下例の実行結果になること ![](https://hackmd.io/_uploads/BklN7UDHh.png) ### 6.8. ネットワークロードバランサの作成、確認 ![](https://hackmd.io/_uploads/S1lwmUx82.png) CLOUD SHELLのターミナル上で以下を実行する。 ```gherkin= # (アカウント名)を置換する ①ネットワークロードバランサの作成 gcloud deployment-manager deployments create lb-(アカウント名) --config lb.yaml ②ネットワークロードバランサの確認 gcloud compute forwarding-rules list ``` 以下例の実行結果になること ![](https://hackmd.io/_uploads/HkkMNLPHh.png) ## 7. Wordpress のセットアップ ### 7.1. ロードバランサの外部IPのコピー 「6.8」の実行結果にある「IP_ADDRESS: XXX.XXX.XXX.XXX」のIPアドレスをコピーする。 ![](https://hackmd.io/_uploads/B1xCN8DH2.png) ### 7.2. WordPressにアクセス 新たにウェブブラウザを起動し、アドレスバーに、コピーした IPアドレスをペーストして WoredPress にアクセスする。 :::info ロードバランサーでWeb Server1またはWeb Server2のいずれかに振り分けられます。 ::: ![](https://hackmd.io/_uploads/SkWaS8wH2.png) ### 7.3. WordPress構築開始 「さあ、始めましょう!」 ボタンをクリックする。 ![](https://hackmd.io/_uploads/B1nAUUwSn.png) ### 7.4. Cloud SQLのプライベートIPアドレスのコピー GCPコンソールに戻り、メニューから「SQL」をブラウザの新しいタブで開き、プライベートIPアドレスをコピーする。 ![](https://hackmd.io/_uploads/B19KcLPBn.png) ### 7.5. WordPressデータベース設定 WordPressのブラウザに戻り、以下の内容を入力して、「送信」ボタンをクリックする。 ```= データベース名: wordpress ユーザー名: admin パスワード: password123! データベースのホスト名: (コピーしたデータベースのプライベートIPアドレス) ``` ![](https://hackmd.io/_uploads/rkxYi8vHh.png) ### 7.6. WordPressインストール実行① 「インストール実行」ボタンをクリックする。 ![](https://hackmd.io/_uploads/rJs7tTDSh.png) ### 7.7. WordPressインストール実行② 以下の内容を入力して、「WordPress をインストール」ボタンをクリックする。 ```= サイトのタイトル: GCP ユーザ名: admin パスワード: dm-wp-password メールアドレス: 各自のメールアドレス 検索エンジンでの表示:チェックする ``` ![](https://hackmd.io/_uploads/rJlvQPwB2.png) ### 7.8. WordPressログイン 以下の内容を入力して、ログインボタンをクリックする。 ```= ユーザー名: admin パスワード: dm-wp-password ``` ![](https://hackmd.io/_uploads/BJ6eNPDSh.png) ### 7.9. WordPressログイン後の確認 以下の画面が表示されることを確認し、画面左上のサイトタイトルをクリックする。 ![](https://hackmd.io/_uploads/SysG4DPSh.png) ### 7.10. WordPress投稿記事の確認 以下の画面が表示されることを確認する。 ![](https://hackmd.io/_uploads/ryiQ4DwHn.png) ## 8. デプロイメントの削除 以下の順で作成したデプロイメントを削除する。 ```= lb-(アカウント名) database-(アカウント名) webserver-pool-(アカウント名) instance-template-(アカウント名) firewall-(アカウント名) network-(アカウント名) ``` デプロイメントの削除は、削除するデプロイを選択して、「削除」ボタンをクリックする。 ![](https://hackmd.io/_uploads/ryt5BwwB3.png) :::warning Deployment Managerで作成したリソースには依存関係があるため、削除の順序に気をつける必要があります。例えば、最初にネットワークを削除しようとした場合、ネットワークに属するインスタンスが存在している状態では、削除エラーとなります。 またCLOUD SHELLターミナルからのコマンドでも削除可能です。 例: gcloud deployment-manager deployments delete database-(アカウント名) ::: 以上