Skip to content

Instantly share code, notes, and snippets.

@enakai00
Last active December 20, 2015 15:19
Show Gist options
  • Save enakai00/6152861 to your computer and use it in GitHub Desktop.
Save enakai00/6152861 to your computer and use it in GitHub Desktop.
DCK Serverを利用してプロセスをフォークする感覚でVMを複製するシェルスクリプト
#!/bin/bash -x
curl -s http://192.168.101.9:5000/dck/api/v1.0/libdck > /tmp/libdck.sh
. /tmp/libdck.sh
function child {
echo "I'm child" > /etc/motd
date >> /etc/motd
dck-poke $pid "child_setup" "true"
}
function parent {
for i in 1 2; do
result=$(dck-fork $pid "child$i")
cpids[i]=$(json_elem "pid" "$result")
done
for cpid in ${cpids[@]}; do
while [[ ! $(dck-peek $cpid "child_setup") == "true" ]]; do
sleep 10
done
done
echo "I'm parent" > /etc/motd
date >> /etc/motd
}
# main
pid=$( json_elem "uuid" \
"$(curl -s http://169.254.169.254/openstack/latest/meta_data.json )" )
forked=$(dck-peek $pid "forked")
if [[ $forked == "true" ]]; then
child
else
parent
fi
exit
########################
libdckが提供するコマンド
# dck-ls
イメージ一覧
# dck-ps
VM一覧
# dck-exec <instance-id> <image-id> <user-data filename>
新規VM起動
# dck-fork <instance-id>
既存VMのフォーク
# dck-ppid <instance-id>
親VMのID取得
# dck-cpid <instance-id>
子VMのID取得
# dck-poke <instance-id> <key> <value>
VMのメタデータセット
# dck-peek <instance-id> <key>
VMのメタデータ取得
# dck-pip <instance-id>
VMのIP取得
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment