---
title: VMware Tanzu Operations Manager 3.0とBOSH DirectorをAWSにインストールするメモ
tags: ["AWS", "Cloud Foundry", "Pivotal Cloud Foundry", "Ops Manager", "TAS", "Terraform"]
categories: ["Dev", "PaaS", "CloudFoundry", "PCF"]
date: 2024-06-25T16:46:57Z
updated: 2024-06-26T04:22:25Z
---

この記事ではVMware Tanzu Operations Manager (Ops Manager) をAWSにインストールをします
[次の記事](/entries/802)では、ここで構築した環境上にTanzu Application Service 6.0 (TAS) をインストールします。

この記事では初めてインストールする人向けにできるだけGUIベースで設定を行います。

**目次**
<!-- toc -->

### AWS環境の準備

まずはOps Manager及びTASをインストールする下地となるAWSリソースを作成します。

作成するネットワーク構成は次の図のようになります。

<img width="1024" alt="image" src="https://www.plantuml.com/plantuml/svg/ZLAnJiCm4Dtz5QTCC0HgfvIoe38X5YOsn719JwN2CP5zfYee_quW0RTHh5eP8jrxUk_T-QqSesLVQz5WzOORWgpnfTvM6Nm9WFyXVaeuaxEBt-zIpSzx7C1InMWskkFigCnrcSji33ZtUW2KxzwiqUuXUxnxWdjask7-1sgF3TLWA4yPgfYXcb0j1bLrIhM8gHQzQYj4k5cDfllNP3XwDxa8Zl5ThmCf6bqkZqdjGH165qqmJmXmbU2_YDixiX_RYk8PbWaPRb9kC1k72BLwC4pM48Tk2T6N6dBVvBVmF6QyYF20Vvokd05cT9FpOTzfS4LcxMlz3G00">


