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になる場合があります。 規模次第では嬉しい人がいれば困る人もいるので気をつけてください。