|
|
楼主 |
发表于 2017-11-10 18:07:16
|
显示全部楼层
安装一些自己需要的工具
6 h# Q$ C* [8 d000_添加自己的内部源,没有的同学,跳过此步骤即可;; n1 u) q' q }, S, I
9 p" h7 n/ \6 t# ?6 s001_这里我只安装 cloud-init 、acpid 和 jq! l$ q) ]2 L! b$ ]+ r. F
acpid服务作用:重新引导或关闭实例
6 J! s, j; y( S( F' vjq 服务作用:处理json数据
- y K: d3 q$ S" xcloud-init服务作用: 配置使用metadata(我把官网的简绍截一下图)
. ~0 @% U- C2 C9 R, ?0 |. j+ W& H& [5 _% S$ _, e
; E- i4 w6 i b- ^+ ]5 M; k
! Z4 ^1 S7 ], e: \# \7 r- D& Q5 g: Y: {5 M0 E$ i4 C7 e
0 X" r8 K. T7 e! D6 S0 [
: n! t& T% V# o$ r v- L R% iyum -y install acpid cloud-init jq& V3 H0 ~ D, D v! j( |4 K7 w
1 o( R4 Y* q! ^$ q1 y$ fchkconfig acpid on$ B J0 W; u# `/ r. E
~3 I; k% Q1 v7 A2 W9 n
chkconfig cloud-init on5 p! E6 {" B/ \
) g$ L5 c( b+ o8 S7 d N4 Q: Secho "NOZEROCONF=yes" >> /etc/sysconfig/network | [tr][/tr]
7 j2 J& Y p: O" t% V7 g* s: w. u+ |[tr][/tr]
; M# y) I' Y# y' H$ V Q
3 S6 G. y5 W3 t+ a) D/ }002_修改内核参数,并更新内核配置
0 E+ M- J1 D; Q9 ksed -i '/GRUB_CMDLINE_LINUX/ i\GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"\' /etc/default/grub0 U& J" ?& [8 b) k- r
& J+ a2 q. W4 V: @grub2-mkconfig -o /boot/grub2/grub.cfg | [tr][/tr]
* `/ R* x, A/ N7 `, N: ~- U[tr][/tr]
4 |8 Z3 V# Q7 Y( u$ h8 ?" B
2 S/ x9 y) f0 F6 X2 ^9 T( }2 P- N003_修改cloud.cfg配置文件 这里,就直接把需要修改的地方用 红色字体标注出来啦,当然也会把 替换的命令贴出来
! H% q, ~/ q2 Esed -i 's/disable_root: 1/disable_root: 0/g' /etc/cloud/cloud.cfg
! I, N+ u4 H7 p, wsed -i 's/ssh_pwauth: 0/ssh_pwauth: 1/g' /etc/cloud/cloud.cfg
4 `2 l: r7 o4 Z1 g% hsed -i 's/name: centos/name: root/g' /etc/cloud/cloud.cfg | [tr][/tr]
7 T S: _& F7 {9 r+ M$ Q[tr][/tr]
F* q" ~( h0 R5 D1 f7 z; t! d& m+ _+ L9 Z& b
下面编辑 cloud.cfg 部分仅供参考
2 k/ Y6 M" \7 W1 I) r2 \+ g$ {vim /etc/cloud/cloud.cfg; q6 w( v- D3 J/ n1 @- |, R
users:
9 x' i9 g3 B9 C3 j y' @7 i, c - default
& A9 z1 v2 W$ ?. l3 N) x c2 K" i8 N* Q: G2 @: H
disable_root: 0
6 n' ]: ?) t9 O. ^ssh_pwauth: 14 B' b3 Z9 U4 g: K
6 {( [# ~5 q3 S) O. z8 L% Alocale_configfile: /etc/sysconfig/i18n% ^* X' d( x+ m2 S
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']. t7 u8 }0 V& K c' |: W% L
resize_rootfs_tmp: /dev: Z5 r! p- S! `# w+ K R1 f9 ~
ssh_deletekeys: 0; x1 u# x+ b9 M% c$ C- _' n
ssh_genkeytypes: ~# M: w5 j. Z- a/ O7 I; `8 ? S } [
syslog_fix_perms: ~
5 }. M y5 {2 ]' a o1 n
5 H f/ _& H/ P x; Y7 @cloud_init_modules:
2 ^* I, ?$ I/ [ - migrator- \- v& T J% `. ^) ?
- bootcmd
5 J1 U( J6 w; P! e r u - write-files6 e y! j g: O% g' u. u* d' b
- growpart5 n; U5 \9 r# E. L8 G
- resizefs
d; K5 `! ^3 L - set_hostname
8 x2 `' M; ^* v) ~; H( l - update_hostname
0 U e7 ~% h1 |' x - update_etc_hosts
* e* @6 B/ {9 b3 p- e w - rsyslog
; ^% b: t3 o7 q: ]6 t! e - users-groups
* P% J. d/ f$ s4 J* O5 R - ssh5 w7 a$ B, P0 k) W5 z6 \
1 h+ ~/ a" @1 ]* H- M+ v4 Tcloud_config_modules:
9 Z) s- l/ z! _ l6 B8 Q' K - mounts* R, k5 G" f# c$ B* O# H7 w( v
- locale" N; y" {% b( g6 s- l, Q
- set-passwords
4 T7 Q; L0 T$ J( p3 H - yum-add-repo- X$ J2 G; @; D( }4 q& h
- package-update-upgrade-install
$ F" ?" E" q: d1 X. E4 T9 C - timezone/ ^1 H: ]7 | O6 @5 ^
- puppet7 J$ ^" F& H1 \. W+ s- U8 g
- chef7 u4 ^/ H) f! o. B- B: ^% M H/ H
- salt-minion2 H! G5 Y3 Y# W
- mcollective
; h9 L9 D6 s9 a$ T) F* ] - disable-ec2-metadata6 P3 Q* T) X4 _( X$ O2 p
- runcmd
+ _5 a; G) e8 T$ P
* c, t! }% g% Q9 r/ ucloud_final_modules:4 a9 ~, N7 R2 F
- rightscale_userdata" ]6 r" |% C" p* z5 ~
- scripts-per-once
/ p( ~7 N" u4 N1 j; h6 T - scripts-per-boot# i8 W) ?! j, o* @
- scripts-per-instance
( S! D+ M! x& @3 @1 ~ - scripts-user }. R- Y ?8 K: \4 }
- ssh-authkey-fingerprints" t- h+ w9 _* k' a
- keys-to-console9 e( w* }4 P& m0 S) h; E% ~0 ~% t
- phone-home
& y& z/ J" ]) d$ B- Y - final-message( _1 Q# q- f. F7 U: D
/ z, z% |; z# w- ^system_info:7 i1 N: X1 k* x
default_user:1 ^ E2 ^3 s5 ^: m/ c* V0 _. J6 j
name: root4 y( B- j( e) w0 C% g9 C+ Y# z
lock_passwd: true
0 U& G) D$ A( n gecos: Cloud User
3 y6 |- E! |, n8 ? groups: [wheel, adm, systemd-journal]2 o$ D) M, C% {; j: \* }
sudo: ["ALL=(ALL) NOPASSWD:ALL"]% Q1 {) U4 X2 y5 T& ^
shell: /bin/bash
* [' z' t. {! e2 g' ~ distro: rhel
0 S, O9 d1 q7 v; H8 J* H, f paths:
# k* K8 d0 w2 V7 F+ _! ~) P2 V cloud_dir: /var/lib/cloud& o1 n; Y3 y5 K- H# H* r
templates_dir: /etc/cloud/templates& m" I; R. S; \4 q6 w
ssh_svcname: sshd o, K& W1 ?- o- q- q7 o Z
! b( k; l3 E6 ?1 j; b# vim:syntax=yaml$ [; \' M3 E, |# q1 ]2 h
h3 V! c/ O2 k* k
! M* }! _) D& v) s4 o2 ?004_添加修改、重置密码的脚本(这些操作均由下面的脚本一键执行添加)
8 R2 I' x* d' }) Q将下面的内容复制到一个文件,并赋予执行的权限即可 自动添加写好的服务脚本,并且自己添加为开机启动,还会把 /sbin 对应的文件加密 & l( O# a2 F% Q a
+ _5 ~: Y. S/ g9 U9 a
vim meta_centos73.sh2 @# t( w) i; r( r' [% p
#!/usr/bin/bash4 ~) Q: |6 T; v% _& `& z
cat > /etc/init.d/meta_data_service << END0 a# S9 y: M3 g' L5 s4 T x5 H
#!/usr/bin/bash
4 c1 j9 u5 {( {0 k$ P#; _" k' }9 w7 |% D( Q, e$ @
# meta_data_service Start up meta_data_service the server daemon" J! g. d# a' W9 [
#8 i% f; A* u6 y- A" D9 i/ @# x. K
# chkconfig: 2345 98 981 Q) d/ z& _, Q7 `( ^0 N
# description: meta_data_service sspaas-cloud daemon M* O( H7 B. l& \% @) z# \
#
$ T; f- X1 ?# a& L7 ?BASE_DIR=/sbin
% {4 k7 r& G, T7 LARGV="\$@"! t4 I9 D v8 F5 Z" u9 w1 A+ v
start()- e1 t$ I7 l, a% Z
{& u5 V; t& l; O' W
echo "START meta_data SERVERS"- M0 V9 h* s$ Q7 m; {) r
\$BASE_DIR/meta_data > /dev/null 2>&1 && I* {& s" L+ b2 _# ^
}
8 |( y0 i9 c; ^& I% u/ W6 qstop()! ?* x" ~' L0 |
{
$ J# e8 s* z9 B4 p7 a#meta_data.pid: P' y A4 Q' f, K& r
echo "STOP meta_data SERVERS"* ?; o Q+ B" ?( b( z, d, f6 H
meta_datapid=\`ps -ef|grep meta_data|grep -v grep|awk '{ print\$2 }'\`0 j0 p: U& V' u
for i in \$meta_datapid
$ }# m, f0 O6 {+ g3 V$ fdo; i; @( j: o. Z$ ~/ j
kill -9 \$meta_datapid) o3 t `1 [( P
done5 ?7 y: i) O: z% i/ O
}3 A" ]3 R4 Q0 E8 u6 f' @
case \$ARGV in' P+ I$ ~2 k5 r
start)( R% b& k: x) X, l9 N
start
+ u0 _& [; m% p1 P8 B/ w$ {( oERROR=\$?; z( Y% }; o& X+ ]
;;
' c' m# t, }, C7 O8 Bstop)
- e+ h5 o1 o; ~8 u# {0 | u* Bstop
0 o- q* f& \5 J6 O! D' lERROR=\$?
- P. t6 N- P* @4 Z% F$ B" W# k7 J- P;; 7 \! g/ E: \ _& m% T( U7 M
restart)* ~; @. Z( p6 u% `% m( F4 \
stop* v: V: l7 r' \7 a9 w! L( g/ t9 b
start5 j$ ?- [2 @2 f0 j
ERROR=\$?
/ [: I0 \; m# J, w5 y2 l6 Z;; 8 Y! u* y# X0 ?
*)
! [* D; ~" r7 O) mecho "meta_data [start|restart|stop]"9 w! M" u: Y$ S3 p* p
esac* n e- x; ]3 r3 Y
exit \$ERROR& ^$ _: K: s$ [. n# }- R
END" r8 j4 _( Z$ A* j" q+ {6 \
^) Y3 O5 y( i5 H
cat > /etc/init.d/meta_network_service << END
9 c! L. c- ~+ F" b$ ^; [#!/usr/bin/bash% \) ]! V% ^9 x* }3 ?% a. o
#8 B+ g/ Z! l1 m2 \( w$ l& t. Z
# meta_network_service Start up meta_network_service the server daemon
$ y7 K" V. b$ V' ?# @#5 n, J: a) ?- w: Y: _, B9 p
# chkconfig: 2345 99 99
; |" v- M5 g, M" x. T: m. c# description: meta_network_service sspaas-cloud daemon) W! E8 \9 d3 K, K& N8 Z% F$ K
#
) w+ Y& O% E( O2 c! `/ |& o5 LBASE_DIR=/sbin
2 ~. h" W! U9 F9 B0 Q6 w& l" AARGV="\$@"
7 \, c" Q/ a5 m' _; O# _start()* d1 B8 B6 i4 b5 R
{
( \* p1 l$ l: v; f* X9 eecho "START meta_data SERVERS"
( v9 [- n9 M% C. O' g\$BASE_DIR/meta_network > /dev/null 2>&1 &
! l; a5 g p @- E Q- B2 E}" c2 l2 |; B- U6 \/ k
stop()
8 R0 ?* S' ?1 A: W' p8 s{ - \% _+ G% y7 E' j' }3 e3 x; b7 ?
#meta_data.pid
' t6 L. {8 h3 e: C1 ~echo "STOP meta_data SERVERS"
) r9 J* t4 I, Q9 \6 ^/ ameta_networkpid=\`ps -ef|grep meta_network|grep -v grep|awk '{ print\$2 }'\`
) r9 r, |/ _/ w7 A2 h, D' cfor i in \$meta_networkpid* d3 z1 K. z6 `( G7 E5 A4 `
do
; {$ K! ]0 y1 |" ^) v, e+ } kill -9 \$meta_networkpid
% n% g4 H+ {" _done
: o: ~7 S- @7 h}
$ J! B x! }6 V3 M) Ccase \$ARGV in/ W, a! M* I# Z8 c5 {8 [- r
start)& |: a% T, Z. [* W2 @0 ] y
start! E! q7 ]- l* y) I) c/ m
ERROR=\$?
N) r$ d4 J! f* k$ `0 A6 E;; ! g! t& B; f& Q6 r
stop)
4 R* e- N' A `8 ?% A; G& [' Qstop7 a# g! R8 [7 V% t8 z
ERROR=\$?
( N% Y* d' {$ n' @/ Q/ C4 Z1 v! c;;
$ f- p, D" i% f, _# `( _9 lrestart)
# I6 y C, t7 ~) {2 L% Zstop9 y6 [# S( @2 C
start
' v: D0 {* Q# \+ eERROR=\$?' M# v+ L4 L7 I' r
;; 4 u: N% i* r3 m* x9 M! V5 ^0 q
*)
e7 Z3 j7 f( |. z6 l4 X* decho "meta_network [start|restart|stop]"# o' D, e1 S( I) S* t; @
esac
5 l" v, N( W) i! y* R% Zexit \$ERROR- F2 I) Q/ U* w/ v0 b$ [
END
* ~: k) u4 T! T( x* U8 D& x! c' g
9 T8 f4 k7 D% P/ ?% y% icat > /sbin/meta_data << END
( W/ m* G9 ?' G: W3 J0 L3 e#!/usr/bin/bash4 V* m9 x' g: [2 N
m=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta'\`' ^# b- @8 Y- c" k' b7 y+ X& t3 K
status=\`echo \$m | jq '.changePasswd' | sed 's/"//g'\`0 y: q4 ?( M$ r5 U
password=\`echo \$m | jq '.admin_pass' | sed 's/"//g'\`1 ]% M8 B9 T+ A7 e# u
if [ \$status == True ];then
. M9 q% I) b/ L1 m' y+ \ echo root:\$password | chpasswd
/ ?/ D, c- m4 i: T) T6 h fi+ V& f* O4 b* m* \
& f) y5 P% v6 Hwhile true* g& n1 G ` `/ s" u$ S
do
) \3 H( h/ J9 b$ _& W! ~% C m1=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta' | jq '.changePasswd' | sed 's/"//g'\`. m- ^; l# O: h( f9 R# \8 y' [! J& W
sleep 3
, _! i5 N) k4 K) H# E m2=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta'\`& t' a- Q4 ^$ }5 Z2 D
changepw=\`echo \$m2 | jq '.changePasswd' | sed 's/"//g'\`
% N& Q/ @; L- ] pass=\`echo \$m2 | jq '.admin_pass' | sed 's/"//g'\`
4 s% W, Q9 j d4 c2 `
& J" E+ p, [4 H3 _$ M2 Y2 ^' j if [ \$m1 == False ] && [ \$changepw == True ];then
! o# V/ g2 e' r7 R1 Y echo root:\$pass | chpasswd& {2 n- ~% L$ ?& C! b2 S5 D9 A4 q
else( Q5 [( J- Z# {7 X( c. `2 C
echo "noting to do" >/dev/null
# V: X" d+ o# A4 F: m7 |7 O fi
! {4 V& b9 @& ~" ?7 C done6 f0 O5 ^: f# k% Z2 m# k) ^
END% {: _. z T/ J9 y
) ^4 N. u1 X2 A2 y( {- G% S
cat > /sbin/meta_network << END
& j: l: z7 b1 q5 X- Q+ b#!/usr/bin/bash k3 d8 Y* T0 @# Q
while true
1 w: `" [5 }" `9 u* H' t' w do
3 H7 X F) W+ ^; \! ]2 O) [ temp=\`ifconfig eth0 | grep broadcast | awk '{ print \$2 }' | awk -F "." 'BEGIN{ OFS="." }{ print \$1,\$2,\$3 }'\`& F, W8 d! w' {/ ?: X- @" w
ip0=\`ip a | grep eth0: | wc -l\`+ D( u" b& T* _5 l( u& w
ip1=\`ip a | grep eth1: | wc -l\`0 J/ I" Y' z+ N1 g2 O
route0=\`route -n | grep "^0.0.0.0" | grep \$temp.254 |wc -l\`9 h5 o% ]# T/ D0 w- B
7 u0 E' m" q* z; v3 `
if [ \$ip0 -eq 1 ] && [ \$ip1 -eq 1 ] && [ \$route0 -eq 1 ];then
" Q; r; U3 [. V' b( M route del default gw \$temp.2540 J0 ?4 \: k A3 u! e
elif [ \$ip0 -eq 1 ] && [ \$ip1 -eq 0 ] && [ \$route0 -eq 0 ];then$ a4 Y& C% N$ T. C0 ~! _& e7 W2 b' k
route add default gw \$temp.254
& K" }: `+ G6 \0 J( s5 V- c. D; C fi
# G3 I2 M" S! A$ |5 N2 _2 F. z sleep 3
( m6 m& Z9 f8 C% t1 V7 M- `7 @# u done& {3 K& t* X, D" N) I$ P
END
$ E& C* S6 S/ m: F P: W
+ ?( D, Q' m0 L# \( [/ Rchmod +x /sbin/meta_data
5 r' K& j% t1 {7 m' m& Gchmod +x /sbin/meta_network
8 |; E1 b5 T) Q( `. Cchmod +x /etc/init.d/meta_data_service
0 M! L7 L1 U5 k: U" [chmod +x /etc/init.d/meta_network_service
" v9 d% X" v$ s" f#
/ N3 R2 Z6 m" R- ]1 ]) K- Wgzexe /sbin/meta_data
3 i0 B( _0 j2 g3 i' C! O+ nrm -f /sbin/meta_data~
, p/ j9 A0 \) K% x+ }, M7 Ygzexe /sbin/meta_network g9 X X/ m; S( K
rm -f /sbin/meta_network~ $ r- C/ B( c/ ~
#
* l2 i. o$ J% c5 z0 Uchkconfig --add meta_data_service
" n9 o5 s6 P! }! e# j" Bchkconfig --add meta_network_service | [tr][/tr]$ e9 d8 I: m8 }; C5 r
[tr][/tr] 3 L) x, f" A7 x; Z3 G$ l' Q/ M
0 H5 _/ w( p( P2 o( ^$ V下面 005 的操作仅仅用作删除上面meta_centos73.sh 的执行结果$ X: N8 B- B v: H. b# Y, R) T: E
005_删除上面脚本添加的内容,可以执行下面的操作
4 d6 E6 N; w+ ^8 V0 Qchkconfig --del meta_data_service9 y2 ~2 G" w, j: U7 J
chkconfig --del meta_network_service
" E( [/ n! U: P- j5 _# {9 Srm -f /sbin/meta_data! E5 H. H/ a% X% [) J# T; L
rm -f /sbin/meta_network! ]) n4 ~: q4 |
rm -f /etc/init.d/meta_data_service ' c7 P; r" D% c
rm -f /etc/init.d/meta_network_service | [tr][/tr]+ T2 o! ?2 K' v- q) K& {: N& H
[tr][/tr]
% _7 v1 n2 w& s) @
* S3 Y: V, K; b1 L: x0 F% P006_删除之前添加的不必要的信息
9 r/ K* s9 u @9 Y2 Qrm -f anaconda-ks.cfg
+ d; @# [0 {: b$ Erm -f meta_centos73.sh | [tr][/tr]# V0 F. ^, K9 @3 L* k
[tr][/tr] 8 i/ x7 p }& O1 {5 P' Z
2 g, ~# c8 L. A007_关机即可
$ h+ I4 W0 d; A: F c$ d: Q+ Lpoweroff5 v V$ D" s/ M' M# Y$ t4 f* |
: S% j9 Q, `; t/ C( j& r& d: ~" r
到这里 openstack 的centos7.3镜像就做完成啦, {3 {- ]! Z$ x; b$ X
下面的操作,主要是吧 大的镜像进行压缩,并进行上传,下面的操作均在做镜像的服务器(宿主机)上操作
A8 J8 U) Z6 H4 b) ~& y$ c" r! W1 O- c7 F
三、技能扩展:- h l/ v4 y5 S9 O/ d& ^( @
2 W& E/ i% \1 [4 j2 }) ^1 O# y
001_显示kvm中所有虚拟机
0 \' R! K1 i% M! L8 [virsh list --all6 e9 G! h2 z! p1 ]2 H
$ R/ {9 L" v" b- F; Z002_执行清理任务,如,之前的历史命令,mac地址,ip地址等 7 A( p+ j9 t2 X; A1 i7 d6 b
virt-sysprep -d CentOS7
2 x! {: }8 K& {# y0 {! R7 e0 r; z$ e; I- V* a
003_在kvm中删除虚拟机,仅仅删除xml文件,不会删除镜像文件3 i+ Y3 C% @, ]2 |4 x
virsh undefine CentOS70 C2 o8 j, M( x# e0 @
9 o! `9 k$ O* B0 f: z004_将镜像压缩
3 S5 w0 `2 X# oqemu-img convert -c -O qcow2 压缩之前的路径+名字 压缩之后的路径+名字
, q2 m* T) g8 k9 n! F5 }9 A
, U$ s) p2 Z, Q8 d |
|