必要なリソースは[ドキュメント](https://docs.vmware.com/en/VMware-Tanzu-Operations-Manager/3.0/vmware-tanzu-ops-manager/aws-required-objects.html)に記載されていますが、これをマニュアルで作成するのは大変なので、Terraformを使用します。

Terraform CLIのインストールは[こちら](https://www.hashicorp.com/official-packaging-guide?product_intent=terraform)を参照してください。

本記事の内容はUbuntu Jammy上で次のバージョンのCLIを使って動作確認しています。

```
$ terraform --version
Terraform v1.8.5
on linux_amd64
```

また前提条件としてRoute 53のHosted Zoneが1つ必要です。ここでは`aws.maki.lol`というHosted Zoneを例に説明します。

<img width="1001" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/0b150b97-76c7-4371-bbdd-8369e6c77b73">


Terraformの[テンプレート](https://github.com/making/tas-paving-aws)を取得します。

```
git clone https://github.com/making/tas-paving-aws
cd tas-paving-aws
```

このテンプレートで

* VPC
* Subnet
* Security Group
* EIP
* NLB
* Internet Gateway
* NAT Gateway
* IAM Role
* IAM Policy
* IAM Instance Profile
* Route53 Record
* S3 Bucket

などを作成します。

以下の環境変数を設定します。

```bash
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=... (Optional)
export AWS_REGION=ap-northeast-1

export TF_VAR_availability_zones='["ap-northeast-1a","ap-northeast-1c","ap-northeast-1d"]'
export TF_VAR_environment_name=sandbox
export TF_VAR_hosted_zone=aws.maki.lol
```

> [!NOTE] `AWS_ACCESS_KEY_ID`と`AWS_SECRET_ACCESS_KEY`はTerraformの実行及び、後述のOps Manager VMの作成にのみ利用します。以降はTerraformで作成されたInstance Profileを使用してAWS APIにアクセスします。TAS自体に`AWS_ACCESS_KEY_ID`と`AWS_SECRET_ACCESS_KEY`を設定することはありません。

> [!TIP] VMWare社員は[Cloud Gate](https://console.cloudgate.vmware.com/)で発行できるPower Userの一時的なCredentialsで作業できます。

Terraformを実行します。

```
cd aws
terraform init
terraform plan -out plan
terraform apply plan
cd ..
````

AWSのConsoleで前述の図の通りのNetworkが作成されたことがわかるでしょう。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/4a185adb-df6a-452c-826b-28af23c314e9">

### Ops Managerのインストール

TASをインストールするために必要なOps Managerをインストールします。
次の図のようにOps Managerは`public`ネットワーク上に作成し、EIPを経由してアクセスします。

<img width="1024" alt="image" src="https://www.plantuml.com/plantuml/svg/ZPFFJeD048Vl-nGJlEXXjKjhhHTJJyQ3zkAjuJ3011jX8RkBJJMyk_nfkxIoAUcbcMyoy_5ZM6g3ofHPoWgClZ0Xy8eoJ3UH1xyCu5Z47m7NOdBR_kxysKt70MGUrtXLQ7X3MRSghoqhYWpA9AtPbaAUXbpy0rf_za2Obp96jGFl_Va3Nj3G5dSDgauz_Bs7i1x32ttNGdzWwdG_rRyqTUgQseAALOpPABCsaeoaSSOfvdQZ-raVR9DJNInEcwgUY47jD9YD4BWViN_kNgz9VMyYSZiiHZWyZibWSYvXp-fL6bAIZBqjXf795QmAKjZykKeKaMJiME3hhXHm_WJhtf47Z7MV2V2oQDZvy83PTt_eiNTTOuDwi7w8QX0kISPbblu1">

Ops ManagerのインストールをAWS Consoleから行うのは手間がかかるので、[`om`](https://github.com/pivotal-cf/om) CLIを使って、Ops Manage VMを作成します。

```
curl https://github.com/pivotal-cf/om/releases/download/7.12.0/om-linux-amd64-7.12.0 -sL -o om
chmod +x om
sudo mv om /usr/local/bin/om
```

Ops Manager VMを作成するための設定ファイルを次のように作成します。

```yaml
cat <<EOF > opsman.yml
---
opsman-configuration:
  aws:
    region: ${AWS_REGION}
    vpc_subnet_id: $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_subnet_id)
    security_group_ids:
    - $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_security_group_id)
    - $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .platform_vms_security_group_id)
    key_pair_name: $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_key_pair_name)
    iam_instance_profile_name: $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_iam_instance_profile_name)
    access_key_id: ${AWS_ACCESS_KEY_ID}
    secret_access_key: ${AWS_SECRET_ACCESS_KEY}
    public_ip: $(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_public_ip)
    private_ip: 10.0.0.10
---
EOF
```

Ops ManagerのAMIイメージのIDは[Broadcom Support Portal](https://support.broadcom.com/) (BSP)から取得する必要があります。
BSPにログインして、次の図のように"Tanzu"を選択してください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/01a7b492-4ef0-4c25-9088-10c73d1e6d19">


"My Downloads"から"VMware Tanzu Operation Manager"を選択してください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/db5bb28f-8dd1-4572-abba-15ad62c6762c">

"VMware Tanzu Operation Manager"をクリックしてください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/35e534ca-a5d1-43a9-a0ba-6cebd4968efe">

最新バージョンを選択してください。下の図では`3.0.30+LTS-T`です。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/321b74aa-bc64-43fc-9b27-c1d935671763">

**"I agree to the Terms and Conditions"にチェックを入れて**、"Tanzu Ops Manager YAML for AWS ..."をダウンロードしてください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/f5d0d69c-981c-43a2-8bab-2509bdd9a9cc">

次のようなYAMLが取得できます。

```yaml
$ cat ops-manager-aws-3.0.30+LTS-T.yml 
---
ap-south-2: ami-079351fec0d47937b
# ...
ap-northeast-1: ami-00d6d7bbd9d6a202f
# ...
```

先ほど作成した`opsman.yml`とBSPからダウンロードしたYAMLを使って、次のように`om`コマンドでOps Manager VMを作成します。

```
om vm-lifecycle create-vm --config=opsman.yml --image-file=ops-manager-aws-3.0.30+LTS-T.yml
```

次のようなログが出力され、Ops Manager VMが作成されます。

```
Using aws...

Executing: "aws ec2 run-instances --tag-specifications ResourceType=instance,Tags=[{Key=Name,Value=ops-manager-vm}] --image-id ami-00d6d7bbd9d6a202f --subnet-id subnet-014057c9d1c4a7bd6 --security-group-ids sg-01e92981c8c881bec sg-0ffd0662a685d574f --count 1 --instance-type m5.large --key-name sandbox-ops-manager-key --no-associate-public-ip-address --iam-instance-profile Name=sandbox-ops-manager --query Instances[0].InstanceId --private-ip-address 10.0.0.10"
This could take a few moments...
aws[stdout]: "i-0ddbef586f5731165"

Executing: "aws ec2 describe-volumes --filters Name=attachment.instance-id,Values=i-0ddbef586f5731165 Name=attachment.status,Values=attached Name=status,Values=in-use --query Volumes[0].VolumeId"
This could take a few moments...
aws[stdout]: "vol-0a4005fe1de960ff7"

Executing: "aws ec2 modify-volume --volume-id vol-0a4005fe1de960ff7 --size 200"
This could take a few moments...
aws[stdout]: {
aws[stdout]:     "VolumeModification": {
aws[stdout]:         "VolumeId": "vol-0a4005fe1de960ff7",
aws[stdout]:         "ModificationState": "modifying",
aws[stdout]:         "TargetSize": 200,
aws[stdout]:         "TargetIops": 600,
aws[stdout]:         "TargetVolumeType": "gp2",
aws[stdout]:         "TargetMultiAttachEnabled": false,
aws[stdout]:         "OriginalSize": 10,
aws[stdout]:         "OriginalIops": 100,
aws[stdout]:         "OriginalVolumeType": "gp2",
aws[stdout]:         "OriginalMultiAttachEnabled": false,
aws[stdout]:         "Progress": 0,
aws[stdout]:         "StartTime": "2024-06-25T03:08:34+00:00"
aws[stdout]:     }
aws[stdout]: }

Executing: "aws ec2 describe-addresses --filters Name=public-ip,Values=54.65.94.27 --query Addresses[0].AllocationId"
This could take a few moments...
aws[stdout]: "eipalloc-0b56ffe4ab20a23d2"

Executing: "aws ec2 associate-address --allocation-id eipalloc-0b56ffe4ab20a23d2 --instance-id i-0ddbef586f5731165"
This could take a few moments...
aws[stdout]: {
aws[stdout]:     "AssociationId": "eipassoc-0b5a6e1c26ee8d6ec"
aws[stdout]: }

Executing: "aws ec2 stop-instances --instance-ids i-0ddbef586f5731165"
This could take a few moments...
aws[stdout]: {
aws[stdout]:     "StoppingInstances": [
aws[stdout]:         {
aws[stdout]:             "CurrentState": {
aws[stdout]:                 "Code": 64,
aws[stdout]:                 "Name": "stopping"
aws[stdout]:             },
aws[stdout]:             "InstanceId": "i-0ddbef586f5731165",
aws[stdout]:             "PreviousState": {
aws[stdout]:                 "Code": 16,
aws[stdout]:                 "Name": "running"
aws[stdout]:             }
aws[stdout]:         }
aws[stdout]:     ]
aws[stdout]: }

Executing: "aws ec2 describe-instances --instance-ids i-0ddbef586f5731165 --query Reservations[*].Instances[*].State.Name"
This could take a few moments...
aws[stdout]: [
aws[stdout]:     [
aws[stdout]:         "stopping"
aws[stdout]:     ]
aws[stdout]: ]

Executing: "aws ec2 describe-instances --instance-ids i-0ddbef586f5731165 --query Reservations[*].Instances[*].State.Name"
This could take a few moments...
aws[stdout]: [
aws[stdout]:     [
aws[stdout]:         "stopping"
aws[stdout]:     ]
aws[stdout]: ]

