脚本没有完善,现在只有上半部分的基础环境搭建

【准备条件】

  1.三个节点的防火墙关闭

  2.原有mysql卸载删除

3.文件夹名字: mgr

      所有的源码包都放在mgr的文件夹下

  4.文件位置: /root/mgr

  5.软件包和脚本

    链接:https://pan.baidu.com/s/1HCpdfE9__QLUo4CFI3nlNA密码:zoig

脚本文件

#!/bin/bash

#basic
for((i=;i<;i++));do
echo "please enter ip $i address and $i hostname";
read a[$i]
echo ${a[$i]} >> /etc/hosts
ping -c $(echo ${a[$i]} | awk '{print $1}')
if [ $? -eq ];then
echo "network connection sucessfully !"
else
echo "network connection faild ! please check hosts file or network !"
exit
fi
done
#i(stall gcc gcc-c++ ncurses-devel
yum install gcc gcc-c++ ncurses-devel -y #install cmake
cd /root/mgr/
tar -zxvf cmake-3.7..tar.gz
cd cmake-3.7.
./configure && gmake && gmake install #install boost
cd /root/mgr/
tar -zxvf boost_1_59_0.tar.gz
cp -rvf boost_1_59_0 /usr/local/boost #install msyql5.7.17
cd /root/mgr/
groupadd mysql
useradd -M -s /sbin/nologin mysql -g mysql
tar -zxvf mysql-5.7..tar.gz
cd mysql-5.7.
cmake -DCMAKE_INSTALL_PREFIX=/data/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_BOOST=/usr/local/boost && make && make install
mv /etc/my.cnf /etc/my.cnf.default
cp -rvf /data/mysql/support-files/my-default.cnf /etc/my.cnf
/data/mysql/bin/mysqld --initialize --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
echo "PATH=$PATH:/data/mysql/bin" >> /etc/profile
source /etc/profile
cp /data/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld

uuid和mysql随机密码后面会用到

修改密码

好久没写了,今天看了看以前写的脚本,虽然写的不是那么优雅,但是再瞅瞅现在,感觉自己算是废了~

