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

【准备条件】

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

  2.原有mysql卸载删除

       3.文件夹名字: mgr

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

  4.文件位置: /root/mgr

  5.软件包和脚本

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

 

脚本文件

  1. #!/bin/bash
  2. #basic
  3. for((i=1;i<4;i++));do
  4. echo "please enter ip $i address and $i hostname";
  5. read a[$i]
  6. echo ${a[$i]} >> /etc/hosts
  7. ping -c 3 $(echo ${a[$i]} | awk \'{print $1}\')
  8. if [ $? -eq 0 ];then
  9. echo "network connection sucessfully !"
  10. else
  11. echo "network connection faild ! please check hosts file or network !"
  12. exit 1
  13. fi
  14. done
  15. #i(stall gcc gcc-c++ ncurses-devel
  16. yum install gcc gcc-c++ ncurses-devel -y
  17. #install cmake
  18. cd /root/mgr/
  19. tar -zxvf cmake-3.7.2.tar.gz
  20. cd cmake-3.7.2
  21. ./configure && gmake && gmake install
  22. #install boost
  23. cd /root/mgr/
  24. tar -zxvf boost_1_59_0.tar.gz
  25. cp -rvf boost_1_59_0 /usr/local/boost
  26. #install msyql5.7.17
  27. cd /root/mgr/
  28. groupadd mysql
  29. useradd -M -s /sbin/nologin mysql -g mysql
  30. tar -zxvf mysql-5.7.17.tar.gz
  31. cd mysql-5.7.17
  32. 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
  33. mv /etc/my.cnf /etc/my.cnf.default
  34. cp -rvf /data/mysql/support-files/my-default.cnf /etc/my.cnf
  35. /data/mysql/bin/mysqld --initialize --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
  36. echo "PATH=$PATH:/data/mysql/bin" >> /etc/profile
  37. source /etc/profile
  38. cp /data/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
  39. chmod +x /etc/rc.d/init.d/mysqld

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

修改密码

 

 

 

 

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

  1. MYSQL
  2. #!/bin/bash
  3. source /etc/xiandian/openrc.sh
  4. source /etc/keystone/admin-openrc.sh
  5. #提示用户输入要导出的数据库
  6. echo "Enter the name of database you want to export:"
  7. #读取用户输入的数据库名
  8. read a
  9. #将用户输入的数据库名和数据库中的进行比对,看是否存在该数据库
  10. p=$(mysql -uroot -p000000 -e "show databases;" | grep -w $a)
  11. #如果不存在该数据库,提醒用户该数据库不存在,请重新输入,并退出该脚本
  12. if [ "$p" != "$a" ] ; then
  13. echo " Database does not exit ! Please enther the database name !"
  14. exit 1
  15. fi
  16. #创建备份目录
  17. bk=/opt/mysql/
  18. #检查是否存在该目录,不存在则创建,存在则设置不可任意改变该目录
  19. if [ ! -d $bk ] ; then
  20. mkdir -p $bk
  21. else
  22. chattr -i $bk
  23. fi
  24. #将用户需要的数据库导出到指定目录,并加上时间前缀和数据库名称来命名,以sql文件保存(例:2017-05-18-keystone.sql)
  25. mysqldump -uroot -p000000 $a >$bk/$(date +%F)-$a.sql
  26. #判断数据库是否成功导出,成功则提示用户数据库已经成功导出,不成功则提示用户数据库导出失败,并退出该脚本
  27. if [ $? eq 0 ] ; then
  28. echo "Database $a export to $bk sucessfully !"
  29. else
  30. echo "Database $a export to $bk failed !"
  31. exit 1
  32. fi
  33. #cd到备份目录下
  34. cd $bk
  35. #将导出的数据库文件赋给b,为了便于上传。
  36. b=$(date +%F)-$a.sql
  37. #创建swift
  38. c=swift-$a
  39. #上传文件到指定的容器中,如果没有该容器则会自动创建容器
  40. swift -U admin -K 000000 upload $c $b
  41. #判断文件是否上传成功,上传成功则提示用户上传文件成功,反之则提示上传失败
  42. if [ $? eq 0 ] ; then
  43. echo "Database $b upload to $c sucessfully !"
  44. else
  45. echo "Database $b upload to $c failed !"
  46. fi
  47. 缩减版
  48. #!/bin/bash
  49. source /etc/xiandian/openrc.sh
  50. source /etc/keystone/admin-openrc.sh
  51. #创建备份目录
  52. bk=/opt/keystone/
  53. #检查是否存在该目录,不存在则创建,存在则设置不可任意改变该目录
  54. if [ ! -d $bk ] ; then
  55. mkdir -p $bk
  56. else
  57. chattr -i $bk
  58. fi
  59. #将keystone数据库导出到指定目录,并加上时间前缀和数据库名称来命名,以sql文件保存(例:2017-05-18-keystone.sql)
  60. mysqldump -uroot -p000000 keystone > $bk/$(date +%F).sql
  61. if [ 0 eq $?]
  62. echo Database export to $bk sucessfully!
  63. else
  64. echo Database export to $bk failled!
  65. fi
  66. #cd到备份目录
  67. cd $bk
  68. #上传文件到keystone容器中,如果没有该容器则会自动创建容器
  69. swift upload keystone $(date +%F).sql
  70. #判断文件是否上传成功,上传成功则提示用户上传文件成功,反之则提示上传失败
  71. if [ $? eq 0 ] ; then
  72. echo "Database $b upload to $c sucessfully !"
  73. else
  74. echo "Database $b upload to $c failed !"
  75. fi
  76. Keystone 创建版
  77. #!/bin/bash
  78. source /etc/keystone/admin-openrc.sh
  79. source /etc/xiandian/openrc.sh
  80. #读取脚本后面的参数名 $0是脚本本身名字
  81. file=$1
  82. #定义数组,使用while循环将从文件中读取到的值赋给数组
  83. j=0
  84. while read line
  85. do
  86. i=1
  87. while :
  88. do
  89. str=` echo $line | cut -d " " -f $i `
  90. if [ "$str" == "$line" ];then
  91. arr[j]=$str
  92. break
  93. elif [ "$str" != "" ];then
  94. arr[j]=$str
  95. else
  96. break
  97. fi
  98. i=$(($i+1))
  99. j=$(($j+1))
  100. a=$(($j%2))
  101. #将数组中的用户名和密码通过if条件分开,并分别打印出来
  102. if [ 0 == $a ] ; then
  103. pass=$str
  104. echo $pass
  105. else
  106. name=$str
  107. echo $name
  108. fi
  109. done
  110. #创建用户
  111. openstack user create $name --password $pass --domain $DOMAIN_NAME
  112. #判断用户是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
  113. if [ 0 -eq $? ] ; then
  114. echo " user $name create sucessfully!"
  115. else
  116. echo " user $name create failed!"
  117. exit 1
  118. fi
  119. #创建租户
  120. openstack project create $name --domain $DOMAIN_NAME
  121. #判断租户是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
  122. if [ 0 -eq $? ] ; then
  123. echo " project $name create sucessfully!"
  124. else
  125. echo " project $name create failed!"
  126. exit 1
  127. fi
  128. #将创建的用户添加到创建的租户中并给予user权限
  129. openstack role add --user $name --project $name user
  130. #判断授权是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
  131. if [ 0 -eq $? ] ; then
  132. echo " permit grant for $name sucessfully!"
  133. else
  134. echo " permit grant for $name failed!"
  135. exit1
  136. fi
  137. done < $file
  138. 删除版
  139. #!/bin/bash
  140. source /etc/keystone/admin-openrc.sh
  141. source /etc/xiandian/openrc.sh
  142. #读取脚本后面的参数名 $0是脚本本身名字
  143. file=$1
  144. #定义数组,使用while循环将从文件中读取到的值赋给数组
  145. j=0
  146. while read line
  147. do
  148. i=1
  149. while :
  150. do
  151. str=` echo $line | cut -d " " -f $i `
  152. if [ "$str" == "$line" ];then
  153. arr[j]=$str
  154. break
  155. elif [ "$str" != "" ];then
  156. arr[j]=$str
  157. else
  158. break
  159. fi
  160. i=$(($i+1))
  161. j=$(($j+1))
  162. a=$(($j%2))
  163. #将数组中的用户名和密码通过if条件分开,并分别打印出来
  164. if [ 0 == $a ] ; then
  165. pass=$str
  166. echo $pass
  167. else
  168. name=$str
  169. echo $name
  170. fi
  171. done
  172. #移除权限
  173. openstack role remove --user $name --project $name user
  174. #判断是否成功移除权限,成功则提示用户移除成功,失败则提示用户移除失败,并退出脚本
  175. if [ 0 -eq $? ] ; then
  176. echo " remove grant for $name sucessfully!"
  177. else
  178. echo " remove grant for $name failed!"
  179. exit1
  180. fi
  181. #删除用户
  182. openstack user delete $name --domain $DOMAIN_NAME
  183. #判断是否成功删除用户,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本
  184. if [ 0 -eq $? ] ; then
  185. echo " user $name delete sucessfully!"
  186. else
  187. echo " user $name delete failed!"
  188. exit 1
  189. fi
  190. #删除租户
  191. openstack project delete $name --domain $DOMAIN_NAME
  192. #判断是否成功删除租户,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本
  193. if [ 0 -eq $? ] ; then
  194. echo " project $name delete sucessfully!"
  195. else
  196. echo " project $name delete failed!"
  197. exit 1
  198. fi
  199. done < $file
  200. Swift 创建版
  201. #!/bin/bash
  202. source /etc/keystone/admin-openrc.sh
  203. source /etc/xiandian/openrc.sh
  204. #接收跟在脚本后面的两个值
  205. name=$1
  206. pass=$2
  207. #判断用户是否存在
  208. u=`openstack user list | grep -w -o $name`
  209. #如果用户存在,则提示用户该用户已存在,请重新输入,并退出该脚本
  210. if [ "$u" = "$name" ] ; then
  211. echo "$name already exists. Please re-enter"
  212. exit 1
  213. fi
  214. #创建用户
  215. openstack user create $name --password $pass --domain $DOMAIN_NAME
  216. #判断用户是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
  217. if [ 0 -eq $? ] ; then
  218. echo "$name create sucessfully!"
  219. else
  220. echo "$name create failure!!!"
  221. exit 1
  222. fi
  223. #将创建的用户添加到admin项目中并授予admin角色的权限
  224. openstack role add --user $name --project admin admin
  225. #判断授权是否成功,成功则提示用户授权成功,失败则提示用户授权失败,并退出脚本
  226. if [ 0 -eq $? ] ; then
  227. echo "$name privilege grant sucessfully!"
  228. else
  229. echo "$name privilege grant failed!!!"
  230. exit 1
  231. fi
  232. #检测主机的真实IP地址
  233. ip=`ifconfig eth0 |grep -w \'inet\' | awk \'{print $2}\'`
  234. #如果有IP地址则输出IP地址没有则提示没有获取到IP并退出脚本
  235. if [ 0 -eq $? ] ; then
  236. echo "swift controller ip $ip"
  237. else
  238. echo "No geting IP!"
  239. fi
  240. #创建swift的容器
  241. 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
  242. #判断容器是否创建成功,成功则提示用户创建成功,失败则提示用户创建失败,并退出脚本
  243. if [ 0 -eq $? ] ; then
  244. echo "swift create sucessfully!"
  245. else
  246. echo "swift create failure!!!"
  247. exit 1
  248. fi
  249. #上传文件到创建好的容器上,如果要上传一个目录,可直接输入目录名,也可将目录的路径给某一个值,利用此值来传递(a=/root/keystone $a来代替)
  250. 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
  251. #判断上传是否成功,成功则提示用户上传成功,失败则提示用户上传失败,并退出脚本
  252. if [ 0 -eq $? ] ; then
  253. echo "swift upload sucessfully!"
  254. else
  255. echo "swift upload failure!!!"
  256. exit 1
  257. fi
  258. #显示该账户创建的容器列表
  259. 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
  260. #显示该容器中的文件列表
  261. 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
  262. 删除版
  263. #!/bin/bash
  264. source /etc/keystone/admin-openrc.sh
  265. source /etc/xiandian/openrc.sh
  266. #接收跟在脚本后面的两个值
  267. name=$1
  268. pass=$2
  269. #检测主机的真实IP地址
  270. ip=`ifconfig eth0 |grep -w \'inet\' | awk \'{print $2}\'`
  271. #如果有IP地址则输出IP地址没有则提示没有获取到IP并退出脚本
  272. if [ 0 -eq $? ] ; then
  273. echo "swift controller ip $ip"
  274. else
  275. echo "No geting IP!"
  276. exit 1
  277. fi
  278. #显示该账户创建的容器列表
  279. 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
  280. #删除该账户创建的容器
  281. 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
  282. #判断容器是否删除成功,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本
  283. if [ 0 -eq $? ] ; then
  284. echo "swift delete sucessfully!"
  285. else
  286. echo "swift delete failure!!!"
  287. exit 1
  288. fi
  289. #判断用户是否存在
  290. u=`openstack user list | grep -w -o $name`
  291. #如果用户存在,则提示用户该用户存在,正在执行删除命令,不存在,则提示用户该用户不存在,请重新输入,并退出该脚本
  292. if [ "$u" = "$name" ] ; then
  293. echo "$name User presence is executing delete command."
  294. else
  295. echo "The user does not exist. Please re-enter it!"
  296. exit 1
  297. fi
  298. #移除用户权限
  299. openstack role remove --user $name --project admin admin
  300. #判断移除用户权限是否成功,成功则提示用户移除权限成功,失败则提示用户移除权限失败,并退出脚本
  301. if [ 0 -eq $? ] ; then
  302. echo "$name remove grant sucessfully!"
  303. else
  304. echo "$name remove grant failed!!!"
  305. exit 1
  306. fi
  307. #删除用户
  308. openstack user delete $name --domain $DOMAIN_NAME
  309. #判断删除用户是否成功,成功则提示用户删除成功,失败则提示用户删除失败,并退出脚本
  310. if [ 0 -eq $? ] ; then
  311. echo "$name delete sucessfully!"
  312. else
  313. echo "$name delete failure!!!"
  314. exit 1
  315. fi

 

版权声明:本文为wangyang0210原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wangyang0210/p/9720852.html