最近SoftLayerのVirtual Serverを作っては落としとしているので、DC、ホスト名、OSを引数にしてSoftLayerにVirtual Serverを立ち上げるスクリプトをSL CLIを使って書いた。
ドメイン名やSSHキー名、CPU数とメモリ量は決め打ち。
そのDCに既にVLANが作成されていた場合、そのVLANに明示的に所属させる。
※ sl vlan list
がPUBLICかPRIVATEかを返してくれないので、VLANが持つIPの数で判別している。微妙。。。
※ VLANが二本以上ある場合は未テスト
※ VLANの割り当て数を超えた場合にどうなるのかも未テスト
create_vs.sh
#!/bin/bash
if [ $# -ne 3 ]; then
echo "usage: $0 DATACENTER HOSTNAME OS"
exit 1
fi
DC=$1
HOSTNAME=$2
OS=$3
DOMAIN="your.domain.name"
SSH_KEY="your_ssh_key_registername"
CPU="1"
MEM="1024"
CMD="/usr/local/bin/sl vs create --hourly --really"
CMD="$CMD --datacenter=$DC --domain=$DOMAIN --hostname=$HOSTNAME"
CMD="$CMD --cpu=$CPU --memory=$MEM --os=$OS --key=$SSH_KEY"
PRIVATE_VLAN=`/usr/local/bin/sl vlan list | grep $DC | grep " 61 " | cut -d " " -f1`
if [ -n "${PRIVATE_VLAN}" ]; then
echo "use private vlan ${PRIVATE_VLAN}"
CMD="$CMD --vlan_private=${PRIVATE_VLAN}"
fi
PUBLIC_VLAN=`/usr/local/bin/sl vlan list | grep $DC | grep " 13 " | cut -d " " -f1`
if [ -n "${PUBLIC_VLAN}" ]; then
echo "use public vlan ${PUBLIC_VLAN}"
CMD="$CMD --vlan_public=${PUBLIC_VLAN}"
fi
set -x
$CMD
ついでに、全てのVirtual Serverを問答無用でCancelするスクリプト。
cancel_all_vs.sh
#!/bin/bash
for vs in `/usr/local/bin/sl vs list | cut -d " " -f1`; do
echo cancel $vs
/usr/local/bin/sl vs cancel $vs --really
done