MYSQL
#!/bin/bash
source /etc/xiandian/openrc.sh
source /etc/keystone/admin-openrc.sh
#提示用户输入要导出的数据库
echo "Enter the name of database you want to export:"
#读取用户输入的数据库名
read a
#将用户输入的数据库名和数据库中的进行比对,看是否存在该数据库
p=$(mysql -uroot -p000000 -e "show databases;" | grep -w $a)
#如果不存在该数据库,提醒用户该数据库不存在,请重新输入,并退出该脚本
if [ "$p" != "$a" ] ; then
echo " Database does not exit ! Please enther the database name !"
exit
fi
#创建备份目录
bk=/opt/mysql/
#检查是否存在该目录,不存在则创建,存在则设置不可任意改变该目录
if [ ! -d $bk ] ; then
mkdir -p $bk
else
chattr -i $bk
fi
#将用户需要的数据库导出到指定目录,并加上时间前缀和数据库名称来命名,以sql文件保存(例:---keystone.sql)
mysqldump -uroot -p000000 $a >$bk/$(date +%F)-$a.sql
#判断数据库是否成功导出,成功则提示用户数据库已经成功导出,不成功则提示用户数据库导出失败,并退出该脚本
if [ $? –eq ] ; then
echo "Database $a export to $bk sucessfully !"
else
echo "Database $a export to $bk failed !"
exit
fi
#cd到备份目录下
cd $bk
#将导出的数据库文件赋给b,为了便于上传。
b=$(date +%F)-$a.sql
#创建swift
c=swift-$a
#上传文件到指定的容器中,如果没有该容器则会自动创建容器
swift -U admin -K upload $c $b
#判断文件是否上传成功,上传成功则提示用户上传文件成功,反之则提示上传失败
if [ $? –eq ] ; then
echo "Database $b upload to $c sucessfully !"
else
echo "Database $b upload to $c failed !"
fi 缩减版
#!/bin/bash source /etc/xiandian/openrc.sh
source /etc/keystone/admin-openrc.sh
#创建备份目录
bk=/opt/keystone/
#检查是否存在该目录,不存在则创建,存在则设置不可任意改变该目录
if [ ! -d $bk ] ; then
mkdir -p $bk
else
chattr -i $bk
fi
#将keystone数据库导出到指定目录,并加上时间前缀和数据库名称来命名,以sql文件保存(例:---keystone.sql)
mysqldump -uroot -p000000 keystone > $bk/$(date +%F).sql
if [ –eq $?]
echo “ Database export to $bk sucessfully!”
else
echo “ Database export to $bk failled!”
fi
#cd到备份目录
cd $bk
#上传文件到keystone容器中,如果没有该容器则会自动创建容器
swift upload keystone $(date +%F).sql
#判断文件是否上传成功,上传成功则提示用户上传文件成功,反之则提示上传失败
if [ $? –eq ] ; then
echo "Database $b upload to $c sucessfully !"
else
echo "Database $b upload to $c failed !"
fi Keystone 创建版
#!/bin/bash
source /etc/keystone/admin-openrc.sh
source /etc/xiandian/openrc.sh
#读取脚本后面的参数名 $0是脚本本身名字
file=$
#定义数组,使用while循环将从文件中读取到的值赋给数组
j=
while read line
do
i=
while :
do
str=` echo $line | cut -d " " -f $i `
if [ "$str" == "$line" ];then
arr[j]=$str
break
elif [ "$str" != "" ];then
arr[j]=$str
else
break
fi
i=$(($i+))
j=$(($j+))
a=$(($j%))
#将数组中的用户名和密码通过if条件分开,并分别打印出来
if [ == $a ] ; then
pass=$str
echo $pass
else
name=$str
echo $name
fi
done
#创建用户
openstack user create $name --password $pass --domain $DOMAIN_NAME
#判断用户是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
if [ -eq $? ] ; then
echo " user $name create sucessfully!"
else
echo " user $name create failed!"
exit
fi
#创建租户
openstack project create $name --domain $DOMAIN_NAME
#判断租户是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
if [ -eq $? ] ; then
echo " project $name create sucessfully!"
else
echo " project $name create failed!"
exit
fi
#将创建的用户添加到创建的租户中并给予user权限
openstack role add --user $name --project $name user
#判断授权是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
if [ -eq $? ] ; then
echo " permit grant for $name sucessfully!"
else
echo " permit grant for $name failed!"
exit1
fi
done < $file 删除版
#!/bin/bash
source /etc/keystone/admin-openrc.sh
source /etc/xiandian/openrc.sh
#读取脚本后面的参数名 $0是脚本本身名字
file=$
#定义数组,使用while循环将从文件中读取到的值赋给数组
j=
while read line
do
i=
while :
do
str=` echo $line | cut -d " " -f $i `
if [ "$str" == "$line" ];then
arr[j]=$str
break
elif [ "$str" != "" ];then
arr[j]=$str
else
break
fi
i=$(($i+))
j=$(($j+))
a=$(($j%))
#将数组中的用户名和密码通过if条件分开,并分别打印出来
if [ == $a ] ; then
pass=$str
echo $pass
else
name=$str
echo $name
fi
done
#移除权限
openstack role remove --user $name --project $name user
#判断是否成功移除权限,成功则提示用户移除成功,失败则提示用户移除失败,并退出脚本
if [ -eq $? ] ; then
echo " remove grant for $name sucessfully!"
else
echo " remove grant for $name failed!"
exit1
fi
#删除用户
openstack user delete $name --domain $DOMAIN_NAME
#判断是否成功删除用户,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本
if [ -eq $? ] ; then
echo " user $name delete sucessfully!"
else
echo " user $name delete failed!"
exit
fi
#删除租户
openstack project delete $name --domain $DOMAIN_NAME
#判断是否成功删除租户,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本
if [ -eq $? ] ; then
echo " project $name delete sucessfully!"
else
echo " project $name delete failed!"
exit
fi
done < $file Swift 创建版
#!/bin/bash
source /etc/keystone/admin-openrc.sh
source /etc/xiandian/openrc.sh
#接收跟在脚本后面的两个值
name=$
pass=$
#判断用户是否存在
u=`openstack user list | grep -w -o $name`
#如果用户存在,则提示用户该用户已存在,请重新输入,并退出该脚本
if [ "$u" = "$name" ] ; then
echo "$name already exists. Please re-enter"
exit
fi
#创建用户
openstack user create $name --password $pass --domain $DOMAIN_NAME
#判断用户是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
if [ -eq $? ] ; then
echo "$name create sucessfully!"
else
echo "$name create failure!!!"
exit
fi
#将创建的用户添加到admin项目中并授予admin角色的权限
openstack role add --user $name --project admin admin
#判断授权是否成功,成功则提示用户授权成功,失败则提示用户授权失败,并退出脚本
if [ -eq $? ] ; then
echo "$name privilege grant sucessfully!"
else
echo "$name privilege grant failed!!!"
exit
fi
#检测主机的真实IP地址
ip=`ifconfig eth0 |grep -w 'inet' | awk '{print $2}'`
#如果有IP地址则输出IP地址没有则提示没有获取到IP并退出脚本
if [ -eq $? ] ; then
echo "swift controller ip $ip"
else
echo "No geting IP!"
fi
#创建swift的容器
swift -A http://$ip:35357/v3 --os-username $name --os-user-domain-name $DOMAIN_NAME --os-project-name admin --os-project-domain-name $DOMAIN_NAME --os-password $pass post $name
#判断容器是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
if [ -eq $? ] ; then
echo "swift create sucessfully!"
else
echo "swift create failure!!!"
exit
fi
#上传文件到创建好的容器上,如果要上传一个目录,可直接输入目录名,也可将目录的路径给某一个值,利用此值来传递(a=/root/keystone $a来代替)
swift -A http://$ip:35357/v3 --os-username $name --os-user-domain-name $DOMAIN_NAME --os-project-name admin --os-project-domain-name $DOMAIN_NAME --os-password $pass upload $name 1.sh
#判断上传是否成功,成功则提示用户上传成功,失败则提示用户上传失败,并退出脚本
if [ -eq $? ] ; then
echo "swift upload sucessfully!"
else
echo "swift upload failure!!!"
exit
fi
#显示该账户创建的容器列表
swift -A http://$ip:35357/v3 --os-username $name --os-user-domain-name $DOMAIN_NAME --os-project-name admin --os-project-domain-name $DOMAIN_NAME --os-password $pass list
#显示该容器中的文件列表
swift -A http://$ip:35357/v3 --os-username $name --os-user-domain-name $DOMAIN_NAME --os-project-name admin --os-project-domain-name $DOMAIN_NAME --os-password $pass list $name 删除版
#!/bin/bash
source /etc/keystone/admin-openrc.sh
source /etc/xiandian/openrc.sh
#接收跟在脚本后面的两个值
name=$
pass=$
#检测主机的真实IP地址
ip=`ifconfig eth0 |grep -w 'inet' | awk '{print $2}'`
#如果有IP地址则输出IP地址没有则提示没有获取到IP并退出脚本
if [ -eq $? ] ; then
echo "swift controller ip $ip"
else
echo "No geting IP!"
exit
fi
#显示该账户创建的容器列表
swift -A http://$ip:35357/v3 --os-username $name --os-user-domain-name $DOMAIN_NAME --os-project-name admin --os-project-domain-name $DOMAIN_NAME --os-password $pass list
#删除该账户创建的容器
swift -A http://$ip:35357/v3 --os-username $name --os-user-domain-name $DOMAIN_NAME --os-project-name admin --os-project-domain-name $DOMAIN_NAME --os-password $pass delete $name
#判断容器是否删除成功,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本
if [ -eq $? ] ; then
echo "swift delete sucessfully!"
else
echo "swift delete failure!!!"
exit
fi
#判断用户是否存在
u=`openstack user list | grep -w -o $name`
#如果用户存在,则提示用户该用户存在,正在执行删除命令,不存在,则提示用户该用户不存在,请重新输入,并退出该脚本
if [ "$u" = "$name" ] ; then
echo "$name User presence is executing delete command."
else
echo "The user does not exist. Please re-enter it!"
exit
fi
#移除用户权限
openstack role remove --user $name --project admin admin
#判断移除用户权限是否成功,成功则提示用户移除权限成功,失败则提示用户移除权限失败,并退出脚本
if [ -eq $? ] ; then
echo "$name remove grant sucessfully!"
else
echo "$name remove grant failed!!!"
exit
fi
#删除用户
openstack user delete $name --domain $DOMAIN_NAME
#判断删除用户是否成功,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本
if [ -eq $? ] ; then
echo "$name delete sucessfully!"
else
echo "$name delete failure!!!"
exit
fi

