Last active
December 20, 2015 15:19
-
-
Save enakai00/6152861 to your computer and use it in GitHub Desktop.
DCK Serverを利用してプロセスをフォークする感覚でVMを複製するシェルスクリプト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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