Executing: "aws ec2 describe-instances --instance-ids i-0ddbef586f5731165 --query Reservations[*].Instances[*].State.Name"
This could take a few moments...
aws[stdout]: [
aws[stdout]:     [
aws[stdout]:         "stopping"
aws[stdout]:     ]
aws[stdout]: ]

...

Executing: "aws ec2 describe-instances --instance-ids i-0ddbef586f5731165 --query Reservations[*].Instances[*].State.Name"
This could take a few moments...
aws[stdout]: [
aws[stdout]:     [
aws[stdout]:         "stopped"
aws[stdout]:     ]
aws[stdout]: ]

Executing: "aws ec2 start-instances --instance-ids i-0ddbef586f5731165"
This could take a few moments...
aws[stdout]: {
aws[stdout]:     "StartingInstances": [
aws[stdout]:         {
aws[stdout]:             "CurrentState": {
aws[stdout]:                 "Code": 0,
aws[stdout]:                 "Name": "pending"
aws[stdout]:             },
aws[stdout]:             "InstanceId": "i-0ddbef586f5731165",
aws[stdout]:             "PreviousState": {
aws[stdout]:                 "Code": 80,
aws[stdout]:                 "Name": "stopped"
aws[stdout]:             }
aws[stdout]:         }
aws[stdout]:     ]
aws[stdout]: }
OpsMan VM created successfully
```

ECSのダッシュボードで`opa-manage-vm`という名前のインスタンスを確認できるでしょう。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/4c184b47-8e80-4ec8-87d7-97ae1791c9e3">

このOps ManagerのDNS名は次のコマンドで確認できます。`opsmanager.${TF_VAR_environment_name}.${TF_VAR_hosted_zone}`であるはずです。

```
cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_dns
```

自己署名証明書が使用されているため、ブラウザでアクセスすると、次のような警告が表示されるでしょう。ブラウザの画面にカーソルを合わせて、`this is unsafe`と入力してください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/07880864-94b8-49c7-9a89-3bc957fd8b3b">

Ops Managerの初回セットアップ画面が表示されます。"Internal Authentication"ボタンをクリックしてください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/508e0163-ac4c-4223-a683-152474953789">

管理ユーザーのユーザー名とパスワード、復号パスフレーズを設定し、"Setup Authentication"ボタンをクリックしてください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/b9e03d7f-7836-4a2b-a9ad-a91ae18e2c61">

しばらく待ってください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/5ff5efc8-6a7e-449a-a489-259b954e2919">

ログイン画面が表示されます。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/40bb94f4-aaec-427e-9e76-1ae7e05abc41">

設定した管理ユーザーのユーザー名とパスワードを入力して、"SIGN IN"ボタンをクリックしてください。次のようなダッシュボード画面が表示されます。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/1cedd2f8-44d2-409e-93ae-6bbd51117ac3">


> [!TIP] 
> Ops Managerにsshでサクセスしたい場合は、次のコマンドでSSH秘密鍵を取得してください。
> ```
> cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_ssh_private_key > opsman.pem
> chmod 600 opsman.pem
> ```
> 
> 取得したSSH秘密鍵を使って次のコマンドでSSHアクセスできます。
> 
> ```
> ssh ubuntu@$(cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_dns) -i opsman.pem
> ```


### Let's Encryptで証明書を作成

自己署名証明書のままでもインストールは進められますが、ここではLet's Encryptで発行した証明書を使用してインストールを進めます。ここで作成した証明書は次のTASのインストールでも使用されます。

`lego` CLIをインストールします。

```
sudo apt-get install lego -y
```

次の環境変数を設定します。

```
export AWS_REGION=...
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=... (Optional)
export AWS_HOSTED_ZONE_ID=$(aws route53 list-hosted-zones | jq -r --arg NAME "${TF_VAR_hosted_zone}." '.HostedZones[] | select(.Name == $NAME) | .Id' | sed 's|/hostedzone/||')
export SUBDOMAIN=${TF_VAR_environment_name}.${TF_VAR_hosted_zone}
export EMAIL=<your email address>
```

次のコマンドで証明書を作成します。

```
lego --accept-tos \
  --key-type=rsa4096 \
  --domains="*.${SUBDOMAIN}" \
  --domains="*.apps.${SUBDOMAIN}" \
  --domains="*.sys.${SUBDOMAIN}" \
  --email=${EMAIL} \
  --dns=route53 \
  run
