Skip to content

Commit e8a76cd

Browse files
author
wjh
committed
xs-openstack: Save hackathon code
Save hackathon code for xva openstack scale out
1 parent b4caf02 commit e8a76cd

File tree

7 files changed

+314
-0
lines changed

7 files changed

+314
-0
lines changed

scaleComputeUsingXVA/config.ini

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[ComputeHost]
2+
name=xrtuk-11-36
3+
#ip=10.62.65.34
4+
ip=10.71.192.128
5+
user=root
6+
password=xenroot
7+
8+
[ComputeNode]
9+
name=computeTest
10+
user=root
11+
password=admin
12+
ip=10.71.193.96
13+
14+
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/bin/bash
2+
set -x
3+
4+
source ./readconfig.sh
5+
6+
set -x
7+
8+
function init_conf_info() {
9+
CNODE_USER=$(readIni config.ini ComputeNode user)
10+
CNODE_PWD=$(readIni config.ini ComputeNode password)
11+
cnode_ip=$(readIni config.ini ComputeNode ip)
12+
host_ip=$(readIni config.ini ComputeHost ip)
13+
}
14+
15+
function config_cnode_entry() {
16+
set -ex
17+
if [ ! -f $CNODE_INFO_FILE ]; then
18+
exit -1
19+
fi
20+
echo $CNODE_INFO_FILE
21+
init_conf_info
22+
for ip in $cnode_ip
23+
do
24+
echo $cnode_ip
25+
create_no_pwd_access $cnode_ip $CNODE_USER $CNODE_PWD
26+
on_no_pwd_host $cnode_ip $CNODE_USER << CONFIG_CNODE_BLOCK
27+
if ! sudo ls ~root/.ssh;
28+
then
29+
sudo mkdir -p ~root/.ssh/
30+
fi
31+
CONFIG_CNODE_BLOCK
32+
33+
scp $_SSH_OPTIONS ssh_key.priv root@$ip:/root/.ssh/id_rsa
34+
scp $_SSH_OPTIONS ssh_key.priv.pub root@$ip:/root/.ssh/id_rsa.pub
35+
36+
create_no_pwd_access $host_ip root xenroot
37+
on_no_pwd_host $cnode_ip $CNODE_USER << CONFIG_CNODE_BLOCK
38+
39+
set +e
40+
set -x
41+
DEST=/opt/stack XENAPI_CONNECTION_URL="http://$host_ip" DOMZERO_USER='root' /opt/stack/os-xenapi/devstack/plugin.sh 'stack' install
42+
# service start staff
43+
service_list=\$(ls -al /etc/systemd/system | grep devstack@ | awk '{ print \$9 }')
44+
for srv in \$service_list
45+
do
46+
sudo systemctl enable \$srv 2>&1 | tee -a /tmp/test.wjh
47+
sudo systemctl start \$srv
48+
done
49+
CONFIG_CNODE_BLOCK
50+
51+
done
52+
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
#!/bin/bash
2+
set -ex
3+
4+
source ./readconfig.sh
5+
6+
ComputeHostName=$(readIni config.ini ComputeHost name)
7+
ComputeHostIP=$(readIni config.ini ComputeHost ip)
8+
ComputeHostUser=$(readIni config.ini ComputeHost user)
9+
ComputeHostPassword=$(readIni config.ini ComputeHost password)
10+
ComputeNodeName=$(readIni config.ini ComputeNode name)
11+
ComputeNodeUser=$(readIni config.ini ComputeNode user)
12+
ComputeNodePassword=$(readIni config.ini ComputeNode password)
13+
14+
15+
#sshpass -p "xenroot" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected] "pwd; ls"
16+
# ssh_command $host $user $password $command
17+
function ssh_command {
18+
sshpass -p ${ComputeHostPassword} ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${ComputeHostUser}@${ComputeHostIP} $@
19+
}
20+
21+
VMUUID=""
22+
VMIP=""
23+
ControllerIP="10.62.66.6"
24+
25+
26+
function import_cpu {
27+
importXva="xe vm-import filename=/root/computeNodeFinal.xva"
28+
VMUUID=$(ssh_command $importXva)
29+
}
30+
31+
function start_cpu {
32+
start_cpu="xe vm-start uuid=$VMUUID"
33+
ssh_command $start_cpu
34+
}
35+
36+
function get_xva_ip {
37+
local period=10
38+
local max_tries=10
39+
local i=0
40+
41+
local get_ip="xe vm-param-get uuid=$VMUUID param-name=networks | tr ';' '\n' | grep '0/ip:' | cut -d: -f2"
42+
while true; do
43+
if [ $i -ge $max_tries ]; then
44+
echo "Timeout; ip address for VM: $VMUUID"
45+
exit 11
46+
fi
47+
48+
ipaddress=$(ssh_command $get_ip)
49+
50+
if [ -z "$ipaddress" ]; then
51+
sleep $period
52+
i=$((i+1))
53+
else
54+
VMIP=$(echo $ipaddress | sed s/[[:space:]]//g)
55+
break
56+
fi
57+
done
58+
}
59+
60+
function write_config {
61+
writeIni config.ini ComputeNode ip $VMIP
62+
}
63+
64+
function ssh_cpu {
65+
sshpass -p ${ComputeNodePassword} ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${ComputeNodeUser}@${VMIP} $@
66+
}
67+
68+
function configure_cpu_hostIP {
69+
findfile="grep -lr computeHostIP /etc"
70+
files=$(ssh_cpu $findfile)
71+
for file in $files; do
72+
ssh_cpu sed -i \"s/computeHostIP/${ComputeHostIP}/g\" $file
73+
done
74+
}
75+
76+
function configure_cpu_controllerIP {
77+
findfile="grep -lr controllerIP /etc"
78+
files=$(ssh_cpu $findfile)
79+
for file in $files; do
80+
ssh_cpu sed -i \"s/controllerIP/${ControllerIP}/g\" $file
81+
done
82+
}
83+
84+
function configure_cpu_hostName {
85+
findfile="grep -lr computeHostName /etc"
86+
files=$(ssh_cpu $findfile)
87+
for file in $files; do
88+
ssh_cpu sed -i \"s/computeHostName/${ComputeHostName}/g\" $file
89+
done
90+
}
91+
92+
function configure_cpu_myIP {
93+
findfile="grep -lr computeNodeMyIP /etc"
94+
files=$(ssh_cpu $findfile)
95+
for file in $files; do
96+
ssh_cpu sed -i \"s/computeNodeMyIP/${VMIP}/g\" $file
97+
done
98+
}
99+
100+
function prepare_cpu_node_entry {
101+
import_cpu
102+
start_cpu
103+
get_xva_ip
104+
write_config
105+
configure_cpu_hostIP
106+
configure_cpu_controllerIP
107+
configure_cpu_hostName
108+
configure_cpu_myIP
109+
}
110+

scaleComputeUsingXVA/readconfig.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
readIni() {
2+
file=$1;section=$2;item=$3;
3+
val=$(awk -F '=' '/\['${section}'\]/{a=1} (a==1 && "'${item}'"==$1){a=0;print $2}' ${file})
4+
echo ${val}
5+
}
6+
7+
writeIni() {
8+
file=$1;section=$2;item=$3;val=$4
9+
awk -F '=' '/\['${section}'\]/{a=1} (a==1 && "'${item}'"==$1){gsub($2,"'${val}'");a=0} {print $0}' ${file} 1<>${file}
10+
}
11+
12+
readIniSections() {
13+
file=$1;
14+
val=$(awk '/\[/{printf("%s ",$1)}' ${file} | sed 's/\[//g' | sed 's/\]//g')
15+
echo ${val}
16+
}

scaleComputeUsingXVA/scale_out_cpu.sh

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#!/bin/bash
2+
set -ex
3+
4+
tmp_path=$(mktemp -d)
5+
CNODE_INFO_FILE=$tmp_path/cnode_info.txt
6+
host_inv_path=''
7+
controller_ip=''
8+
9+
# the format of compute node information should like:
10+
# host_ip: XENSERVER_IP_ADDR1 cnode_ip: CPU_IP_ADDR1
11+
# host_ip: XENSERVER_IP_ADDR2 cnode_ip: CPU_IP_ADDR2
12+
# ...
13+
echo "cnode_ip: CPU_IP_ADDR" > $CNODE_INFO_FILE
14+
15+
REMAINING_OPTIONS="$#"
16+
while getopts ":i:p:" flag; do
17+
REMAINING_OPTIONS=$(expr "$REMAINING_OPTIONS" - 1)
18+
case "$flag" in
19+
i)
20+
host_inv_path="$OPTARG"
21+
REMAINING_OPTIONS=$(expr "$REMAINING_OPTIONS" - 1)
22+
;;
23+
p)rm
24+
controller_ip="$OPTARG"
25+
REMAINING_OPTIONS=$(expr "$REMAINING_OPTIONS" - 1)
26+
;;
27+
\?)
28+
echo "Unexpected argument"
29+
exit -1
30+
esac
31+
done
32+
33+
if [ ! -f ssh_key.priv ]
34+
then
35+
yes | ssh-keygen -t rsa -N "" -f ssh_key.priv
36+
fi
37+
38+
# Set up internal variables
39+
_SSH_OPTIONS="\
40+
-o BatchMode=yes \
41+
-o StrictHostKeyChecking=no \
42+
-o UserKnownHostsFile=/dev/null \
43+
-i ssh_key.priv"
44+
45+
# input the server ip, username and password to acheive no pwd access
46+
function create_no_pwd_access() {
47+
username=$2
48+
server_ip=$1
49+
password=$3
50+
sshpass -p $password \
51+
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
52+
$username@$server_ip "if [ ! -f ~/.ssh/authorized_keys ]; then mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys; fi"
53+
PUBKEY=$(cat ssh_key.priv.pub)
54+
sshpass -p $password \
55+
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
56+
$username@$server_ip "echo $PUBKEY >> ~/.ssh/authorized_keys"
57+
}
58+
# excute remote shell on no pwd host
59+
function on_no_pwd_host() {
60+
username=$2
61+
server_ip=$1
62+
ssh $_SSH_OPTIONS "$username@$server_ip" bash -s --
63+
}
64+
65+
source prepare_cpu_node.sh # managed by liang
66+
source config_cpu_node.sh
67+
68+
prepare_cpu_node_entry # managed by liang
69+
config_cnode_entry
70+
echo $?
71+
set -x
72+
73+
source ./readconfig.sh
74+
75+
CNODE_USER=$(readIni config.ini ComputeNode user)
76+
CNODE_PWD=$(readIni config.ini ComputeNode password)
77+
cnode_ip=$(readIni config.ini ComputeNode ip)
78+
host_ip=$(readIni config.ini ComputeHost ip)
79+
80+
on_no_pwd_host $cnode_ip $CNODE_USER <<CMDEND
81+
set -x
82+
# service start staff
83+
service_list=\$(ls -al /etc/systemd/system | grep devstack@ | awk '{ print \$9 }')
84+
for srv in \$service_list
85+
do
86+
systemctl enable \$srv 2>&1 | tee -a /tmp/test.wjh
87+
systemctl start \$srv
88+
done
89+
CMDEND
90+
/opt/stack/devstack/tools/discover_hosts.sh > /tmp/dis.log
91+
# verify staff
92+
# log staff
93+
94+
rm -rf $tmp_path

