---
title: VMware Tanzu Application Service for VMs 6.0 (Small Footprint版) on AWSでSpot Instanceを使用するメモ
tags: ["AWS", "Cloud Foundry", "Pivotal Cloud Foundry", "Ops Manager", "TAS", "Spot Instance"]
categories: ["Dev", "PaaS", "CloudFoundry", "PCF"]
date: 2024-07-01T07:26:31Z
updated: 2024-07-01T07:27:12Z
---

[前の記事](/entries/802)で、VMware Tanzu Application Service for VMs (TAS) をAWSにインストールをしました。
この記事では、Spot Instanceを使用して、EC2のインスタンス使用料金を大幅に下げる方法を紹介します。

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

### VM Extensionの作成

TASで使用するVMでSpot Instanceを使うかどうかは[VM Extension](https://bosh.io/docs/aws-cpi/#resource-pools)で設定できます。

`vm-extension-spot-instance.yml`にspot instanceを使用する定義を記述します。`spot_bid_price`はSpot Instanceのセリの最高価格(USD/hour)です。ここでは$1.0に設定しておきます。
TASで使用するVMでは$1.0には到達しないので、基本的にどんな価格でも競り落とす想定です。

```yaml
cat <<EOF > vm-extension-spot-instance.yml
---
vm-extension-config:
  name: spot-instance
  cloud_properties:
    spot_bid_price: 1.0
    spot_ondemand_fallback: true
---
EOF
```

VM ExtensionをOps Managerに登録します。

```
om --env env.yml create-vm-extension -c vm-extension-spot-instance.yml
```

次にTASの各VMにこのVM Extensionを適用する設定を`additional-vm-extensions-cf.yml`に記述します。
使用する全てのVM Extensionを集約して設定する必要があることに気をつけてください。

```yaml
cat <<EOF > additional-vm-extensions-cf.yml
---
product-name: cf
resource-config:
  compute:
    additional_vm_extensions:
    - spot-instance
  control:
    additional_vm_extensions:
    - ssh-lb-security-groups
    - cloud-controller-iam
    - spot-instance
  database:
    additional_vm_extensions:
    - spot-instance
  router:
    additional_vm_extensions:
    - web-lb-security-groups
    - spot-instance
---
EOF
```

この設定をOps Managerに反映します。

```
om --env env.yml configure-product -c additional-vm-extensions-cf.yml
```

### Apply Changes

Ops Managerのダッシュボードから"REVIEW PENDING CHANGES"をクリックします。

"BOSH Director"と"Small Footprint VMware Tanzu Application Service"それぞれの"SEE CHANGES"を確認してください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/d1568871-e965-4a57-ad81-08be3d64163b">

次のようなDiffになっていてればOKです。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/5ddc8569-bcbe-4717-a635-cfd329b3840d">

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/683009dc-5845-4efd-b5bb-18bb198dd902">

確認したら元のページに戻って"APPLY CHANGES"ボタンをクリックしてください。

設定が反映されたら、EC2のインスタンス一覧からTASのVMの"インスタンスのライフラサイクル"が`spot`になっていることを確認してください。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/6564682a-5d58-4fb3-93b4-e2cdd85d8736">

またスポットリクエスト一覧からも4つのリクエストを確認することができます。

<img width="1024" alt="image" src="https://github.com/making/blog.ik.am/assets/106908/a3fcef59-614a-4d5b-acb0-86a6daeb4635">


2024/7/1のタイミングでは、以下の金額になっています。

| VM Type      | On-Demand Price | Spot Price |
|--------------|-----------------|------------|
| r5a.large    | $0.1370         | $0.0484    |
| t3a.micro    | $0.0122         | $0.0042    |
| t3a.medium   | $0.0490         | $0.0170    |

約65%のコスト削減になります。

もし、Spot InstanceのVMが削除された場合、BOSH Directorによって、再度セリに参加して、新しい価格でVMを自動作成します。