```

次のディレクトリに証明書が生成されます。

```
$ ls -la .lego/certificates/
total 16
drwx------ 6 tmaki tmaki  192 Jun 25 08:00 .
drwx------ 4 tmaki tmaki  128 Jun 25 07:56 ..
-rw------- 1 tmaki tmaki 4014 Jun 25 08:00 _.sandbox.aws.maki.lol.crt
-rw------- 1 tmaki tmaki 1802 Jun 25 08:00 _.sandbox.aws.maki.lol.issuer.crt
-rw------- 1 tmaki tmaki  243 Jun 25 08:00 _.sandbox.aws.maki.lol.json
-rw------- 1 tmaki tmaki 3243 Jun 25 08:00 _.sandbox.aws.maki.lol.key
```

証明書のSubject Alternative Namesを次のコマンドで確認できます。

```
$ cat .lego/certificates/_.sandbox.aws.maki.lol.crt | openssl x509 -noout -text | grep DNS:
                DNS:*.apps.sandbox.aws.maki.lol, DNS:*.sandbox.aws.maki.lol, DNS:*.sys.sandbox.aws.maki.lol
```

この証明書をOps Managerに設定するために、`om` CLIを使用します。

`Ops Manager`にアクセするための情報を次のように`env.yml`に記述します。

```
export OM_USERNAME=<opsmanager username>
export OM_PASSWORD=<opsmanager password>
export OM_DECRYPTION_PASSPHRASE=<opsmanager decryption passphrase>

cat <<EOF > env.yml
target: https://opsmanager.${SUBDOMAIN}
connect-timeout: 30
request-timeout: 1800
skip-ssl-validation: true
username: ${OM_USERNAME}
password: ${OM_PASSWORD}
decryption-passphrase: ${OM_DECRYPTION_PASSPHRASE}
EOF
```

Ops Managerに設定する証明書を`ssl-certificate.yml`に定義します。

```
cat <<EOF > ssl-certificate.yml
ssl-certificate:
  certificate: |
$(cat .lego/certificates/_.${SUBDOMAIN}.crt | sed 's/^/    /g')
  private_key: |