scaleComputeUsingXVA/ssh_key.priv

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEpQIBAAKCAQEAyngr37eMTVkFJZjhth41uqDC/0pHvG2/HIqOBF/f/4P/1CBG
3+
M0RJEXpyWDq4Oa0qFDzxCq3WaPxBQ+3FbW8tdlemq2JR9GTZdXDOzokqaWutBvN8
4+
Had1TogaD2cyEwsxn1cKGsfLQlMfcSQKvsNGnbMLfD0A17h1hJTSztt0itDKlAxQ
5+
J1LqhuXTY0p5SwjW4m7ZXYvhCJI6kJz/amxciAfEQ8a2V9kCdDB/Yg+BYwZ/QtTy
6+
4hue/hjcq5XQKzBJmkf6VyrQF72jPV42Ljvv/Kw6/H3XyVRgSHSCLT+jPJ6Y+GIS
7+
PdgHg1caRajnynbf+g75KhtHDd1Ef1/b53y88QIDAQABAoIBAQC2aPX+JDt/JAiD
8+
Cu2vSiBV96g2oBFpLebUK/Au+MGyTpYZ4sncPlUmLg7+dkirjdsvSIhRerSE+V9D
9+
d+A668Mlr2o1VetIJ+PS7sMjSGixeZT1gj/753bEPdJctjhi997JE33DCuWQ55qY
10+
MESOARiJ01kxoTQ1JbaasAoM26JvvHnLTHkFwZnsQLVziBU1bZOTSiL6d2jMFzVD
11+
w2g859jZ5ALQc5X99ZXhmRCqNoLK0vzvhM4Vq3cFkaEV6/BYNCkbxj/eRSdQOBcS
12+
F86t9UW/V+1CHuVbktkxfEa3YBKombEQBxW95v3n0Zknm/nLZuhyLWb3O+SxfmD3
13+
Pwk0CtPBAoGBAORuKBSpyfzNVMFpNdyG5b96/i7zKomb/1UbwrDJSGoSR5EqQIMc
14+
8dSiUXsNnSOOcbJyBtSHGssk0xLKGm1Qe5z0qmcbleqSR2v/PKkvaGSJVgOB+nDn
15+
Pp95B4409HCpRqfqGHbVQJ6cAKb3egYoqKI0yAz9tQn4D3p5VpN7Lyw1AoGBAOLn
16+
5dgJNDoPircdqWUNzE1+PRzKPfKYFl4iLP+heDWI/23bFDqKyWbY3W3Lt9aVes3P
17+
iBSh9szfUo8Sl8i+asmcKpe0ealEC+xzQe1CPSFTeG6NEdMpgKbu3LFtI4Z6Yqtz
18+
bma3XDOdIRB/Qkg39VDTa8EOVODrIHPbRLclDs1NAoGATrP1c0kcotFMBmdte1Gv
19+
Ds4djaeSXF83Fee+qJJxNLqfldBs8b+jQpO6Zx9FqN6HJehLmiYCgUNqxeqEOG2m
20+
aWmS3HuQp4VGvlruV4xR93GqBQNfek7yMJfOlpyAK+DmyyvIyginfv5Y6y4RCNYx
21+
Y9Gzq2YuXgTtsFDmF2I12pECgYEAh17ofkHHedgp3uOAWzynJZhp51I1MRVRSunC
22+
xOPVbsMD+MtaPy7rx0Mcn9OJIylc8Yqd2gliz4lwnNDv4yDPXuafdpCCgNyK7I86
23+
xszc4ZQF5padCsjY6z7YRbYiGqnLUhR0yi0cgeJ9hnUV2zYfUhBAWhYtx14fp18q
24+
mMUwFoUCgYEAjWU3HufjCzqh72++5A0o2GNNK5E1JeLhCKu0JljCK6CTfcHAv9hD
25+
O60AL8PlFbNSeOl/1OdRC9UrVzDzG94fsonYQuT737wz41gf5lVfxMAGPWq4Dcke
26+
UPQgpDJ9N7zXqpT5HPdBuF7DgtC9zbCA0DEL5UxY3u6yLEc3yioMZJY=
27+
-----END RSA PRIVATE KEY-----

scaleComputeUsingXVA/ssh_key.priv.pub

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKeCvft4xNWQUlmOG2HjW6oML/Ske8bb8cio4EX9//g//UIEYzREkRenJYOrg5rSoUPPEKrdZo/EFD7cVtby12V6arYlH0ZNl1cM7OiSppa60G83wdp3VOiBoPZzITCzGfVwoax8tCUx9xJAq+w0adswt8PQDXuHWElNLO23SK0MqUDFAnUuqG5dNjSnlLCNbibtldi+EIkjqQnP9qbFyIB8RDxrZX2QJ0MH9iD4FjBn9C1PLiG57+GNyrldArMEmaR/pXKtAXvaM9XjYuO+/8rDr8fdfJVGBIdIItP6M8npj4YhI92AeDVxpFqOfKdt/6DvkqG0cN3UR/X9vnfLzx stack@DevStackOSDomU

0 commit comments

Comments
 (0)