Skip to content

xs-openstack: Save hackson code #167

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions scaleComputeUsingXVA/config.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[ComputeHost]
#name=xrtuk-11-36
name=xrtuk-11-36
#ip=10.62.65.34
ip=10.71.192.128
user=root
password=xenroot

[ComputeNode]
name=computeTest
user=root
password=admin
ip=10.71.193.2

[ControlNode]
ip=10.62.20.182



47 changes: 47 additions & 0 deletions scaleComputeUsingXVA/config_cpu_node.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/bin/bash
set -x

source ./readconfig.sh

set -x

function init_conf_info() {
CNODE_USER=$(readIni config.ini ComputeNode user)
CNODE_PWD=$(readIni config.ini ComputeNode password)
cnode_ip=$(readIni config.ini ComputeNode ip)
host_ip=$(readIni config.ini ComputeHost ip)
ctl_ip=$(readIni config.ini ControlNode ip)
}

function config_cnode_entry() {
set -ex
if [ ! -f $CNODE_INFO_FILE ]; then
exit -1
fi
echo $CNODE_INFO_FILE
init_conf_info
for ip in $cnode_ip
do
echo $cnode_ip
create_no_pwd_access $cnode_ip $CNODE_USER $CNODE_PWD
on_no_pwd_host $cnode_ip $CNODE_USER << CONFIG_CNODE_BLOCK
if ! sudo ls ~root/.ssh;
then
sudo mkdir -p ~root/.ssh/
fi
CONFIG_CNODE_BLOCK

scp $_SSH_OPTIONS ssh_key.priv root@$ip:/root/.ssh/id_rsa
scp $_SSH_OPTIONS ssh_key.priv.pub root@$ip:/root/.ssh/id_rsa.pub

create_no_pwd_access $host_ip root xenroot
on_no_pwd_host $cnode_ip $CNODE_USER << CONFIG_CNODE_BLOCK

set +e
set -x
sudo sed -i "s/10.62.66.6/$ctl_ip/g" \`grep 10.62.66.6 -rl /etc/\`
DEST=/opt/stack XENAPI_CONNECTION_URL="http://$host_ip" DOMZERO_USER='root' /opt/stack/os-xenapi/devstack/plugin.sh 'stack' install
CONFIG_CNODE_BLOCK

done
}
112 changes: 112 additions & 0 deletions scaleComputeUsingXVA/prepare_cpu_node.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
#!/bin/bash
set -ex

source ./readconfig.sh

ComputeHostName=$(readIni config.ini ComputeHost name)
ComputeHostIP=$(readIni config.ini ComputeHost ip)
ComputeHostUser=$(readIni config.ini ComputeHost user)
ComputeHostPassword=$(readIni config.ini ComputeHost password)
ComputeNodeName=$(readIni config.ini ComputeNode name)
ComputeNodeUser=$(readIni config.ini ComputeNode user)
ComputeNodePassword=$(readIni config.ini ComputeNode password)


#sshpass -p "xenroot" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected] "pwd; ls"
# ssh_command $host $user $password $command
sudo apt-get install sshpass

function ssh_command {
sshpass -p ${ComputeHostPassword} ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${ComputeHostUser}@${ComputeHostIP} $@
}

VMUUID=""
VMIP=""
ControllerIP="10.62.66.6"


function import_cpu {
importXva="xe vm-import filename=/root/computeNodeFinal.xva"
VMUUID=$(ssh_command $importXva)
}

function start_cpu {
start_cpu="xe vm-start uuid=$VMUUID"
ssh_command $start_cpu
}

function get_xva_ip {
local period=10
local max_tries=10
local i=0

local get_ip="xe vm-param-get uuid=$VMUUID param-name=networks | tr ';' '\n' | grep '0/ip:' | cut -d: -f2"
while true; do
if [ $i -ge $max_tries ]; then
echo "Timeout; ip address for VM: $VMUUID"
exit 11
fi

ipaddress=$(ssh_command $get_ip)

if [ -z "$ipaddress" ]; then
sleep $period
i=$((i+1))
else
VMIP=$(echo $ipaddress | sed s/[[:space:]]//g)
break
fi
done
}

function write_config {
writeIni config.ini ComputeNode ip $VMIP
}

function ssh_cpu {
sshpass -p ${ComputeNodePassword} ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${ComputeNodeUser}@${VMIP} $@
}

function configure_cpu_hostIP {
findfile="grep -lr computeHostIP /etc"
files=$(ssh_cpu $findfile)
for file in $files; do
ssh_cpu sed -i \"s/computeHostIP/${ComputeHostIP}/g\" $file
done
}

function configure_cpu_controllerIP {
findfile="grep -lr controllerIP /etc"
files=$(ssh_cpu $findfile)
for file in $files; do
ssh_cpu sed -i \"s/controllerIP/${ControllerIP}/g\" $file
done
}

function configure_cpu_hostName {
findfile="grep -lr computeHostName /etc"
files=$(ssh_cpu $findfile)
for file in $files; do
ssh_cpu sed -i \"s/computeHostName/${ComputeHostName}/g\" $file
done
}

function configure_cpu_myIP {
findfile="grep -lr computeNodeMyIP /etc"
files=$(ssh_cpu $findfile)
for file in $files; do
ssh_cpu sed -i \"s/computeNodeMyIP/${VMIP}/g\" $file
done
}

function prepare_cpu_node_entry {
import_cpu
start_cpu
get_xva_ip
write_config
configure_cpu_hostIP
configure_cpu_controllerIP
configure_cpu_hostName
configure_cpu_myIP
}

16 changes: 16 additions & 0 deletions scaleComputeUsingXVA/readconfig.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
readIni() {
file=$1;section=$2;item=$3;
val=$(awk -F '=' '/\['${section}'\]/{a=1} (a==1 && "'${item}'"==$1){a=0;print $2}' ${file})
echo ${val}
}

writeIni() {
file=$1;section=$2;item=$3;val=$4
awk -F '=' '/\['${section}'\]/{a=1} (a==1 && "'${item}'"==$1){gsub($2,"'${val}'");a=0} {print $0}' ${file} 1<>${file}
}

readIniSections() {
file=$1;
val=$(awk '/\[/{printf("%s ",$1)}' ${file} | sed 's/\[//g' | sed 's/\]//g')
echo ${val}
}
95 changes: 95 additions & 0 deletions scaleComputeUsingXVA/scale_out_cpu.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
#!/bin/bash
set -ex

tmp_path=$(mktemp -d)
CNODE_INFO_FILE=$tmp_path/cnode_info.txt
host_inv_path=''
controller_ip=''

# the format of compute node information should like:
# host_ip: XENSERVER_IP_ADDR1 cnode_ip: CPU_IP_ADDR1
# host_ip: XENSERVER_IP_ADDR2 cnode_ip: CPU_IP_ADDR2
# ...
echo "cnode_ip: CPU_IP_ADDR" > $CNODE_INFO_FILE

REMAINING_OPTIONS="$#"
while getopts ":i:p:" flag; do
REMAINING_OPTIONS=$(expr "$REMAINING_OPTIONS" - 1)
case "$flag" in
i)
host_inv_path="$OPTARG"
REMAINING_OPTIONS=$(expr "$REMAINING_OPTIONS" - 1)
;;
p)rm
controller_ip="$OPTARG"
REMAINING_OPTIONS=$(expr "$REMAINING_OPTIONS" - 1)
;;
\?)
echo "Unexpected argument"
exit -1
esac
done

if [ ! -f ssh_key.priv ]
then
yes | ssh-keygen -t rsa -N "" -f ssh_key.priv
fi

# Set up internal variables
_SSH_OPTIONS="\
-o BatchMode=yes \
-o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null \
-i ssh_key.priv"

# input the server ip, username and password to acheive no pwd access
function create_no_pwd_access() {
username=$2
server_ip=$1
password=$3
sshpass -p $password \
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
$username@$server_ip "if [ ! -f ~/.ssh/authorized_keys ]; then mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys; fi"
PUBKEY=$(cat ssh_key.priv.pub)
sshpass -p $password \
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
$username@$server_ip "echo $PUBKEY >> ~/.ssh/authorized_keys"
}
# excute remote shell on no pwd host
function on_no_pwd_host() {
username=$2
server_ip=$1
ssh $_SSH_OPTIONS "$username@$server_ip" bash -s --
}

source prepare_cpu_node.sh # managed by liang
source config_cpu_node.sh

prepare_cpu_node_entry # managed by liang
config_cnode_entry
echo $?
set -x

source ./readconfig.sh

CNODE_USER=$(readIni config.ini ComputeNode user)
CNODE_PWD=$(readIni config.ini ComputeNode password)
cnode_ip=$(readIni config.ini ComputeNode ip)
host_ip=$(readIni config.ini ComputeHost ip)

on_no_pwd_host $cnode_ip $CNODE_USER <<CMDEND
set -x
# service start staff
service_list=\$(ls -al /etc/systemd/system | grep devstack@ | awk '{ print \$9 }')
for srv in \$service_list
do
systemctl enable \$srv 2>&1 | tee -a /tmp/test.wjh
systemctl start \$srv
done
CMDEND
#nova-manage cell_v2 simple_cell_setup
/opt/stack/devstack/tools/discover_hosts.sh > /tmp/dis.log
# verify staff
# log staff

rm -rf $tmp_path
27 changes: 27 additions & 0 deletions scaleComputeUsingXVA/ssh_key.priv
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAv1I/e4g0sD6SKIHuobwHziTZjkZLZH1XUM4VGIhSxuhQuUFD
KlGIfDvompjeyBpV5v/MfS/t+oNWufdevZToCc6Upzb1q5Q6gdXGDbxvD6fwxluc
O05+d7DF3K5qn78cFLLwbo4ZrTcT1iMrm4SoGloMEi5+6le5bxvLkFQ+AgiKT5Gf
RefM26fsosxVMKM5QvTu5m62am8FUSXrNJ7uxW5QpCp7bWfrbtvjewsndmRkYa9s
Pm8yNxYg30x/951DJNyciTAWmH04a6J42GLbwqIFPuiI1iyY3omuMVP9vgRU9OkB
3WeaDt4qMWbBoWCirO0f2wC3pxMsEyuNHKRQVQIDAQABAoIBAFoPW3bJHRRBwAd1
cmGL45i0W/zPNjotjmapO+D6ewzK2wT5paZMDxV8FfiAMY68ZueATkA3yax9Gtwb
h+tyJvBG4E7+XhLQieIIQVzB8P3LrlmRUi/QuVOaUOma6PIdwhg0S12fYpLZNGs+
zw48Ge2dqcT9Qh0KAm49BUwBe9b0Yc3laT7+Sj3w4h32C83NS9sstFuiYQ1E3AOT
SWEYcrSwIRufWzB74vuUS8zZDb2KQGPTVdHHR8yl78KU2wCLoKT0dUg5qCEreqdX
9hHTJrF1X5E6N2cdLAc2icEqKRY9xtBECcT25OpZcHUkkwXIfxLFuNc7TvQwCF97
KtGc9IECgYEA4nE2Z0Z/Q7EiBGLGjnsL0ftA9Q4Gr2U/UQIOyhffQW4v0IiXbvbW
jALMEc6iWh9clFZY7hAlU32bFCsx73X//0YD+dl0xFXEU/q1KH8JJMTZ1614qMCN
kgot1Tl1U0HX1OOnSI36owbcTDxVvsWnPCvEctTM8o/CqFpfJ8AyQYUCgYEA2Etv
QfxCRVFmMOK7jxRQkpwGXVJRUVvNypPnrBZxivGNBRSVXY3+O7HF1lgb5+wqiHJW
bfC052eyFHujORTNiMYoft2c8mjMNkm0XBngJEHX5yT7Kfoy+XMZVmxT4m2lEIn9
HSmliw+nwh7IBMfP/2Weagh5he3hsgvqzFGkpJECgYAmrkYn0CAPNSPlceYPEq/L
N8s50SKNNZNiSCK0nO1TJPpf+eU8XEf79MJdTFnpYTAUWseoKvPlVjB2eoZ2LEcF
mTU2qdHLdAcsfUgS2dh7AnFf6U8SLIpCZyC7KqyDA11WDWlW+IHW9WYOU8Ql6WeO
3L8bCoTT7oDG92EHzkoHbQKBgDXMhY7nHOC6/20XaEmNZwEgd+DMcdeHuycxJMXE
C1fg/w+NcB2GDP9yF2BaKA7GykmIDwFnhsesHjpECnRPPVRQ3Y+4taoB8RFrwcXK
1dqO2hHvO93UEsvDGkFJzo+acB0uBVw0mK1/Jl39ZAj0XkMLVpzPINL0OVgc6LkL
caVRAoGBAMF+t6ja3f74vHhJbtWfSf/jSSof4X3wPe4IVwM9d3zXd10VM9MUvhVI
XGSCGo035TWB1VKMtbjM04eYwkCKyQN5VCuqZ8WysRg1/7sz/WwlNKhlYKcv6HU3
bcQwaV453NVcPXuttgrmV+nhAXiL3EU53mHTHgTq7YbKu1TF9aTo
-----END RSA PRIVATE KEY-----
1 change: 1 addition & 0 deletions scaleComputeUsingXVA/ssh_key.priv.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/Uj97iDSwPpIoge6hvAfOJNmORktkfVdQzhUYiFLG6FC5QUMqUYh8O+iamN7IGlXm/8x9L+36g1a59169lOgJzpSnNvWrlDqB1cYNvG8Pp/DGW5w7Tn53sMXcrmqfvxwUsvBujhmtNxPWIyubhKgaWgwSLn7qV7lvG8uQVD4CCIpPkZ9F58zbp+yizFUwozlC9O7mbrZqbwVRJes0nu7FblCkKnttZ+tu2+N7Cyd2ZGRhr2w+bzI3FiDfTH/3nUMk3JyJMBaYfThronjYYtvCogU+6IjWLJjeia4xU/2+BFT06QHdZ5oO3ioxZsGhYKKs7R/bALenEywTK40cpFBV stack@DevStackOSDomU