$(cat .lego/certificates/_.${SUBDOMAIN}.key | sed 's/^/    /g')
EOF
```

次のコマンドで、Ops Managerに証明書を設定します。

```
om --env env.yml configure-opsman --config ssl-certificate.yml
```

しばらくして、ブラウザにアクセスすると証明書の警告はなくなるでしょう。新しいウインドウでアクセスしたほうが反映が早いです。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/52565e85-96ee-436b-af95-e675610ab350">

> [!TIP] Ops ManagerのGUIから設定したい場合は、右上のユーザー名をクリックして、"Settings"→"SSL Certificate"を選択し、CertificateとPrivate Keyを設定し、保存してください。
> 
> <img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/d5ed252c-22fb-4a7e-be30-a3be21bd8fb9">

### BOSH Directorのインストール

次にOps Managerを使ってBOSH Directorのインストールを行います。
BOSH DirectorはTASのインストールやアップデート、死活監視を担当する重要なコンポーネントです。VMに対するKubernetesのようなものに相当します。

BOSH Directorは次の図のように`management`ネットワーク上にインストールされます。

<img width="1024" alt="image" src="https://www.plantuml.com/plantuml/svg/ZPD1Jxj04CNl-oac_2z_3riBhRLwQAenKG_QWzuQ3hCmgOsmaDt5fff-TzdIG45M6ovatkpCZyVRkJQeJ94cBCVe7LS4Nbw8P1rvyCK0wY9--l3V7mxsptamFgjq09d5fRp8DJoXB5kLjoyhYWpALL9g6n8y4Tp_8MZzTYI8h90ngYruppUlS8-6DhYrqgxD4Hmu_9h3iJ1mBGnwfeuEKuE_fevSKqVLr1rZZPNftfAKf77QwK_w_BnTl3p0tTfkoTHl9bmsfvtVv4zRJHOnHeC2TTaciX9V99dGvIRoZk0DQYVrsBcsORiu0MtI9MlMQr8VwuZS3DCJ6AvEiMVOXMYY-2WDAKccoID3-qjWaPD2-_9lfOWaOtM1BwjIoFaCbaSN8sIikbh0YzngtU4XQ_82ji5UX5epgAk3dVh1ftwHjG1WKEgjQ8LmRGF0MBVCusmZ-Qmd7tEISP4ctm00">

#### AWS Config

BOSH DirectorがAWSにアクセスするための情報を設定します。AWSのアクセスキーは使わず、Instance Profileを使用します。

https://docs.vmware.com/en/VMware-Tanzu-Operations-Manager/3.0/vmware-tanzu-ops-manager/aws-config-manual.html#step-2-configure-aws-1

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/f75f6313-9bb5-469c-a087-4d4b7fc722d5">

1. `Use AWS Instance Profile`を選択し、`AWS IAM Instance Profile`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_iam_instance_profile_name`の結果を設定
1. `Security Group ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .platform_vms_security_group_id`の結果を設定
1. `Key Pair Name`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_key_pair_name`の結果を設定
1. `SSH Private Key`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .ops_manager_ssh_private_key`の結果を設定
1. `Region`に`echo $AWS_REGION`の結果を設定

"Save"ボタンをクリックして設定を保存。

#### Director Config

BOSH Director自体の設定を行います。BlobstoreとしてTerraformで作成したS3のバケットを使用します。

https://docs.vmware.com/en/VMware-Tanzu-Operations-Manager/3.0/vmware-tanzu-ops-manager/aws-config-manual.html#step-3-complete-the-director-config-page-2

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/b7fa827b-e360-41b4-84d3-6a7a037f613c">

