脚本没有完善,现在只有上半部分的基础环境搭建
【准备条件】
1.三个节点的防火墙关闭
2.原有mysql卸载删除
3.文件夹名字: mgr
所有的源码包都放在mgr的文件夹下
4.文件位置: /root/mgr
5.软件包和脚本
链接:https://pan.baidu.com/s/1HCpdfE9__QLUo4CFI3nlNA 密码:zoig
脚本文件
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43#!/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随机密码后面会用到
修改密码
好久没写了,今天看了看以前写的脚本,虽然写的不是那么优雅,但是再瞅瞅现在,感觉自己算是废了~
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335MYSQL #!/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
转载于:https://www.cnblogs.com/wangyang0210/p/9720852.html
最后
以上就是大胆鞋垫最近收集整理的关于【Linux】MGR部署脚本的全部内容,更多相关【Linux】MGR部署脚本内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复