【Linux】MGR部署脚本的更多相关文章

  1. Linux 一键部署脚本

    在当前路径下输入 chmod 777 脚本名 给脚本授权, 然后就可以执行脚本 ./脚本名    777 是最高权限,有读.写.执行权限:和属组用户和其他用户的读.写.执行权限. 其他权限分别是 -r ...

  2. Linux中kettle自动化部署脚本

    自己写的一个自动化在Linux中部署kettle的脚本,包括一些遇到的问题在脚本中都有涉及. kettle是官网最新版本pdi-ce-6.1.0.1-196.zip 目前最新版本下载地址:https: ...

  3. 吻逗死(windows)系统下自动部署脚本(for java spring*)及linux命令行工具

    转载请注明出处:https://www.cnblogs.com/funnyzpc/p/10051647.html (^^)(^^)自動部署腳本原本在上個公司就在使用,由於近期同事需要手動部署一個Spr ...

  4. Linux shell编写脚本部署pxe网络装机

    Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机  https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...

  5. 自动化部署脚本--linux执行sh脚本

    自动化部署脚本文件目录: 运行主程序:./install.sh #!/bin/bash SCRIPTPATH=$(cd "$(dirname "$0")"; p ...

  6. Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务

    文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...

  7. linux mysql 5.7.20 部署脚本+备份脚本

    一.官网下载源码包 源码包:mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz 检查环境,卸载老版本mysql 二.自动部署脚本 进入文件目录,执行脚本 #!/bin ...

  8. Java web项目在linux环境下自动编译和部署脚本

    自动编译脚本 build.sh, 放置在项目根目录下. #!/bin/bash # check args # init path CURRPATH=`pwd` LIBDIR="$CURRPA ...

  9. Linux中部署JAVA程序

    JAVA程序在开发完成后,需要部署到服务器,如果是WEB项目,需要部署到WEB服务器,否则部署到应用服务器. JAVA是跨平台的编程语言,服务器的操作系统可以是Windows.Linux或者其它,下面 ...

