【Linux】MGR部署脚本
脚本没有完善,现在只有上半部分的基础环境搭建
【准备条件】
1.三个节点的防火墙关闭
2.原有mysql卸载删除
3.文件夹名字: mgr
所有的源码包都放在mgr的文件夹下
4.文件位置: /root/mgr
链接:https://pan.baidu.com/s/1HCpdfE9__QLUo4CFI3nlNA 密码:zoig
脚本文件
#!/bin/bash #basic for((i=1;i<4;i++));do echo "please enter ip $i address and $i hostname"; read a[$i] echo ${a[$i]} >> /etc/hosts ping -c 3 $(echo ${a[$i]} | awk '{print $1}') if [ $? -eq 0 ];then echo "network connection sucessfully !" else echo "network connection faild ! please check hosts file or network !" exit 1 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.2.tar.gz cd cmake-3.7.2 ./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.17.tar.gz cd mysql-5.7.17 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 1 fi #创建备份目录 bk=/opt/mysql/ #检查是否存在该目录,不存在则创建,存在则设置不可任意改变该目录 if [ ! -d $bk ] ; then mkdir -p $bk else chattr -i $bk fi #将用户需要的数据库导出到指定目录,并加上时间前缀和数据库名称来命名,以sql文件保存(例:2017-05-18-keystone.sql) mysqldump -uroot -p000000 $a >$bk/$(date +%F)-$a.sql #判断数据库是否成功导出,成功则提示用户数据库已经成功导出,不成功则提示用户数据库导出失败,并退出该脚本 if [ $? –eq 0 ] ; then echo "Database $a export to $bk sucessfully !" else echo "Database $a export to $bk failed !" exit 1 fi #cd到备份目录下 cd $bk #将导出的数据库文件赋给b,为了便于上传。 b=$(date +%F)-$a.sql #创建swift c=swift-$a #上传文件到指定的容器中,如果没有该容器则会自动创建容器 swift -U admin -K 000000 upload $c $b #判断文件是否上传成功,上传成功则提示用户上传文件成功,反之则提示上传失败 if [ $? –eq 0 ] ; 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文件保存(例:2017-05-18-keystone.sql) mysqldump -uroot -p000000 keystone > $bk/$(date +%F).sql if [ 0 –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 0 ] ; 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=$1 #定义数组,使用while循环将从文件中读取到的值赋给数组 j=0 while read line do i=1 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+1)) j=$(($j+1)) a=$(($j%2)) #将数组中的用户名和密码通过if条件分开,并分别打印出来 if [ 0 == $a ] ; then pass=$str echo $pass else name=$str echo $name fi done #创建用户 openstack user create $name --password $pass --domain $DOMAIN_NAME #判断用户是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本 if [ 0 -eq $? ] ; then echo " user $name create sucessfully!" else echo " user $name create failed!" exit 1 fi #创建租户 openstack project create $name --domain $DOMAIN_NAME #判断租户是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本 if [ 0 -eq $? ] ; then echo " project $name create sucessfully!" else echo " project $name create failed!" exit 1 fi #将创建的用户添加到创建的租户中并给予user权限 openstack role add --user $name --project $name user #判断授权是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本 if [ 0 -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=$1 #定义数组,使用while循环将从文件中读取到的值赋给数组 j=0 while read line do i=1 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+1)) j=$(($j+1)) a=$(($j%2)) #将数组中的用户名和密码通过if条件分开,并分别打印出来 if [ 0 == $a ] ; then pass=$str echo $pass else name=$str echo $name fi done #移除权限 openstack role remove --user $name --project $name user #判断是否成功移除权限,成功则提示用户移除成功,失败则提示用户移除失败,并退出脚本 if [ 0 -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 [ 0 -eq $? ] ; then echo " user $name delete sucessfully!" else echo " user $name delete failed!" exit 1 fi #删除租户 openstack project delete $name --domain $DOMAIN_NAME #判断是否成功删除租户,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本 if [ 0 -eq $? ] ; then echo " project $name delete sucessfully!" else echo " project $name delete failed!" exit 1 fi done < $file Swift 创建版 #!/bin/bash source /etc/keystone/admin-openrc.sh source /etc/xiandian/openrc.sh #接收跟在脚本后面的两个值 name=$1 pass=$2 #判断用户是否存在 u=`openstack user list | grep -w -o $name` #如果用户存在,则提示用户该用户已存在,请重新输入,并退出该脚本 if [ "$u" = "$name" ] ; then echo "$name already exists. Please re-enter" exit 1 fi #创建用户 openstack user create $name --password $pass --domain $DOMAIN_NAME #判断用户是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本 if [ 0 -eq $? ] ; then echo "$name create sucessfully!" else echo "$name create failure!!!" exit 1 fi #将创建的用户添加到admin项目中并授予admin角色的权限 openstack role add --user $name --project admin admin #判断授权是否成功,成功则提示用户授权成功,失败则提示用户授权失败,并退出脚本 if [ 0 -eq $? ] ; then echo "$name privilege grant sucessfully!" else echo "$name privilege grant failed!!!" exit 1 fi #检测主机的真实IP地址 ip=`ifconfig eth0 |grep -w 'inet' | awk '{print $2}'` #如果有IP地址则输出IP地址没有则提示没有获取到IP并退出脚本 if [ 0 -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 [ 0 -eq $? ] ; then echo "swift create sucessfully!" else echo "swift create failure!!!" exit 1 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 [ 0 -eq $? ] ; then echo "swift upload sucessfully!" else echo "swift upload failure!!!" exit 1 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=$1 pass=$2 #检测主机的真实IP地址 ip=`ifconfig eth0 |grep -w 'inet' | awk '{print $2}'` #如果有IP地址则输出IP地址没有则提示没有获取到IP并退出脚本 if [ 0 -eq $? ] ; then echo "swift controller ip $ip" else echo "No geting IP!" exit 1 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 [ 0 -eq $? ] ; then echo "swift delete sucessfully!" else echo "swift delete failure!!!" exit 1 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 1 fi #移除用户权限 openstack role remove --user $name --project admin admin #判断移除用户权限是否成功,成功则提示用户移除权限成功,失败则提示用户移除权限失败,并退出脚本 if [ 0 -eq $? ] ; then echo "$name remove grant sucessfully!" else echo "$name remove grant failed!!!" exit 1 fi #删除用户 openstack user delete $name --domain $DOMAIN_NAME #判断删除用户是否成功,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本 if [ 0 -eq $? ] ; then echo "$name delete sucessfully!" else echo "$name delete failure!!!" exit 1 fi
学无止境,谦卑而行.