openstack自动化搭建脚本

Openstack平台部署+节点扩容

1)搭建脚本

 1 #!/bin/bash
 2 #openstack私有云平台部署
 3 #脚本使用前提:三台虚拟机openstack(ip地址:192.168.1.10,至少7G内存,50G硬盘),nova01(ip地址:192.168.1.11至少4G内存,100G硬盘),扩容用nova02(ip地址:192.168.1.12至少4G内存,100G硬盘);yum源正常;本次部署为精简版安装
 4 source /root/moudle.sh
 5 while :
 6 do
 7 echo "#############################_menu_##################################"
 8 echo "1.openstack服务器环境部署与检查"
 9 echo "2.nova环境部署与检查"
10 echo "3.openstack服务安装与登录"
11 echo "4.openstack节点扩容"
12 echo "5.exit"
13 echo "#####################################################################"
14 read -p "请输入您要部署的服务(1|2|3|4|5):" select
15 if [ "$select" == "1" ];then
16     env_openstack
17 elif [ "$select" == "2" ];then
18     env_nova
19 elif [ "$select" == "3" ];then
20     install_openstack
21 elif [ "$select" == "4" ];then
22     ext_nova
23 elif [ "$select" == "5" ];then
24     exit
25 else
26     echo "I AM SORRY"
27     sleep 2
28 fi
29 done

