Openstack平台部署+节点扩容

1)搭建脚本

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

2)脚本模块

 #!/bin/bash
#函数定义
env_openstack()
{
hostnamectl set-hostname openstack
hostname openstack
sleep
echo "1.主机名已同步" echo "192.168.1.10 openstack
192.168.1.11 nova01
192.168.1.12 nova02
" >> /etc/hosts
sleep
echo "2.域名已同步" sed -i '/search/d' /etc/resolv.conf
sleep
echo "3.域名解析服务器已指定" sed -i '7 s/gateway/192.168.1.254/' /etc/chrony.conf #.254是真机ip
systemctl restart chronyd
sleep
if [ `chronyc sources -v | tail - | awk '{print $1}'` == ^* ];then
echo "4.时间同步成功"
else
echo '##########!!!时间未同步,请检查'
fi echo "[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/centos-1804"
enabled=
gpgcheck=
[extras]
name=extras
baseurl="ftp://192.168.1.254/extras/"
enabled=
gpgcheck=
[openstack1]
name=openstack1
baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-rpms"
enabled=
gpgcheck=
[openstack2]
name=openstack2
baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-devtools-rpms"
enabled=
gpgcheck=
" > /etc/yum.repos.d/local.repo
sleep
if [ `yum repolist | tail - | awk '{print $2}'` == "10,670" ];then
echo "5.yum源配置成功"
else
echo "##########!!!yum源有问题"
fi yum remove firewalld-* &>/dev/null;yum remove NetworkManager &>/dev/null
sleep
echo "6.已卸载firewalld和NetworkManager"
sleep
if [ `cat /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F'"' '/ONBOOT/{print $2}'` == "yes" ];then
echo "7.network冲突解决"
else
echo "###########!!!network冲突"
fi
sleep
ping -c 192.168.1.11 &>/dev/null && ping -c 192.168.1.12 &>/dev/null && echo "8.网络畅通" || echo "##########!!!请检查网络"
sleep
echo "环境依赖包安装,请稍等..."
sleep
yum -y install python-setuptools &> /dev/null && echo "9.依赖包安装成功,环境配置完毕,请进行下一步,安装openstack服务"
sleep 1.5
} env_nova()
{
read -p "请输入主机名尾号(01|02):" a
hostnamectl set-hostname nova$a
hostname nova$a
sleep
echo "1.主机名已同步" echo "192.168.1.10 openstack
192.168.1.11 nova01
192.168.1.12 nova02
" >> /etc/hosts
sleep
echo "2.域名已同步" sed -i '/search/d' /etc/resolv.conf
sleep
echo "3.域名解析服务器已指定" sed -i '7 s/gateway/192.168.1.254/' /etc/chrony.conf #.254是真机ip
systemctl restart chronyd
sleep
if [ `chronyc sources -v | tail - | awk '{print $1}'` == "^*" ];then
echo "4.时间同步成功"
else
echo '##########!!!时间未同步,请检查'
fi echo "[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/centos-1804"
enabled=
gpgcheck=
[extras]
name=extras
baseurl="ftp://192.168.1.254/extras/"
enabled=
gpgcheck=
[openstack1]
name=openstack1
baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-rpms"
enabled=
gpgcheck=
[openstack2]
name=openstack2
baseurl="ftp://192.168.1.254/openstack/rhel-7-server-openstack-10-devtools-rpms"
enabled=
gpgcheck=
" > /etc/yum.repos.d/local.repo
sleep
if [ `yum repolist | tail - | awk '{print $2}'` == "10,670" ];then
echo "5.yum源配置成功"
else
echo "##########!!!yum源有问题"
fi
yum remove firewalld-* &>/dev/null;yum remove NetworkManager &>/dev/null
sleep
echo "6.已卸载firewalld和NetworkManager"
sleep
if [ `cat /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F'"' '/ONBOOT/{print $2}'` == "yes" ];then
echo "7.network冲突解决"
else
echo "###########!!!network冲突"
fi
sleep
ping -c 192.168.1.10 &>/dev/null && ping -c 192.168.1.12 &>/dev/null && echo "8.网络畅通" || echo "##########!!!请检查网络" echo "环境依赖包安装,请稍等..."
yum -y install python-setuptools qemu-kvm libvirt-daemon libvirt-daemon-driver-qemu libvirt-client &> /dev/null && echo "9.依赖包安装成功,环境配置完毕,请进行下一步"
sleep 1.5
} install_openstack()
{
yum -y install openstack-packstack
cd /root/
packstack --gen-answer-file=answer.ini
sed -i '42 s/=y/=n/' answer.ini
sed -i '45 s/=y/=n/' answer.ini
sed -i '49 s/=y/=n/' answer.ini
sed -i '53 s/=y/=n/' answer.ini
sed -i '75 s/=/=192.168.1.254/' answer.ini
sed -i '98 s/1.10/1.11/' answer.ini
sed -i '102 s/1.10/1.10,192.168.1.11/' answer.ini
sed -i '333 s/=.*$/=a/' answer.ini
sed -i '840 s/=vx/=flat,vx/' answer.ini
sed -i '910 s/=/=physnet1:br-ex/' answer.ini
sed -i '921 s/=/=br-ex:eth0/' answer.ini
sed -i '1179 s/=y/=n/' answer.ini
echo "开始安装请耐心等待大约30min..."
packstack --answer-file=answer.ini
sed -i '/WSGIProcessGroup apache/a WSGIApplicationGroup %{GLOBAL}' /etc/httpd/conf.d/-horizon-vhost.conf
apachectl graceful
echo "安装成功!欢迎使用,请访问以下网址http://192.168.1.10进行访问,账户密码为您的应答文件设置"
} ext_nova()
{
cd /root/
sed -i '98 s/1.11/1.11,192.168.1.12/' answer.ini
sed -i '102 s/1.11/1.11,192.168.1.12/' answer.ini
echo "开始安装请耐心等待大约30min..."
packstack --answer-file=answer.ini
sed -i '/WSGIProcessGroup apache/a WSGIApplicationGroup %{GLOBAL}' /etc/httpd/conf.d/-horizon-vhost.conf
apachectl graceful
echo "扩容成功!欢迎使用,请访问以下网址http://192.168.1.10进行访问,账户密码>为您的应答文件设置"
}