1. `NTP Servers (comma delimited)`にNTPサーバーのアドレスを設定(e.g. `time.google.com`)
1. `Enable VM Resurrector Plugin`をチェック
1. `Blobstore Location`に`S3 Compatible Blobstore`を選択し、
    1. `S3 Endpoint`に対象のリージョンの[S3 Endpoint URL](https://docs.aws.amazon.com/general/latest/gr/s3.html)を設定。通常は`echo https://s3.${AWS_REGION}.amazonaws.com`の値
    1. `Credentials Source`に`IAM Instance Profile`を選択
    1. `S3 Signature Version`に`V4 Signature`を選択し、`Region`に`echo $AWS_REGION`の結果を設定
    1. `S3 Backup Strategy`に`Use a versioned bucket`を選択
1. `Certificate Duration Overrides`で`On`を選択 (証明書の期限を10年に延長。期限切れによる事故防止のため)
    1. `CA Certificate Duration (days)`に`3650`を設定
    1. `Leaf Certificate Duration (days)`に`3650`を設定

"Save"ボタンをクリックして設定を保存。

#### Create Availability Zones

BOSH DirectorがVMをデプロイする先のAvailability Zonesの選択肢を設定します。

https://docs.vmware.com/en/VMware-Tanzu-Operations-Manager/3.0/vmware-tanzu-ops-manager/aws-config-manual.html#step-4-create-availability-zones-3

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/ebdb9bfc-0972-4315-a5ed-2476492b480a">

1. `cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .availability_zones`で出力されるAvailability Zonesの数の分だけ"Add"ボタンをクリックし、それぞれの値を設定。

"Save"ボタンをクリックして設定を保存。

#### Create Networks

BOSH DirectorがVMをデプロイする先のNetworkの選択肢を設定します。TASを含めて、今回のインストール作業で一番設定が大変なのはここです。

https://docs.vmware.com/en/VMware-Tanzu-Operations-Manager/3.0/vmware-tanzu-ops-manager/aws-config-manual.html#step-5-create-networks-4

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/9dcac165-d2dd-4846-99ae-00f4ebabae1b">

1. "Add Network"ボタンをクリックし、`Name`に`management`を設定 (BOSH Directorをインストールするネットワーク)
1. `Subnets`の
    1. `VPC Subnet ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_ids[0]`の結果を設定
    1. `CIDR`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_cidrs[0]`の結果を設定 (デフォルト: `10.0.16.0/24`)
    1. `Reserved IP Ranges`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_reserved_ip_ranges[0]`の結果を設定 (デフォルト: `10.0.16.1-10.0.16.9`)
    1. `DNS`に`10.0.0.2`を設定
    1. `Gateway`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_gateways[0]`の結果を設定 (デフォルト: `10.0.16.1`)
    1. `Availability Zones`は1番目のものを選択
1. "Add Subnet"ボタンをクリックし、`Subnets`の
    1. `VPC Subnet ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_ids[1]`の結果を設定
    1. `CIDR`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_cidrs[1]`の結果を設定 (デフォルト: `10.0.17.0/24`)
    1. `Reserved IP Ranges`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_reserved_ip_ranges[1]`の結果を設定 (デフォルト: `10.0.17.1-10.0.17.9`)
    1. `DNS`に`10.0.0.2`を設定
    1. `Gateway`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_gateways[1]`の結果を設定 (デフォルト: `10.0.17.1`)
    1. `Availability Zones`は2番目のものを選択
1. "Add Subnet"ボタンをクリックし、`Subnets`の
    1. `VPC Subnet ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_ids[2]`の結果を設定
    1. `CIDR`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_cidrs[2]`の結果を設定 (デフォルト: `10.0.18.0/24`)
    1. `Reserved IP Ranges`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_reserved_ip_ranges[2]`の結果を設定 (デフォルト: `10.0.18.1-10.0.18.9`)
    1. `DNS`に`10.0.0.2`を設定
    1. `Gateway`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .management_subnet_gateways[2]`の結果を設定 (デフォルト: `10.0.18.1`)
    1. `Availability Zones`は3番目のものを選択
1. `Name`に`tas`を設定 (TAS含む主なProductをインストールするネットワーク)
1. `Subnets`の
    1. `VPC Subnet ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_ids[0]`の結果を設定
    1. `CIDR`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_cidrs[0]`の結果を設定 (デフォルト: `10.0.4.0/24`)
    1. `Reserved IP Ranges`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_reserved_ip_ranges[0]`の結果を設定 (デフォルト: `10.0.4.1-10.0.4.9`)
    1. `DNS`に`10.0.0.2`を設定
    1. `Gateway`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_gateways[0]`の結果を設定 (デフォルト: `10.0.4.1`)
    1. `Availability Zones`は1番目のものを選択
1. "Add Subnet"ボタンをクリックし、`Subnets`の
    1. `VPC Subnet ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_ids[1]`の結果を設定
    1. `CIDR`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_cidrs[1]`の結果を設定 (デフォルト: `10.0.5.0/24`)
    1. `Reserved IP Ranges`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_reserved_ip_ranges[1]`の結果を設定 (デフォルト: `10.0.5.1-10.0.5.9`)
    1. `DNS`に`10.0.0.2`を設定
    1. `Gateway`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_gateways[1]`の結果を設定 (デフォルト: `10.0.5.1`)
    1. `Availability Zones`は2番目のものを選択
1. "Add Subnet"ボタンをクリックし、`Subnets`の
    1. `VPC Subnet ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_ids[2]`の結果を設定
    1. `CIDR`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_cidrs[2]`の結果を設定 (デフォルト: `10.0.6.0/24`)
    1. `Reserved IP Ranges`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_reserved_ip_ranges[2]`の結果を設定 (デフォルト: `10.0.6.1-10.0.6.9`)
    1. `DNS`に`10.0.0.2`を設定
    1. `Gateway`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_tas.value -r | jq -r .tas_subnet_gateways[2]`の結果を設定 (デフォルト: `10.0.6.1`)
    1. `Availability Zones`は3番目のものを選択
1. `Name`に`services`を設定 (オンデマンドサービスのMySQL, PostgreSQL, RabbitMQなどをインストールするネットワーク)
1. `Subnets`の
    1. `VPC Subnet ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_ids[0]`の結果を設定
    1. `CIDR`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_cidrs[0]`の結果を設定 (デフォルト: `10.0.8.0/24`)
    1. `Reserved IP Ranges`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_reserved_ip_ranges[0]`の結果を設定 (デフォルト: `10.0.8.1-10.0.8.9`)
    1. `DNS`に`10.0.0.2`を設定
    1. `Gateway`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_gateways[0]`の結果を設定 (デフォルト: `10.0.8.1`)
    1. `Availability Zones`は1番目のものを選択
1. "Add Subnet"ボタンをクリックし、`Subnets`の
    1. `VPC Subnet ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_ids[1]`の結果を設定
    1. `CIDR`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_cidrs[1]`の結果を設定 (デフォルト: `10.0.9.0/24`)
    1. `Reserved IP Ranges`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_reserved_ip_ranges[1]`の結果を設定 (デフォルト: `10.0.9.1-10.0.9.9`)
    1. `DNS`に`10.0.0.2`を設定
    1. `Gateway`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_gateways[1]`の結果を設定 (デフォルト: `10.0.9.1`)
    1. `Availability Zones`は2番目のものを選択
1. "Add Subnet"ボタンをクリックし、`Subnets`の
    1. `VPC Subnet ID`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_ids[2]`の結果を設定
    1. `CIDR`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_cidrs[2]`の結果を設定 (デフォルト: `10.0.10.0/24`)
    1. `Reserved IP Ranges`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_reserved_ip_ranges[2]`の結果を設定 (デフォルト: `10.0.10.1-10.0.10.9`)
    1. `DNS`に`10.0.0.2`を設定
    1. `Gateway`に`cat tas-paving-aws/terraform.tfstate | jq .outputs.stable_config_opsmanager.value -r | jq -r .services_subnet_gateways[2]`の結果を設定 (デフォルト: `10.0.10.1`)
    1. `Availability Zones`は3番目のものを選択


"Save"ボタンをクリックして設定を保存。

#### Assign AZs and Networks

BOSH Director自体をデプロイする先のAZとNetworkを設定します。

https://docs.vmware.com/en/VMware-Tanzu-Operations-Manager/3.0/vmware-tanzu-ops-manager/aws-config-manual.html#step-6-assign-azs-and-networks-5

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/a989673b-90ec-4e52-ac13-3a7362f76c94">

1. `Singleton Availability Zone`に任意のAvailability Zoneを選択 (このAZにBOSH Directorがインストールされる)
1. `Network`に`management`を選択

"Save"ボタンをクリックして設定を保存。

#### Security

BOSH Directorが作成するVMに信頼させるTLS証明書の設定を行います。

https://docs.vmware.com/en/VMware-Tanzu-Operations-Manager/3.0/vmware-tanzu-ops-manager/aws-config-manual.html#step-7-configure-security-6

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/436866f9-09c0-4538-a7f7-a29c3076896e">

1. `Include Tanzu Ops Manager Root CA in Trusted Certs`をチェック

"Save"ボタンをクリックして設定を保存。


ダッシュボードに戻ります。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/4cfc9023-822b-41fb-89fa-f4abb3b173ee">

"REVIEW PENDING CHANGES"ボタンをクリック

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/3ca19958-6379-4cf1-9e18-1e5ea9601a8a">

"APPLY CHANGES"ボタンをクリック。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/a01ca414-7f3a-4cae-8795-953fee1f077a">

"Changes Applied"と表示されれば、インストールは成功です。

[次の記事](/entries/802)でこの環境上にTanzu Application Serviceをインストールします。
