diff options
Diffstat (limited to 'juju/juju_launch.sh')
-rwxr-xr-x | juju/juju_launch.sh | 131 |
1 files changed, 51 insertions, 80 deletions
diff --git a/juju/juju_launch.sh b/juju/juju_launch.sh index 1ad6e89..2aff57e 100755 --- a/juju/juju_launch.sh +++ b/juju/juju_launch.sh @@ -7,13 +7,20 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +function clear_juju_vm() +{ + servers=$(openstack server list | grep juju | awk '{print $2}') + if [[ -n $servers ]];then + openstack server delete $servers + fi +} function launch_juju_vm() { local NET_ID=$(neutron net-list | grep juju-net | awk '{print $2}') if [[ ! $(nova list | grep juju-client-vm) ]]; then - nova boot --flavor m1.small --image xenial_x86_64 --nic net-id=$NET_ID \ + nova boot --flavor m1.small --image $JUJU_VM_IMG --nic net-id=$NET_ID \ --key-name jump-key --security-group default juju-client-vm if [ $? -ne 0 ]; then log_error "boot juju-client-vm fail" @@ -21,42 +28,25 @@ function launch_juju_vm() fi fi - if [[ ! $(nova list | grep juju-metadata-vm) ]]; then - nova boot --flavor m1.small --image xenial_x86_64 --nic net-id=$NET_ID \ - --key-name jump-key --security-group default juju-metadata-vm - if [ $? -ne 0 ]; then - log_error "boot juju-metadata-vm fail" - exit 1 - fi - fi - local count=300 set +x while - local state1=$(nova list | grep juju-client-vm | awk '{print $6}') - local state2=$(nova list | grep juju-metadata-vm | awk '{print $6}') - if [[ $state1 == "ERROR" || $state2 == "ERROR" || $count == 0 ]]; then + local state=$(nova list | grep juju-client-vm | awk '{print $6}') + if [[ $state == "ERROR" || $count == 0 ]]; then log_error "launch juju vm error" exit 1 fi let count-=1 sleep 2 - [[ $state1 != "ACTIVE" || $state2 != "ACTIVE" ]] + [[ $state != "ACTIVE" ]] do :;done set -x if [ ! $(nova list | grep juju-client-vm | awk '{print $14}') ]; then - floating_ip_client=$(neutron floatingip-create ext-net | grep floating_ip_address | awk '{print $4}') - nova floating-ip-associate juju-client-vm $floating_ip_client + juju_client_ip=$(neutron floatingip-create ext-net | grep floating_ip_address | awk '{print $4}') + nova floating-ip-associate juju-client-vm $juju_client_ip else - floating_ip_client=$(nova list | grep juju-client-vm | awk '{print $13}') - fi - - if [ ! $(nova list | grep juju-metadata-vm | awk '{print $14}') ]; then - floating_ip_metadata=$(neutron floatingip-create ext-net | grep floating_ip_address | awk '{print $4}') - nova floating-ip-associate juju-metadata-vm $floating_ip_metadata - else - floating_ip_metadata=$(nova list | grep juju-metadata-vm | awk '{print $13}') + juju_client_ip=$(nova list | grep juju-client-vm | awk '{print $13}') fi local wait=120 @@ -66,39 +56,20 @@ function launch_juju_vm() log_error "launch juju vm can't access" exit 1 fi - exec_cmd_on_client exit - local ready1=$? - exec_cmd_on_metadata exit - local ready2=$? + exec_cmd_on_client exit 2>/dev/null + local ready=$? let wait-=1 sleep 2 - [[ $ready1 != 0 || $ready2 != 0 ]] + [[ $ready != 0 ]] do :;done set -x - export floating_ip_client=$floating_ip_client - export floating_ip_metadata=$floating_ip_metadata -} - -function juju_metadata_prepare() -{ - local cmd="sudo apt update -y; \ - sudo apt-get install nginx -y" - exec_cmd_on_metadata $cmd - - if [[ ! $(exec_cmd_on_metadata sudo ps -aux | grep nginx) ]]; then - log_error "juju-metadata nginx error" - exit 1 - fi + export juju_client_ip=$juju_client_ip + log_info "juju client launched!" } function juju_client_prepare() { - local cmd1="sudo add-apt-repository ppa:juju/stable; \ - sudo apt update -y; \ - sudo apt install juju zfsutils-linux -y" - exec_cmd_on_client $cmd1 - exec_cmd_on_client "echo 'clouds: openstack: type: openstack @@ -107,37 +78,29 @@ function juju_client_prepare() $OS_REGION_NAME: endpoint: $OS_AUTH_URL' > clouds.yaml" - local cmd2="juju add-cloud openstack clouds.yaml --replace" - exec_cmd_on_client $cmd2 + local cmd1="juju add-cloud openstack clouds.yaml --replace" + exec_cmd_on_client $cmd1 if [[ ! $(exec_cmd_on_client "juju list-clouds | grep openstack") ]]; then log_error "juju-client add cloud error" exit 1 fi - local cmd3='ssh-keygen -q -t rsa -f /home/ubuntu/.ssh/id_rsa -N ""' - exec_cmd_on_client $cmd3 - - local client_key=`exec_cmd_on_client sudo cat /home/ubuntu/.ssh/id_rsa.pub` - local cmd4="echo $client_key >> /home/ubuntu/.ssh/authorized_keys" - exec_cmd_on_metadata $cmd4 + local cmd2="juju remove-credential openstack openstack" + exec_cmd_on_client $cmd2 - exec_cmd_on_client "echo 'credentials: - openstack: - openstack: - auth-type: userpass - password: $OS_PASSWORD - tenant-name: $OS_PROJECT_NAME - username: $OS_USERNAME' > os-creds.yaml" - - local cmd5="juju add-credential openstack -f os-creds.yaml --replace" - exec_cmd_on_client $cmd5 + scp_to_client ${CONF_DIR}/admin-openrc.sh /home/ubuntu } function juju_generate_metadata() { exec_cmd_on_client mkdir -p mt + if [[ ! $(exec_cmd_on_client sudo ps aux | grep nginx) ]]; then + log_error "juju-metadata nginx is not running" + exit 1 + fi + for((i=0;i<${#JUJU_IMG_NAME[@]};i++)) do IMAGE_ID=$(glance image-list | grep ${JUJU_IMG_NAME[i]} | awk '{print $2}') @@ -149,15 +112,12 @@ function juju_generate_metadata() local cmd1="juju metadata generate-tools -d mt" exec_cmd_on_client $cmd1 - local cmd2="rsync -e 'ssh -o StrictHostKeyChecking=no' -av mt ubuntu@$floating_ip_metadata:~/" - exec_cmd_on_client $cmd2 - - local cmd3="sudo cp -a mt/tools/ /var/www/html; \ + local cmd2="sudo cp -a mt/tools/ /var/www/html; \ sudo cp -a mt/images/ /var/www/html; \ sudo chmod a+rx /var/www/html/ -R" - exec_cmd_on_metadata $cmd3 + exec_cmd_on_client $cmd2 - wget -O - http://$floating_ip_metadata/images/streams/v1/index.json + wget -O - http://$juju_client_ip/images/streams/v1/index.json if [ $? -ne 0 ]; then log_error "juju metadata generate error" exit 1 @@ -166,13 +126,25 @@ function juju_generate_metadata() function bootstrap_juju_controller() { - local cmd="juju bootstrap openstack openstack \ - --config image-metadata-url=http://$floating_ip_metadata/images \ - --config network=juju-net --config use-floating-ip=True \ - --config use-default-secgroup=True \ - --constraints 'mem=4G root-disk=40G' \ - --verbose --debug" - exec_cmd_on_client $cmd + local cmd1="juju controllers | grep openstack" + exec_cmd_on_client $cmd1 + if [[ $? != 0 ]];then + local cmd2="source admin-openrc.sh; \ + juju bootstrap openstack openstack \ + --config image-metadata-url=http://$juju_client_ip/images \ + --config network=juju-net --config use-floating-ip=True \ + --config use-default-secgroup=True \ + --constraints 'mem=4G root-disk=40G' \ + --verbose --debug" + exec_cmd_on_client $cmd2 + exec_cmd_on_client $cmd1 + if [[ $? == 0 ]];then + log_info "juju controller launched!" + else + log_error "launch juju controller fail!" + exit 1 + fi + fi } function launch_juju() @@ -180,7 +152,6 @@ function launch_juju() log_info "launch_juju enter" launch_juju_vm - juju_metadata_prepare juju_client_prepare juju_generate_metadata bootstrap_juju_controller |