📝 BLOG.IK.AM

@making's memo
(🗃 Categories 🏷 Tags)

PCF OpsManagerでVM Typeを変更する

🗃 {Dev/PaaS/CloudFoundry/PCF}

🏷 AWS 🏷 Cloud Foundry 🏷 Ops Manager 🏷 Pivotal Cloud Foundry

🗓 Updated at 2018-07-02T21:08:42+09:00 by Toshiaki Maki  🗓 Created at 2018-07-02T16:59:02+09:00 by Toshiaki Maki  {✒️️ Edit  ⏰ History}


Pivotal Cloud FoundryのOps Managerで指定可能なVM Typeはインストール時にいくつかプリセットされていますが、Ops Manager APIを使って変更、追加、削除できます。

変更するためのスクリプトを貼っておきます。

update-vm-types.sh

#!/bin/bash

set -eu

om --target https://$OPSMAN_DOMAIN_OR_IP_ADDRESS \
   --skip-ssl-validation \
   --username "$OPS_MGR_USR" \
   --password "$OPS_MGR_PWD" \
   curl \
   --silent \
   --path /api/v0/vm_types > vm_types.json

cat <<EOF > ops.yml
- type: replace
  path: /vm_types/name=t2.nano?
  value: 
    cpu: 1
    ephemeral_disk: 8192
    name: t2.nano
    ram: 512
- type: replace
  path: /vm_types/name=t2.medium?
  value: 
    cpu: 2
    ephemeral_disk: 32768
    name: t2.medium
    ram: 4096
- type: replace
  path: /vm_types/name=m4.large?
  value: 
    cpu: 2
    ephemeral_disk: 32768
    name: m4.large
    ram: 8192
- type: remove
  path: /vm_types/name=c4.large?
EOF

bosh int vm_types.json | yq r - -j | python -m json.tool > vm_types_old.json
bosh int vm_types.json -o ops.yml | yq r - -j | python -m json.tool > vm_types_new.json
diff vm_types_old.json vm_types_new.json | cat

om --target https://$OPSMAN_DOMAIN_OR_IP_ADDRESS \
   --skip-ssl-validation \
   --username "$OPS_MGR_USR" \
   --password "$OPS_MGR_PWD" \
   curl \
   --silent \
   --request PUT \
   --path /api/v0/vm_types \
   --data "$(cat vm_types_new.json)"

rm -f ops.yml vm_types*.json

ops.ymlを作成している箇所を環境と好みに応じて変更してください。

上記の例はAWSの場合で、

  • t2.nanoを追加
  • プリセットされているt2.mediumのCPU数/メモリがなぜか1/3.75GBなのを2/4GBに変更
  • プリセットされているm4.largeのメモリがなぜか7.5GBなのを8GBに変更
  • プリセットされているc4.largeを削除

を適用しています。

元々はm5.largeを追加したかったのですが、BOSH AWS CPIでm5.largeが使えるようになるのはv71以降のようです(参考コミット)。PCF 2.1ではv69が使われています。

使い方は

chmod +x update-vm-types.sh

export OPSMAN_DOMAIN_OR_IP_ADDRESS=aaa.bbb.ccc.ddd
export OPS_MGR_USR=admin
export OPS_MGR_PWD=password

./update-vm-types.sh

です。

次のコマンドをインストールしておく必要があります。

Ops ManagerはこのVM Typeで設定されているCPU数、メモリサイズを見てインストール対象のソフトウェアが最低限のサイズを満たしているかチェックします。
ここの閾値が4GBだったり8GBだったりするので、3.75GB -> 4GB、7.5GB -> 8GBに変更するのは最小のVM Typeを使用するには実は重要だったりします...
VM TypeをAutomaticにしている場合は、推奨のVM Typeが自動で選択されるので、AWSにPCFをインストールしている場合で上記を設定を行えばいくつかのVMがより小さいVM Typeになる場合があります。
規模次第では嬉しい人がいれば困る人もいるので気をつけてください。