随机推荐

  1. win10升级至专业版

    前几天脑子一热,买了个电脑,默认系统还是那简单的win10家庭版.作为一个IT从业者,家庭版是很难受的,因为没有组策略....会导致在装一些软件的时候无法修改.所以来动手吧,方式有几种,这里都大概说说 ...

  2. http协议进阶(四)报文首部

    之前写的关于报文首部的传送门: 报文首部:http://www.cnblogs.com/imyalost/p/5708445.html 通用首部字段:http://www.cnblogs.com/im ...

  3. 如何控制docker的CPU和内存份额

    1.内存:docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 500M 刚开始会报错: docker ...

  4. wifidog源码分析 - wifidog原理

    wifidog是一个用于配合认证服务器实现无线网页认证功能的程序,常见的情景就是使用于公共场合的无线wifi接入点,首先移动设备会连接公共wifi接入点,之后会弹出网页要求输入用户名密码,认证过后才能 ...

  5. 1-STM32嵌入LUA开发(控制小灯闪耀)

    今天因为想让STM32完美的处理字符串,所以就想着让STM32嵌入lua,本来想用f103c8t6,但是一编译就提示内存不足...... 所以单片机的型号选择的 \ 我下载到了RBT6的芯片上测试的 ...

  6. odoo学习之弹框显示

    按条件隐藏: <xpath expr="//group[1]" position="attributes"> <attribute name= ...

  7. Adobe PhotoshopCC2017 安装与破解(Mac)

    简单说明下Adobe Photoshop CC 2017的破解方法: 1.打开dmg镜像,双击“Install”进行安装,登陆Adobe ID(没有注册一个)完成安装: 2.解压缩“Adobe Zii ...

  8. Vue-认识状态管理vuex

    vuex是一个专门为vue.js设计的状态管理模式,并且也可以使用devtools进行调试,可以多个组件共享状态.简单来说,就是共享的状态用state来存放,用mutations来操作state,但是 ...

  9. Linux运维笔记-日常操作命令总结(3)

    文本操作:sed sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作. sed命令行格式为: sed [-nefri] ‘c ...

  10. webvirtmgr-重命名kvm虚拟机的名称

    之前部署了Webvirtmgr平台管理kvm虚拟机,由于虚拟机在创建时名称是顺便起的,后续在虚拟机上部署了部分业务.为了便于管理,最好将虚拟机的名称重置下. 现在说下如何修改kvm中虚拟机的名称: 比 ...