|
|
楼主 |
发表于 2017-11-10 18:07:16
|
显示全部楼层
安装一些自己需要的工具
i% M( N% J* O, I000_添加自己的内部源,没有的同学,跳过此步骤即可;
- l5 F1 N9 M9 f) `6 [; c
" B) \; F5 k5 e0 K- T4 Y7 W+ R001_这里我只安装 cloud-init 、acpid 和 jq
4 D7 n/ N+ K/ [2 V l/ M6 Wacpid服务作用:重新引导或关闭实例
: B) _+ }+ Y( |* ?5 G, Ijq 服务作用:处理json数据
* G6 c0 L n2 W0 r0 G: ^cloud-init服务作用: 配置使用metadata(我把官网的简绍截一下图)
- ?2 {& y; h+ E2 f
& a$ s V4 z/ `: e9 `. ~
4 S* v+ L# P/ S: o! ?) K7 ? * }4 B) S+ L! t. v
7 ?" t* E) N |# D% M0 \
6 L' M; {$ ~. \" M/ ]
/ C2 g2 J: @; J8 S( ~0 _1 zyum -y install acpid cloud-init jq0 |) d9 u3 O: d, V) o- U
5 {8 Z. \6 r# J9 N6 P% }/ O& w: Tchkconfig acpid on
' o( w' Y: D, V3 w1 N# u& N. e; e* v7 H
chkconfig cloud-init on9 Q7 f& \$ p4 f% r& A3 N# Q+ R
# I: A5 G" V8 Z1 F, C2 Z0 t1 T# Wecho "NOZEROCONF=yes" >> /etc/sysconfig/network | [tr][/tr]9 M6 N# k+ m2 b/ M0 ~9 x& c6 x
[tr][/tr]
5 X2 D- O' a8 M9 B0 X0 l) x, D/ }2 k0 @1 e
002_修改内核参数,并更新内核配置
. B. `- x3 N N/ v4 A) a; p* @sed -i '/GRUB_CMDLINE_LINUX/ i\GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"\' /etc/default/grub
# I! W0 ? t3 S
; B& }5 S7 R: E3 x8 Q5 |' N1 Egrub2-mkconfig -o /boot/grub2/grub.cfg | [tr][/tr]+ C- K# \1 l6 P% V
[tr][/tr]
* U: u! C" D! a. s
6 C# W% u$ Z% G4 K* ~0 }003_修改cloud.cfg配置文件 这里,就直接把需要修改的地方用 红色字体标注出来啦,当然也会把 替换的命令贴出来
- J& g" H% P2 T8 Xsed -i 's/disable_root: 1/disable_root: 0/g' /etc/cloud/cloud.cfg0 F% U* E0 G, Z3 ~+ L4 ^
sed -i 's/ssh_pwauth: 0/ssh_pwauth: 1/g' /etc/cloud/cloud.cfg
+ E. x, ]6 R u6 }sed -i 's/name: centos/name: root/g' /etc/cloud/cloud.cfg | [tr][/tr]& m6 k1 I8 a( z8 ?; W) H1 {+ X1 P
[tr][/tr]
9 m$ [' X: q, c! p' F1 i) A) l" @; s% z( ^ N* t
下面编辑 cloud.cfg 部分仅供参考3 B* ^% T, |; q1 D0 n8 a0 P
vim /etc/cloud/cloud.cfg
( M6 N% {6 T1 ]1 w; c users:* i! L% O q. J1 {$ A* k
- default0 v5 Q B. o, k& D& b7 r" U# I
3 n+ k9 M: Y' H' T! ?
disable_root: 0. t; X$ t8 ^6 S6 f6 Y" C! U2 M
ssh_pwauth: 1
/ Q5 F, ~' b0 [7 x ~& `5 }
# K8 t4 N( P$ K/ ?locale_configfile: /etc/sysconfig/i18n' g% w3 {" v# T- f/ K% I& l
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']( ~! E( H3 Z4 z2 t
resize_rootfs_tmp: /dev" z6 f8 z" P. b2 g. x
ssh_deletekeys: 0
) c/ y4 U- A9 f; p: s, R& B0 Dssh_genkeytypes: ~/ y8 r$ Z+ w6 r7 ^, L' T
syslog_fix_perms: ~( j3 L1 ?4 n5 {# T! N
: l$ ^9 |7 V A8 L' R* f0 U7 G
cloud_init_modules:$ X0 D* v3 n- P% `% \, J$ z
- migrator1 @ W0 v# [+ {; ]6 d, b: e5 D
- bootcmd
" s6 X% r, ]3 X6 v. m - write-files( N; O5 _! r! K: D3 V1 D. {4 i2 O
- growpart5 H6 c' ^9 j$ @& W
- resizefs0 g0 f6 y& ]4 w! c
- set_hostname
) h g) e$ c ~. D- Y0 L8 n - update_hostname, y5 w! J: E1 c4 N) q9 b9 \
- update_etc_hosts' n0 I4 j! l$ ]
- rsyslog( z8 U5 ]" o1 \, k
- users-groups1 t) v8 X) u$ t5 H
- ssh
$ \6 w3 v9 @# p7 N! `' z# f& z3 D1 @# R( L, I1 \+ @: Q
cloud_config_modules:3 b" P4 x+ Q: x5 b
- mounts
" _# A( }; t9 z# c - locale" f" E( R3 }; r5 [( u
- set-passwords y% s! ]0 m/ l
- yum-add-repo* [ `4 h; D3 I4 L. } `# K
- package-update-upgrade-install
: \1 b8 D0 V) {) m* R - timezone
; r% ^$ t1 a* ~/ a9 j - puppet
) D$ D7 [' K% { B0 E - chef5 g6 d0 ]: n4 l# b0 M& ?# D# H! L
- salt-minion- x7 K' Z0 y/ y% b9 k' l
- mcollective6 y, l) M# H- G, Z, R7 ^# J- E$ t: k
- disable-ec2-metadata3 G1 i$ k0 [/ }' f% g
- runcmd/ o, u5 t: b) l* x
5 b6 n- R- Y( B4 S* Q; lcloud_final_modules:
) p( s* J$ G, O, {! Z - rightscale_userdata% o) I6 F6 U. J2 W4 e% {5 o
- scripts-per-once A% d0 K4 E3 N& O) g+ Y3 f4 ~; N+ h3 k
- scripts-per-boot+ i0 g. T8 g+ x
- scripts-per-instance' A/ v) L6 r4 I$ S( F* C
- scripts-user
! |% f" Z6 G; o9 E) V# H - ssh-authkey-fingerprints
4 G' c! I1 C" h - keys-to-console
9 g- e0 Z" F( h1 V+ a+ q2 N8 L* W - phone-home
2 E6 i- C7 Q) f4 o( @ - final-message: M N$ m6 i0 d6 G. q; f
& G) I X- `) Q& R
system_info:
) a7 ~7 p& r% J2 d1 N) | \$ A default_user:
% W6 Q& h4 G% o1 V name: root
& K- B5 U3 p" j% t5 D* g, F. ` lock_passwd: true
3 F) W4 x3 n. ] gecos: Cloud User
- I) M \8 V7 T+ r: t5 o groups: [wheel, adm, systemd-journal]
; g j/ |% [* g1 K2 @1 f" B sudo: ["ALL=(ALL) NOPASSWD:ALL"]& d( Y( c0 E) c; l* ~! S
shell: /bin/bash
; ^, b5 |% D- S( H; f' Y distro: rhel
+ H$ w" m, s: S: _2 ?$ N- ~ paths:1 a- I) w* A) l9 J! [* `' P
cloud_dir: /var/lib/cloud
( q- j" a5 b( Z0 k templates_dir: /etc/cloud/templates
9 E' A# v$ a* `; h i: c ssh_svcname: sshd& L! s; c9 R5 h! v
7 k. C# s+ Q$ _; E- C
# vim:syntax=yaml
* q0 d8 i! h2 r7 G
: z/ E/ l- P. X) U& @6 I( Z/ v, @( i1 j/ E: d- D
004_添加修改、重置密码的脚本(这些操作均由下面的脚本一键执行添加)/ i0 Z! G; a5 j7 c, l9 O
将下面的内容复制到一个文件,并赋予执行的权限即可 自动添加写好的服务脚本,并且自己添加为开机启动,还会把 /sbin 对应的文件加密 7 ~( G1 [/ T3 w6 d* p9 t& ^2 g
' Z5 b$ F1 e+ kvim meta_centos73.sh
. G( V) H ^! q4 K0 M#!/usr/bin/bash
3 K* r6 X5 C7 I6 i, Lcat > /etc/init.d/meta_data_service << END9 m7 ^1 o T7 z* U/ o
#!/usr/bin/bash/ M3 f$ W% X" g: E, ]& X: ^) u+ a
#- S3 H) r4 `0 r9 \
# meta_data_service Start up meta_data_service the server daemon0 `0 d# ^6 O$ X, C/ s
#
" y% g; M C: k9 y* P; S# g# chkconfig: 2345 98 98! d/ X. {4 p `' H1 v! s
# description: meta_data_service sspaas-cloud daemon, H V6 {6 U& J/ [; t
#6 B0 _& p- B+ h2 {6 e
BASE_DIR=/sbin
E' s1 [" u0 I' f& ^# Q$ R3 cARGV="\$@"
& b* b& z% x9 h- c5 p* Y8 ustart()
( e! b: q0 K8 L& J( d& `7 D: O6 a{
2 Q8 I+ {0 ?$ N% z8 d- pecho "START meta_data SERVERS"" A3 V8 v! W8 ]! R
\$BASE_DIR/meta_data > /dev/null 2>&1 &9 `$ R9 C* N7 {" O: q7 \# C
}
$ O1 M% w: Z; Y! \/ \stop()1 `8 ^2 t/ @' c
{
2 Y) o/ @0 P' `+ v#meta_data.pid* i$ R3 X N2 ]* g& _! s
echo "STOP meta_data SERVERS" c0 Q$ l( ?4 c; {, [
meta_datapid=\`ps -ef|grep meta_data|grep -v grep|awk '{ print\$2 }'\`2 y Q% ~8 t' X$ y5 z
for i in \$meta_datapid8 Q4 d7 V' [5 }+ c, C" A9 A) @2 v- Q/ P
do' T# {, c+ Y$ }7 H6 \7 Q( }
kill -9 \$meta_datapid
@3 R' b, H; k5 [( _1 ]6 sdone& n2 Q( b5 w+ I j
}5 W. h, g' h: T6 q
case \$ARGV in
! c1 x. z9 G! X: h# kstart)
' D% s: i9 U1 A6 g# sstart
& {, |: U2 v; j# W! V& g) vERROR=\$?
0 \; u9 g; x) u* w;; 3 Y- _1 _( I8 }
stop)) [- F, }9 p0 L* u, O9 _1 F
stop! i0 h" L2 w& `) U: G4 O
ERROR=\$?
# ]& O! i6 `0 m7 w;;
1 ]9 i- g% O! ?) ~9 a# [9 Irestart)1 X6 D: [/ u) Z
stop; [5 P G( U2 s' X, U
start) @& V Q/ a# a, S6 l( o" `
ERROR=\$?; w9 c' h4 N$ i/ Q7 \) |3 t
;;
% b/ [0 X$ `3 M5 ]* M2 V; D*)
' r$ G! |, z5 N$ M9 Mecho "meta_data [start|restart|stop]"2 |, c. S( f. Q' d7 @
esac
8 t4 p2 {1 h$ m% e, {7 c2 t' L, uexit \$ERROR5 O& ]/ ^- I" r$ Q
END K- S0 y- u5 B/ k9 c
2 T; W& T7 z8 k: I$ }cat > /etc/init.d/meta_network_service << END! ]3 T: g+ G9 P( g; a/ {; p
#!/usr/bin/bash
# q1 C7 E: m6 o. Y9 D( o. c/ e( Q#( l, F. |. B: A: l
# meta_network_service Start up meta_network_service the server daemon
& U' k% Q# | U#
& M; x3 l; t) P. B: h# chkconfig: 2345 99 99
: O) t: a" T R# description: meta_network_service sspaas-cloud daemon6 V3 R5 F+ _; T8 L' U% ?5 P- R
#! I( v* T) t/ T
BASE_DIR=/sbin& c* f4 F# G7 t( s# H$ k
ARGV="\$@"
8 Q7 g4 H) B# H0 M) C# _5 Sstart(), y% b' Z0 J4 v1 m, }
{
8 e+ E- ^( i% J( K. Qecho "START meta_data SERVERS"
: k5 k' [! M/ w# m8 y\$BASE_DIR/meta_network > /dev/null 2>&1 &
; v. B! X* D# l7 i* l2 U}
: g0 c& b- g' {# V+ Ustop()/ A1 L$ k) l0 K- r! t6 ]: V
{ 6 s: v4 I, S. F2 m+ t- ]
#meta_data.pid
; z3 j! g$ X2 U& Iecho "STOP meta_data SERVERS"; G7 u7 f. |6 o
meta_networkpid=\`ps -ef|grep meta_network|grep -v grep|awk '{ print\$2 }'\`! v0 p3 A: e7 B1 n w( [+ G4 S
for i in \$meta_networkpid8 d H9 n6 g% r* n
do
% M9 H- |) ~' c; l2 W" a kill -9 \$meta_networkpid
' F5 Z7 C! _9 X9 ~3 ^" udone7 r4 S9 ]0 |: V2 Q- E/ w! p: L
}2 B; Q8 x' q+ Z; l
case \$ARGV in
" o4 J9 d" J+ F: o [start)
" r" z4 i: T& Ostart/ P. `1 O2 h+ T. J2 M# S
ERROR=\$?
: R6 f, D9 t1 a# Q7 R' ?$ t;; + P/ j8 {0 E! d4 \
stop); X1 |7 s. W7 I/ D; \
stop
, \* F7 z3 C' t8 ]ERROR=\$?$ t+ \1 B7 M: p/ ]) k6 @- v
;;
3 V6 H4 C! U$ F/ Q5 Qrestart). b1 g8 W. w8 e3 T
stop _" U2 `5 o& w f/ V) k: A4 ]; ~
start. f1 c* W( |) t6 ?! t0 n
ERROR=\$?
! H2 ~# z) f( _8 {2 ];;
6 Y, p; S5 ^$ `6 L( ?7 E*)
; f2 E/ a! r& H8 J, `% Becho "meta_network [start|restart|stop]"7 u( e4 w7 t9 ]
esac
" [ w2 |; r2 G4 T& I7 {exit \$ERROR& }; A8 U# `; j0 j
END+ f+ K8 v9 s8 b& G9 d- i
4 L; T7 z. |& Ccat > /sbin/meta_data << END
+ }9 g( C9 G; n H" s; H% ^7 l& g#!/usr/bin/bash4 O3 E' L; h- Z3 ~. H7 J. v4 q
m=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta'\`, Q* K, t! k; F( C$ h7 n% L$ ^
status=\`echo \$m | jq '.changePasswd' | sed 's/"//g'\`2 |1 E$ |) s8 e: `, T9 I- x6 ~
password=\`echo \$m | jq '.admin_pass' | sed 's/"//g'\`
6 t2 }3 ~, N, ]( u if [ \$status == True ];then
! |, L* F3 n% ?# d( I) t8 w! n echo root:\$password | chpasswd" l# ~+ ~7 L. s7 T& I4 H
fi7 S% h- ~) ~, ?6 i1 f( W7 q1 K
; m" `! k2 a2 C; ?- K0 c
while true
- {* B8 W7 \: x; ^' e do. T) U- C+ W/ T9 n
m1=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta' | jq '.changePasswd' | sed 's/"//g'\`3 Q% u9 z5 j+ Q# W" `
sleep 3, e7 j. ~3 W/ L
m2=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta'\`+ c9 V9 v D" h3 u/ S6 Y$ |
changepw=\`echo \$m2 | jq '.changePasswd' | sed 's/"//g'\`
. T' `' p$ j" q+ m pass=\`echo \$m2 | jq '.admin_pass' | sed 's/"//g'\`! @# I& w" g9 R% T6 r
3 X# k3 }, s# B. g- q/ Z
if [ \$m1 == False ] && [ \$changepw == True ];then: m5 ~& w* l, u* K0 N
echo root:\$pass | chpasswd
; X5 r6 b+ B0 t0 v7 L3 O else
+ o8 M; m- D0 f) P. Y. E' J echo "noting to do" >/dev/null; c+ R r" d+ b
fi
' W4 k0 h/ d. l0 } done
7 `2 i6 L% y4 `% Y' H; A: W$ }- YEND
: v( \+ T5 W4 \ w; x- }% ]- \, I- D
cat > /sbin/meta_network << END* ]* v+ g# n9 B
#!/usr/bin/bash5 k( f- P+ k: }' h) W: N
while true
7 [0 s- v2 p, u9 ]1 o, J3 j do
; f( }' M+ M8 W- S1 s1 Q$ U9 j temp=\`ifconfig eth0 | grep broadcast | awk '{ print \$2 }' | awk -F "." 'BEGIN{ OFS="." }{ print \$1,\$2,\$3 }'\`* b$ E! |- @1 F- [3 x9 U
ip0=\`ip a | grep eth0: | wc -l\`: r; m3 ~" I+ a+ S# L# `3 k# G
ip1=\`ip a | grep eth1: | wc -l\`
2 q! L i6 ^* h* c route0=\`route -n | grep "^0.0.0.0" | grep \$temp.254 |wc -l\`
/ c, L4 c4 X! i, @2 {" V: U9 F
: A' t1 U+ @9 D$ h6 x5 ] if [ \$ip0 -eq 1 ] && [ \$ip1 -eq 1 ] && [ \$route0 -eq 1 ];then& }9 M+ ~, j$ Q8 f! k
route del default gw \$temp.254) e& j# ~6 r% @/ C4 V3 b
elif [ \$ip0 -eq 1 ] && [ \$ip1 -eq 0 ] && [ \$route0 -eq 0 ];then
7 d: J4 A! [& n0 w6 l5 b route add default gw \$temp.254 ?2 L0 v& ]9 D, b$ c6 u9 g
fi- e, p5 Y, N2 U3 r. K
sleep 3: D3 G0 h; `& h: s# ^: T
done" {6 C5 O$ |. t( P3 |% h& o
END
$ r2 @. X$ X) m9 @; O6 q
+ A* y5 e7 @" ?# _8 Echmod +x /sbin/meta_data
( P% \# h5 U- n" pchmod +x /sbin/meta_network5 L/ k* ^& E' S; T3 d, B" r2 v! l
chmod +x /etc/init.d/meta_data_service
/ ?$ G0 ^% f& U% M( cchmod +x /etc/init.d/meta_network_service
! k5 x- g4 N8 I#7 { z" P& s& V: F H; j3 Q0 n' ^- W$ @% _
gzexe /sbin/meta_data
8 M: u; ^! d) _+ g2 wrm -f /sbin/meta_data~
- @# |- `2 U, wgzexe /sbin/meta_network ! U; \# V) T' C! p
rm -f /sbin/meta_network~
1 i; E4 x/ M: S, J' D#! |1 C# c/ z9 s2 K ?
chkconfig --add meta_data_service
( C y/ [* n* j( H `8 Gchkconfig --add meta_network_service | [tr][/tr]
/ t* w5 `/ }0 \4 o+ V[tr][/tr] : \3 ^1 M4 r' c( L
1 s) ` T0 C$ w8 [$ k2 q+ w下面 005 的操作仅仅用作删除上面meta_centos73.sh 的执行结果
) _1 \& f- _- x$ S# `005_删除上面脚本添加的内容,可以执行下面的操作
! J' ?3 x" {: l0 L( Mchkconfig --del meta_data_service* E) V! B; B! y4 ~& G9 k! `1 O6 L
chkconfig --del meta_network_service- I/ Z3 J3 ~1 d8 W5 S& Y
rm -f /sbin/meta_data
% k4 A! J$ g4 O- M. |rm -f /sbin/meta_network
7 c# E, ^8 i. n: Crm -f /etc/init.d/meta_data_service
+ l: n7 T' N/ F( X# @. Zrm -f /etc/init.d/meta_network_service | [tr][/tr]
$ q+ {) j9 L! w9 z. _; Y[tr][/tr]
3 e( R5 s+ e2 H! v
) c( c4 I7 M0 y' t1 ]/ h006_删除之前添加的不必要的信息/ R8 t p3 o9 Z- J( N: S
rm -f anaconda-ks.cfg : a% f) a& M" B+ l1 i+ F7 U1 _
rm -f meta_centos73.sh | [tr][/tr]' b9 {. m2 A9 W( l
[tr][/tr] ' Q& Y& P& y% x
" M9 `% E% g( K* B8 x C; u* {007_关机即可
# _) x* ?' k! C! ^( ipoweroff
3 k: i: k" }) a( X& p) r& l! I& p
到这里 openstack 的centos7.3镜像就做完成啦
/ j4 u+ K% c: \* o8 o: \( s. ~下面的操作,主要是吧 大的镜像进行压缩,并进行上传,下面的操作均在做镜像的服务器(宿主机)上操作
; i7 _! r: G. {" e! H. X
" l7 x$ {" l F: t" Z三、技能扩展:* Y* B; g- K- B+ h& `$ u; a- A
3 e, [( z* n' J5 H001_显示kvm中所有虚拟机1 m' b2 x0 y$ i. ? Q
virsh list --all
' A( l R$ ~& P, L1 G4 ~ k+ T% J5 Q5 P% s9 o) Z
002_执行清理任务,如,之前的历史命令,mac地址,ip地址等 0 {* S+ X1 e4 t( `+ |) H
virt-sysprep -d CentOS7
V- ~- u+ s6 y4 E2 _& ?7 O8 X E e# p5 l) [" b
003_在kvm中删除虚拟机,仅仅删除xml文件,不会删除镜像文件# P+ {; \0 w( F
virsh undefine CentOS7
% T3 e: B- h/ o/ e! a
; Q4 w3 I2 H4 i% j004_将镜像压缩
+ W. P6 s* B3 k( A6 `! `qemu-img convert -c -O qcow2 压缩之前的路径+名字 压缩之后的路径+名字5 }5 U$ b0 ?, u- I5 r( a
1 c) j2 q3 Z1 l
|
|