2)脚本模块

  1 #!/bin/bash
  2 #函数定义
  3 env_openstack()
  4 {    
  5     hostnamectl set-hostname openstack
  6     hostname openstack
  7     sleep 1
  8     echo "1.主机名已同步"
  9 
 10     echo "192.168.1.10 openstack
 11 192.168.1.11 nova01
 12 192.168.1.12 nova02
 13 " >> /etc/hosts
 14     sleep 1
 15     echo "2.域名已同步"
 16 
 17     sed -i '/search/d' /etc/resolv.conf
 18     sleep 1
 19     echo "3.域名解析服务器已指定"
 20 
 21     sed -i '7 s/gateway/192.168.1.254/' /etc/chrony.conf #1.254是真机ip
 22     systemctl restart chronyd 
 23     sleep 5
 24     if [ `chronyc sources -v | tail -1 | awk '{print $1}'` == ^* ];then
 25          echo "4.时间同步成功"
 26     else
 27          echo '##########!!!时间未同步,请检查'
 28     fi
 29 
 30     echo "[local_repo]
 31 name=CentOS-$releasever - Base
 32 baseurl="ftp://192.168.1.254/centos-1804"
 33 enabled=1
 34 gpgcheck=0
 35 [extras]
 36 name=extras
 37 baseurl="ftp://192.168.1.254/extras/"
 38 enabled=1
 39 gpgcheck=0
 40 [openstack1]
 41 name=openstack1
 42 baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-rpms"
 43 enabled=1
 44 gpgcheck=0
 45 [openstack2]
 46 name=openstack2
 47 baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-devtools-rpms"
 48 enabled=1
 49 gpgcheck=0
 50 " > /etc/yum.repos.d/local.repo
 51     sleep 1
 52     if [ `yum repolist | tail -1 | awk '{print $2}'` == "10,670" ];then
 53          echo "5.yum源配置成功"
 54     else 
 55          echo "##########!!!yum源有问题"
 56     fi
 57 
 58     yum remove firewalld-* &>/dev/null;yum remove NetworkManager &>/dev/null
 59     sleep 1 
 60     echo "6.已卸载firewalld和NetworkManager"
 61     sleep 1 
 62     if [ `cat /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F'"' '/ONBOOT/{print $2}'` == "yes" ];then
 63          echo "7.network冲突解决"
 64     else
 65          echo "###########!!!network冲突"
 66     fi
 67     sleep 1
 68     ping -c 3 192.168.1.11 &>/dev/null && ping -c 3 192.168.1.12 &>/dev/null && echo "8.网络畅通" || echo "##########!!!请检查网络"
 69     sleep 1
 70     echo "环境依赖包安装,请稍等..."
 71     sleep 1
 72     yum -y install python-setuptools &> /dev/null && echo "9.依赖包安装成功,环境配置完毕,请进行下一步,安装openstack服务"
 73     sleep 1.5
 74 }
 75 
 76 env_nova()
 77 {
 78     read -p "请输入主机名尾号(01|02):" a
 79     hostnamectl set-hostname nova$a
 80         hostname nova$a
 81         sleep 1
 82         echo "1.主机名已同步"
 83 
 84         echo "192.168.1.10 openstack
 85 192.168.1.11 nova01
 86 192.168.1.12 nova02
 87 " >> /etc/hosts
 88         sleep 1
 89         echo "2.域名已同步"
 90 
 91         sed -i '/search/d' /etc/resolv.conf
 92         sleep 1
 93         echo "3.域名解析服务器已指定"
 94 
 95         sed -i '7 s/gateway/192.168.1.254/' /etc/chrony.conf #1.254是真机ip
 96         systemctl restart chronyd
 97     sleep 5
 98         if [ `chronyc sources -v | tail -1 | awk '{print $1}'` == "^*" ];then
 99                 echo "4.时间同步成功"
100         else
101                 echo '##########!!!时间未同步,请检查'
102         fi
103 
104         echo "[local_repo]
105 name=CentOS-$releasever - Base
106 baseurl="ftp://192.168.1.254/centos-1804"
107 enabled=1
108 gpgcheck=0
109 [extras]
110 name=extras
111 baseurl="ftp://192.168.1.254/extras/"
112 enabled=1
113 gpgcheck=0
114 [openstack1]
115 name=openstack1
116 baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-rpms"
117 enabled=1
118 gpgcheck=0
119 [openstack2]
120 name=openstack2
121 baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-devtools-rpms"
122 enabled=1
123 gpgcheck=0
124 " > /etc/yum.repos.d/local.repo
125     sleep 1
126         if [ `yum repolist | tail -1 | awk '{print $2}'` == "10,670" ];then
127                 echo "5.yum源配置成功"
128         else
129                 echo "##########!!!yum源有问题"
130         fi
131     yum remove firewalld-* &>/dev/null;yum remove NetworkManager &>/dev/null
132         sleep 1
133     echo "6.已卸载firewalld和NetworkManager"
134     sleep 1
135         if [ `cat /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F'"' '/ONBOOT/{print $2}'` == "yes" ];then
136                 echo "7.network冲突解决"
137         else
138                 echo "###########!!!network冲突"
139         fi
140     sleep 1
141         ping -c 3 192.168.1.10 &>/dev/null && ping -c 3 192.168.1.12 &>/dev/null && echo "8.网络畅通" || echo "##########!!!请检查网络"
142 
143         echo "环境依赖包安装,请稍等..."
144         yum -y install python-setuptools qemu-kvm libvirt-daemon libvirt-daemon-driver-qemu libvirt-client &> /dev/null && echo "9.依赖包安装成功,环境配置完毕,请进行下一步"
145     sleep 1.5
146 }
147 
148 install_openstack()
149 {
150     yum -y install openstack-packstack
151     cd /root/
152     packstack --gen-answer-file=answer.ini
153     sed -i '42 s/=y/=n/' answer.ini 
154     sed -i '45 s/=y/=n/' answer.ini 
155     sed -i '49 s/=y/=n/' answer.ini 
156     sed -i '53 s/=y/=n/' answer.ini 
157     sed -i '75 s/=/=192.168.1.254/' answer.ini 
158     sed -i '98 s/1.10/1.11/' answer.ini 
159     sed -i '102 s/1.10/1.10,192.168.1.11/' answer.ini 
160     sed -i '333 s/=.*$/=a/' answer.ini 
161     sed -i '840 s/=vx/=flat,vx/' answer.ini 
162     sed -i '910 s/=/=physnet1:br-ex/' answer.ini 
163     sed -i '921 s/=/=br-ex:eth0/' answer.ini 
164     sed -i '1179 s/=y/=n/' answer.ini 
165     echo "开始安装请耐心等待大约30min..."
166     packstack --answer-file=answer.ini
167     sed -i '/WSGIProcessGroup apache/a WSGIApplicationGroup %{GLOBAL}' /etc/httpd/conf.d/15-horizon-vhost.conf
168     apachectl graceful
169     echo "安装成功!欢迎使用,请访问以下网址http://192.168.1.10进行访问,账户密码为您的应答文件设置"
170 }
171 
172 ext_nova()
173 {
174     cd /root/
175         sed -i '98 s/1.11/1.11,192.168.1.12/' answer.ini
176         sed -i '102 s/1.11/1.11,192.168.1.12/' answer.ini
177         echo "开始安装请耐心等待大约30min..."
178         packstack --answer-file=answer.ini
179         sed -i '/WSGIProcessGroup apache/a WSGIApplicationGroup %{GLOBAL}' /etc/httpd/conf.d/15-horizon-vhost.conf
180         apachectl graceful
181         echo "扩容成功!欢迎使用,请访问以下网址http://192.168.1.10进行访问,账户密码>为您的应答文件设置"    
182 }
posted @ 2020-01-07 19:32  cocl666  阅读(1803)  评论(0编辑  收藏  举报