diff options
Diffstat (limited to 'ci/03-maasdeploy.sh')
-rwxr-xr-x | ci/03-maasdeploy.sh | 196 |
1 files changed, 127 insertions, 69 deletions
diff --git a/ci/03-maasdeploy.sh b/ci/03-maasdeploy.sh index bc0c2cbb..27a72a40 100755 --- a/ci/03-maasdeploy.sh +++ b/ci/03-maasdeploy.sh @@ -21,9 +21,16 @@ then usage; fi - virtinstall=0 labname=$1 +snapinstall=0 + +opnfvdistro=`cat /etc/lsb-release | grep CODENAME | cut -d "=" -f 2` + +if [ "bionic" == "$opnfvdistro" ]; then + snapinstall=1 +fi + if [ ! -e $HOME/.ssh/id_rsa ]; then ssh-keygen -N '' -f $HOME/.ssh/id_rsa @@ -45,26 +52,45 @@ NODE_ARC="$NODE_ARCHES/generic" # Install the packages needed echo_info "Installing and upgrading required packages" -sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5EDB1B62EC4926EA -sudo apt-get update -y +#sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5EDB1B62EC4926EA +sudo apt-get update -y || true sudo apt-get install software-properties-common -y -sudo apt-add-repository ppa:juju/stable -y -sudo apt-add-repository ppa:maas/stable -y -sudo apt-add-repository cloud-archive:ocata -y -sudo apt-get update -y + +if [ "$snapinstall" -eq "0" ]; then + sudo apt-add-repository ppa:juju/stable -y + sudo apt-add-repository ppa:maas/stable -y +fi +if [ "bionic" != "$opnfvdistro" ]; then + sudo apt-add-repository cloud-archive:pike -y + if [ "aarch64" == "$NODE_ARCTYPE" ]; then + sudo add-apt-repository ppa:ubuntu-cloud-archive/pike-staging -y + fi +fi + +sudo apt-get update -y || true #sudo apt-get dist-upgrade -y -sudo apt-get install bridge-utils openssh-server bzr git virtinst qemu-kvm libvirt-bin \ + +if [ "$snapinstall" -eq "1" ]; then + sudo apt-get install bridge-utils openssh-server bzr git virtinst qemu-kvm libvirt-bin \ + maas maas-region-controller juju python-pip python-psutil python-openstackclient \ + python-congressclient gsutil pastebinit python-jinja2 sshpass \ + openssh-server vlan ipmitool jq expect snap -y --allow-unauthenticated + sudo service ntp stop + sudo snap install charm + sudo snap install --devmode --stable maas +else + sudo apt-get install bridge-utils openssh-server bzr git virtinst qemu-kvm libvirt-bin \ maas maas-region-controller juju python-pip python-psutil python-openstackclient \ python-congressclient gsutil charm-tools pastebinit python-jinja2 sshpass \ - openssh-server vlan ipmitool jq expect snap -y + openssh-server vlan ipmitool jq expect snap -y --allow-unauthenticated +fi -#sudo apt-get install snap -y -#sudo snap install maas --classic -#sudo snap install juju --classic +if [ "aarch64" == "$NODE_ARCTYPE" ]; then + sudo apt-get install qemu qemu-efi qemu-system-aarch64 -y --allow-unauthenticated +fi sudo -H pip install --upgrade pip - # # Config preparation # @@ -137,9 +163,7 @@ PRIMARY_RACK_CONTROLLER="$MAAS_IP" VLAN_UNTTAGED="untagged" # In the case of a virtual deployment get deployconfig.yaml -if [ "$virtinstall" -eq 1 ]; then - ./cleanvm.sh || true -fi +./cleanvm.sh || true #create backup directory mkdir ~/joid_config/ || true @@ -206,31 +230,46 @@ if [ $(pip list --format=columns | grep google-api-python-client | wc -l) == 1 ] sudo pip uninstall google-api-python-client fi - -if [ ! -e ~maas/.ssh/id_rsa.pub ]; then - if [ ! -e $HOME/id_rsa_maas.pub ]; then - [ -e $HOME/id_rsa_maas ] && rm -f $HOME/id_rsa_maas - sudo su - $USER -c "echo |ssh-keygen -t rsa -f $HOME/id_rsa_maas" +if [ "$snapinstall" -eq "0" ]; then + if [ ! -e ~maas/.ssh/id_rsa.pub ]; then + if [ ! -e $HOME/id_rsa_maas.pub ]; then + [ -e $HOME/id_rsa_maas ] && rm -f $HOME/id_rsa_maas + sudo su - $USER -c "echo |ssh-keygen -t rsa -f $HOME/id_rsa_maas" + fi + sudo -u maas mkdir ~maas/.ssh/ || true + sudo cp $HOME/id_rsa_maas ~maas/.ssh/id_rsa + sudo cp $HOME/id_rsa_maas.pub ~maas/.ssh/id_rsa.pub + sudo chown maas:maas ~maas/.ssh/id_rsa + sudo chown maas:maas ~maas/.ssh/id_rsa.pub + sudo cat ~maas/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys + fi +else + if [ ! -e /root/.ssh/id_rsa.pub ]; then + if [ ! -e $HOME/id_rsa_maas.pub ]; then + [ -e $HOME/id_rsa_maas ] && rm -f $HOME/id_rsa_maas + sudo su - $USER -c "echo |ssh-keygen -t rsa -f $HOME/id_rsa_maas" + fi + sudo -u root mkdir /root/.ssh/ || true + sudo cp $HOME/id_rsa_maas /root/.ssh/id_rsa + sudo cp $HOME/id_rsa_maas.pub /root/.ssh/id_rsa.pub + sudo chown root:root /root/.ssh/id_rsa + sudo chown root:root /root/.ssh/id_rsa.pub + sudo cat /root/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys fi - sudo -u maas mkdir ~maas/.ssh/ || true - sudo cp $HOME/id_rsa_maas ~maas/.ssh/id_rsa - sudo cp $HOME/id_rsa_maas.pub ~maas/.ssh/id_rsa.pub - sudo chown maas:maas ~maas/.ssh/id_rsa - sudo chown maas:maas ~maas/.ssh/id_rsa.pub fi # Ensure virsh can connect without ssh auth -sudo cat ~maas/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys sudo cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys -# -# MAAS deploy -# - -installmaas(){ - sudo apt-get install maas maas-region-controller -y -} - +if [ "$snapinstall" -eq "1" ]; then + sudo maas init --mode all --maas-url http://$MAAS_IP:5240/MAAS --admin-username $PROFILE \ + --admin-password $PROFILE --admin-email ubuntu@ubuntu.com || true + API_KEY=`sudo maas apikey --username=$PROFILE` +else + sudo maas-rack config --region-url http://$MAAS_IP:5240/MAAS + sudo maas createadmin --username=$PROFILE --email=ubuntu@ubuntu.com --password=$PROFILE || true + API_KEY=`sudo maas-region apikey --username=$PROFILE` +fi # # MAAS config # https://insights.ubuntu.com/2016/01/23/maas-setup-deploying-openstack-on-maas-1-9-with-juju/ @@ -238,13 +277,6 @@ installmaas(){ # configuremaas(){ #reconfigure maas with correct MAAS address. - #Below code is needed as MAAS have issue in commissioning without restart. - #sudo ./maas-reconfigure-region.sh $MAAS_IP - sleep 30 - sudo maas-rack config --region-url http://$MAAS_IP:5240/MAAS - - sudo maas createadmin --username=ubuntu --email=ubuntu@ubuntu.com --password=ubuntu || true - API_KEY=`sudo maas-region apikey --username=ubuntu` maas login $PROFILE $API_SERVERMAAS $API_KEY maas $PROFILE maas set-config name='main_archive' value=$MAIN_ARCHIVE || true maas $PROFILE maas set-config name=upstream_dns value=$MY_UPSTREAM_DNS || true @@ -257,6 +289,14 @@ configuremaas(){ maas $PROFILE tags create name=$tag || true done + #below tag would be used to enable huge pages for DPDK and SRIOV enablement in Ubuntu kernel via MAAS + maas $PROFILE tags create name='opnfv-dpdk' comment='OPNFV DPDK enablement' \ + kernel_opts='hugepagesz=2M hugepages=1024 hugepagesz=1G hugepages=20 default_hugepagesz=1G intel_iommu=on' || true + + maas $PROFILE package-repositories create name="Ubuntu Proposed new" \ + url="http://archive.ubuntu.com/ubuntu" components="main" \ + distributions="xenial-proposed" arches=amd64,i386 + #create the required spaces. maas $PROFILE space update 0 name=default || true for space in admin-api internal-api public-api \ @@ -274,7 +314,9 @@ configuremaas(){ maas $PROFILE boot-source-selection update 1 1 arches="$NODE_ARCHES" fi - maas $PROFILE boot-resources import || true + if [ "$snapinstall" -eq "0" ]; then + maas $PROFILE boot-resources import || true + fi while [ "$(maas $PROFILE boot-resources is-importing)" == "true" ]; do @@ -283,7 +325,6 @@ configuremaas(){ } setupspacenetwork(){ - #get space, subnet and vlan and create accordingly. #for type in admin osapi data storage external floating public; do nettypes=`cat labconfig.json | jq '.opnfv.spaces[]'.type | cut -d \" -f 2` @@ -302,7 +343,7 @@ setupspacenetwork(){ NET_VLAN_ID=$(maas $PROFILE vlans read $NET_FABRIC_ID | jq -r ".[] | select(.vid==\"$SPACE_VLAN\")".id) NET_VLAN_VID=$(maas $PROFILE vlans read $NET_FABRIC_ID | jq -r ".[] | select(.vid==\"$SPACE_VLAN\")".vid) if ([ $SPACE_GWAY ] && [ "$SPACE_GWAY" != "null" ]); then - maas $PROFILE subnet update $SPACE_CIDR gateway_ip=$SPACE_GWAY + maas $PROFILE subnet update $SPACE_CIDR gateway_ip=$SPACE_GWAY || true fi if ([ $NET_VLAN_VID ] && [ $NET_VLAN_VID == "0" ]); then config_done=1 @@ -311,7 +352,7 @@ setupspacenetwork(){ else NET_VLAN_ID=$(maas $PROFILE vlans create $NET_FABRIC_ID vid=$SPACE_VLAN | jq --raw-output ".id") if ([ $NET_VLAN_ID ] && [ $NET_VLAN_ID != "null" ]); then - maas $PROFILE subnet update $SPACE_CIDR vlan=$NET_VLAN_ID + maas $PROFILE subnet update $SPACE_CIDR vlan=$NET_VLAN_ID || true NET_FABRIC_VID=$SPACE_VLAN fi fi @@ -323,16 +364,16 @@ setupspacenetwork(){ if ([ $SPACE_VLAN ] && [ "$SPACE_VLAN" != "null" ]); then NET_VLAN_ID=$(maas $PROFILE vlans create $FABRIC_ID vid=$SPACE_VLAN | jq --raw-output ".id") if ([ $SPACE_GWAY ] && [ "$SPACE_GWAY" != "null" ]); then - maas $PROFILE subnets create fabric=$FABRIC_ID cidr=$SPACE_CIDR vid=$VID_ID gateway_ip=$SPACE_GWAY + maas $PROFILE subnets create fabric=$FABRIC_ID cidr=$SPACE_CIDR vid=$VID_ID gateway_ip=$SPACE_GWAY || true else - maas $PROFILE subnets create fabric=$FABRIC_ID cidr=$SPACE_CIDR vid=$VID_ID + maas $PROFILE subnets create fabric=$FABRIC_ID cidr=$SPACE_CIDR vid=$VID_ID || true fi NET_FABRIC_VID=$VLAN_ID else if ([ $SPACE_GWAY ] && [ "$SPACE_GWAY" != "null" ]); then - maas $PROFILE subnets create fabric=$FABRIC_ID cidr=$SPACE_CIDR vid="0" gateway_ip=$SPACE_GWAY + maas $PROFILE subnets create fabric=$FABRIC_ID cidr=$SPACE_CIDR vid="0" gateway_ip=$SPACE_GWAY || true else - maas $PROFILE subnets create fabric=$FABRIC_ID cidr=$SPACE_CIDR vid="0" + maas $PROFILE subnets create fabric=$FABRIC_ID cidr=$SPACE_CIDR vid="0" || true fi fi NET_FABRIC_NAME=$(maas $PROFILE subnets read | jq -r ".[] | select(.cidr==\"$SPACE_CIDR\")".vlan.fabric) @@ -353,7 +394,7 @@ setupspacenetwork(){ NET_FABRIC_ID=$(maas $PROFILE fabric read $NET_FABRIC_NAME | jq -r ".id") if ([ $NET_FABRIC_ID ] && [ $NET_FABRIC_ID != "null" ]); then if ([ $JUJU_VLAN_VID ] && [ $JUJU_VLAN_VID != "null" ]); then - maas $PROFILE vlan update $NET_FABRIC_ID $JUJU_VLAN_VID space=$JUJU_SPACE_ID + maas $PROFILE vlan update $NET_FABRIC_ID $JUJU_VLAN_VID space=$JUJU_SPACE_ID || true fi fi if ([ $type == "admin" ]); then @@ -375,14 +416,36 @@ setupspacenetwork(){ PRIMARY_RACK_CONTROLLER=$(maas $PROFILE rack-controllers read | jq -r '.[0].system_id') maas $PROFILE vlan update $NET_FABRIC_ID $NET_FABRIC_VID dhcp_on=True primary_rack=$PRIMARY_RACK_CONTROLLER || true fi + elif ([ $type == "public" ] || [ $type == "osapi" ]); then + # If we have a network, we create reserve IPS for public IP range + if ([ $NET_FABRIC_ID ]); then + # Set ranges + SUBNET_PREFIX=${SPACE_CIDR::-5} + IP_RES_RANGE_LOW="$SUBNET_PREFIX.1" + IP_RES_RANGE_HIGH="$SUBNET_PREFIX.39" + maas $PROFILE ipranges create type=reserved \ + start_ip=$IP_RES_RANGE_LOW end_ip=$IP_RES_RANGE_HIGH \ + comment='This is a reserved range' || true + fi + else + if ([ $NET_FABRIC_ID ]); then + # Set ranges + SUBNET_PREFIX=${SPACE_CIDR::-5} + IP_RES_RANGE_LOW="$SUBNET_PREFIX.1" + IP_RES_RANGE_HIGH="$SUBNET_PREFIX.5" + maas $PROFILE ipranges create type=reserved \ + start_ip=$IP_RES_RANGE_LOW end_ip=$IP_RES_RANGE_HIGH \ + comment='This is a reserved range' || true + fi fi done } addnodes(){ - API_KEY=`sudo maas-region apikey --username=ubuntu` maas login $PROFILE $API_SERVERMAAS $API_KEY + maas $PROFILE maas set-config name=default_min_hwe_kernel value=hwe-16.04-edge || true + # make sure there is no machine entry in maas for m in $(maas $PROFILE machines read | jq -r '.[].system_id') do @@ -439,8 +502,8 @@ addnodes(){ virt-install --connect $VIRSHURL --name bootstrap --ram 4098 --cpu $CPU_MODEL --vcpus 2 \ --disk size=20,format=qcow2,bus=virtio,cache=directsync,io=native,pool=default \ - $netw --boot network,hd,menu=off --noautoconsole \ - --print-xml | tee bootstrap + $netw --boot network,hd,menu=off --video virtio --noautoconsole --autostart \ + --accelerate --print-xml | tee bootstrap if [ "$virtinstall" -eq 1 ]; then bootstrapmac=`grep "mac address" bootstrap | head -1 | cut -d '"' -f 2` @@ -452,7 +515,6 @@ addnodes(){ done fi virsh -c $VIRSHURL define --file bootstrap - virsh -c $VIRSHURL autostart bootstrap rm -f bootstrap @@ -476,11 +538,11 @@ addnodes(){ virt-install --connect $VIRSHURL --name $NODE_NAME --ram 8192 --cpu $CPU_MODEL --vcpus 4 \ --disk size=120,format=qcow2,bus=virtio,cache=directsync,io=native,pool=default \ - $netw $netw --boot network,hd,menu=off --noautoconsole --print-xml | tee $NODE_NAME + $netw $netw --boot network,hd,menu=off --video virtio --noautoconsole --autostart \ + --accelerate --print-xml | tee $NODE_NAME nodemac=`grep "mac address" $NODE_NAME | head -1 | cut -d '"' -f 2` virsh -c $VIRSHURL define --file $NODE_NAME - virsh -c $VIRSHURL autostart $NODE_NAME rm -f $NODE_NAME maas $PROFILE machines create autodetect_nodegroup='yes' name=$NODE_NAME \ @@ -552,10 +614,12 @@ sleep 30 setupspacenetwork -#just make sure rack controller has been synced and import only -# just whether images have been imported or not. -sudo ./maas-reconfigure-region.sh $MAAS_IP -sleep 120 +if [ "$snapinstall" -eq 0 ]; then + sudo sed -i 's/localhost/'$MAAS_IP'/g' /etc/maas/rackd.conf + sudo service maas-rackd restart + sudo service maas-regiond restart + sleep 120 +fi # Let's add the nodes now. Currently works only for virtual deployment. addnodes @@ -567,7 +631,6 @@ echo_info "Initial deployment of MAAS finished" #maas $PROFILE sshkeys new key="`cat ./maas/sshkeys/DominoKey.pub`" addcredential() { - API_KEY=`sudo maas-region apikey --username=ubuntu` controllername=`awk 'NR==1{print substr($1, 1, length($1)-1)}' deployconfig.yaml` cloudname=`awk 'NR==1{print substr($1, 1, length($1)-1)}' deployconfig.yaml` @@ -597,7 +660,6 @@ addcloud() { # # Enable MAAS nodes interfaces # -API_KEY=`sudo maas-region apikey --username=ubuntu` maas login $PROFILE $API_SERVERMAAS $API_KEY if [ -e ./labconfig.json ]; then @@ -688,12 +750,8 @@ if [ -e ./labconfig.json ]; then fi # Add the cloud and controller credentials for MAAS for that lab. -jujuver=`juju --version` - -if [[ "$jujuver" > "2" ]]; then - addcloud - addcredential -fi +addcloud +addcredential # # End of scripts |