openstack自动化搭建脚本的更多相关文章

  1. linux集群自动化搭建(生成密钥对+分发公钥+远程批量执行脚本)

    之前介绍过ansible的使用,通过ssh授权批量控制服务器集群 但是生成密钥和分发公钥的时候都是需要确认密码的,这一步也是可以自动化的,利用ssh + expect + scp就可以实现,其实只用这 ...

  2. python+paramiko库+svn写的自动化部署脚本

    第一篇博文 直接开门见山的说了. 这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞. 一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一 ...

  3. CentOS 下运维自动化 Shell 脚本之 expect

    CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...

  4. linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

    红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...

  5. 深入理解Openstack自动化部署

    前言 说实话,看到自己在博客园的排名感到惭愧,因为自己最近两年没有持续地在博客园上写技术博客了,有人私下问我是不是荒废了?翻翻15年和16年的博客,真的是少的可怜.一方面的确由于岗位的变化,导致了工作 ...

  6. python自动化执行脚本

    ---恢复内容开始--- 1 (1)首先在你的.py文件上加上一行代码注释: #!/usr/local/bin/python2.7 (2)终端下执行: crontab -e 进入后,输入i 进入可编辑 ...

  7. 设置ssh免密码登录脚本(hadoop自动化部署脚本一)

    设置ssh免密码登录脚本(hadoop自动化部署脚本一) 设置ssh免密码登录脚本(飞谷云大数据自动化部署脚本一) 1.#!/bin/sh2.#important note:this script i ...

  8. openstack一键安装脚本(转载)

    #!/bin/sh # openstack pike 单机 一键安装 # 环境 centos 7.4.1708 x86_64 # 更多内容 http://dwz.cn/openstack # Myde ...

  9. Jenkins持续集成-自动化部署脚本的实现

    要实现Jenkins端的持续集成,其实在CI服务配置端很容易,难点呢?就是如何实现自动化的部署.我的脚本设计就是为了解决以下难题: 难点一.如何使得自动化部署脚本更通用 我用的脚本,依赖依赖一个配置文 ...

随机推荐

  1. jQuery图片剪裁插件Cropper.js的使用

    插件下载地址及文档说明 1.引入必要的js和css核心文件 <link rel="stylesheet" href="../css/cropper.css" ...

  2. 常用excel函数公式及操作示例

    一.数字处理 1.取绝对值 =ABS(数字) 2.取整 =INT(数字) 3.四舍五入 =ROUND(数字,小数位数) 二.判断公式 1.把公式产生的错误值显示为空 公式:C2 =IFERROR(A2 ...

  3. Windows下解决github push failed (remote: Permission to userA/XXXX.git denied to userB.) 上传gitHub失败报错

    Windows环境下解决 github push failed (remote: Permission to userA/XXXX.git denied to userB.) · 初学GitHub的朋 ...

  4. Java中数字的格式化输出

    Java中数字的格式化输出 double d = 345.678; String s = "hello!"; int i = 1234; //"%"表示进行格式 ...

  5. CQYZOJ P1392 拔河问题

    题目\(1\) Description 一个学校举行拔河比赛,所有的人被分成了两组,每个人必须(且只能够)在其中的一组,且两个组内的所有人体重加起来尽可能地接近. Input 第\(1\)行是一个\( ...

  6. [Codechef SSTORY] A Story with Strings - 后缀数组,二分

    [Codechef SSTORY] A Story with Strings Description 给定两个字符串,求它们的最长公共子串.如果解不唯一,输出最先在第二个字符串中出现的那个. Solu ...

  7. [TJOI2017] DNA - 后缀数组,稀疏表

    [TJOI2017] DNA Description 求模式串与主串的匹配次数,容错不超过三个字符. Solution 枚举每个开始位置,进行暴力匹配,直到失配次数用光或者匹配成功.考虑到容错量很小, ...

  8. jquery-validation.js验证插件使用详解

    jquery-validation 使用 一.用前必备 官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: ...

  9. js面向对象的程序设计 --- 中篇(创建对象) 之 工厂模式和 构造函数模式

    创建对象 虽然Object构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量重复代码. ·工厂模式 工厂模式是一种广为人知的设计模式,这种模式 ...

  10. AcWing 338. 计数问题

    #include <iostream> #include <algorithm> #include <vector> using namespace std; ; ...