|
|
配置Cloud-Init工具/ v7 H2 d. c; L
用户可以根据需要根据用户类型配置登录云服务器的用户权限。使用root帐户登录,需要开启root用户的ssh权限,并开启密码远程登录。9 L7 K6 ]. y5 f% Y" X; y
若用户选择注入密码,则通过自己注入的密码进行远程SSH或noVNC登录。
% n1 {# w1 h( _5 e$ Y若用户选择注入密钥,则通过自己注入的密钥进行远程SSH登录。$ S5 O" s* u9 F2 f9 B# V g @
执行以下命令,在vi编辑器中打开“/etc/cloud/cloud.cfg”。) J7 t" @& S7 Q6 _7 A
vi /etc/cloud/cloud.cfg2 L3 g/ o$ a5 m
(可选)在“/etc/cloud/cloud.cfg”中配置“apply_network_config”为“false”。
6 t! N" c" D% s对于使用Cloud-Init 18.3及以上版本的用户,需执行本操作。
3 U& T+ S- d2 v. H* R! H( q' d图1 配置示例
1 j. W- u/ s9 ~" Z点击放大
+ r+ z, v+ @3 R d& X! ?$ @% \设置开放root密码远程登录并开启root用户的ssh权限。以CentOS 6.7系列操作系统为例,配置文件中的“disable_root”字段为“1”表示为禁用,为“0”表示不禁用(部分OS的Cloud-Init配置使用“true”表示禁用,“false”表示不禁用)。设置“disable_root”值为“0”,“ssh_pwauth”为“1”,“lock_passwd”设置为“false”,“false”表示不锁住用户密码。
9 H+ k" S' a0 g2 u: c- A* fusers:+ k3 |7 e/ F, A! u3 @
- name: root+ [; f* O g Z0 R f5 ^
lock_passwd: False
4 [. L$ Y5 P7 ldisable_root: 08 W( y& {! F: ], b; v
ssh_pwauth: 1$ w$ y9 G# V$ Z6 Z5 S' D, @
开启机器名更新机制,请勿注释或删除“ - update_hostname”语句。
- ~; k! r% y0 [cloud_init_modules:
, x) n! A( C1 g) l - migrator
- ]1 t M) T$ A7 m I5 q - bootcmd
. t3 x5 y$ C3 M; B V. L, K }# d4 L - write-files
) J- |1 S5 o3 m, W( C - growpart: c* Q, \1 t0 W) ?( x- V4 v+ d
- resizefs* N! \& \1 x) M
- set_hostname! P7 m! a* g" A4 U: z# A2 A
- update_hostname0 m7 P$ J1 i2 |
- update_etc_hosts1 Q% e" G. a0 X5 [" r$ m4 P) o+ t
- rsyslog
' H1 C1 L3 X; S' G( N - users-groups: m/ E2 F% b, w
- ssh
0 {7 l3 H6 T+ y# x) G! B执行以下命令,在vi编辑器中打开“/etc/ssh/sshd_config”。
3 i1 `- u' [8 O3 v j2 \" @6 Ovi /etc/ssh/sshd_config
/ ]' J2 V6 {$ V& b7 Q- G. ?将“sshd_config”中的“PasswordAuthentication”的值修改为“yes”。
/ U# {4 Z+ g/ O! T0 U6 Q- o说明:8 e8 p% ?, ?, y; O7 [% N
如果是SUSE和openSUSE操作系统,需要同时配置“sshd_config”文件中的以下两个参数为“yes”。: s+ q6 J3 J5 J6 l1 ?
PasswordAuthentication H* P% e6 ]! j ?$ S# D
ChallengeResponseAuthentication, C5 d2 `4 o# A) K
确保删除镜像模板中已经存在的linux帐户和“/home/linux”目录。
0 S+ Q R! y1 h$ h/ huserdel linux
( N* K4 a- ?: D8 Irm -fr /home/linux# I8 t9 h- }5 i. d+ }0 K
配置agent访问OpenStack数据源。
1 s% Y/ s9 p6 o/ u/ b- a; D% I在“/etc/cloud/cloud.cfg”最后一行添加如下内容,配置agent访问OpenStack数据源。6 z5 d3 x; @1 m* q8 ~2 ?
datasource_list: [ OpenStack ]* v& }' |8 \7 ^: p+ _; A7 E
datasource:
0 w2 l! d" m: }3 S, Y+ }- w OpenStack:
. h! M. Y6 [: r" n$ j, P/ O metadata_urls: ['http://169.254.169.254']
& m) v, V3 ]* q- g, A max_wait: 120
2 K$ |! p: @0 `$ n timeout: 5
, A& [( {& G' u3 k* Q. |! ^说明:, P/ Q, i* m# `, m
max_wait和timeout可由用户自定义是否需要配置,上述回显信息中max_wait和timeout的取值仅供参考。; ~/ c9 @9 ] R3 o6 D
当操作系统版本低于Debian8、CentOS 5时,不支持配置agent访问OpenStack数据源。- V& R3 v' ` d& n0 l5 f
CentOS、EulerOS操作系统云服务器必须要禁用默认的zeroconf路由,以便精确访问OpenStack数据源。
, a. B: r' ~( a) {2 Xecho "NOZEROCONF=yes" >> /etc/sysconfig/network* q: b# z! K6 P1 y" b# S' ?2 Y
% I* i: U% K7 S- R4 R
1 A" B9 p+ W6 v; j在配置文件“/etc/cloud/cloud.cfg”中禁用Cloud-Init接管网络。
% h' H6 v. M0 O5 R当Cloud-Init版本等于或高于0.7.9版本时,在配置文件“/etc/cloud/cloud.cfg”中增加如下内容,禁用Cloud-Init接管网络。& [6 t9 r4 y) n9 J0 B
network:+ l- H+ e( B0 z1 _) T8 `
config: disabled/ O& t" e0 p( m9 U2 C
" t/ d" J& ?1 A
% j9 S% V2 H( e3 }
说明:
) o/ F6 }8 l8 M& ?* _增加的内容需严格按照yaml格式进行配置。
4 r v( u2 g" y
5 N6 _" @7 T- U0 u/ T; G; D h4 x6 q/ T' ^3 y+ r, X0 }- s
图2 禁用Cloud-Init接管网络
% N) l& ]# [' H; Y8 y( }在配置文件“/etc/cloud/cloud.cfg”中补充如下内容。
/ P$ k9 o B4 J5 U: E; W; {9 c3 qmanage_etc_hosts: localhost
4 z" |! R! D# H c* i1 m+ P. i+ |2 x7 Z
防止启动云服务器时,系统长时间卡在“Waiting for cloudResetPwdAgent”状态。
: Q# b0 f5 w9 @, N$ I图3 新增manage_etc_hosts: localhost8 J8 n9 }5 C# V- U" X
点击放大, E- ?- l1 G: ~/ d8 w; ^
) f2 I# } `- D5 f9 L" G6 q- j) v# t
修改配置文件“cloud_init_modules”。2 N- S$ i* F0 [" I8 V7 S: N. r
在“cloud_init_modules”中将ssh从最后提前到第一位处理,提高云服务器ssh登录速度。
7 b- X' E; u2 A% Z# B4 x5 M' S图4 提高云服务器ssh登录速度
7 L7 j6 R; T$ M# P8 R3 I5 V4 o$ L; l4 S K6 u. U# W, {/ F
_% H+ ]; @6 @8 t0 k! @) n修改以下配置使得镜像创建的云服务器主机名不带“.novalocal”后缀且主机名称中可以带点号。) _7 V: m, Y% ]6 J7 l( i
执行如下命令,修改“__init__.py”文件。
n" ^5 j6 a1 H. F. m" \' xvi /usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py
. c/ ]- g7 |: n9 _; i按“i”进入编辑模式,根据关键字toks查询,修改内容如下回显信息所示。3 P L" |& a$ X3 v" @
if toks:
; j7 H$ k& _9 D( ~% E1 E0 T toks = str(toks).split('.')
: ?; J- `* [& F* ^% k( Qelse:/ X+ H! @, p/ K2 p7 ?/ {: o2 Q
toks = ["ip-%s" % lhost.replace(".", "-")]' U1 b. _- V8 \8 L% X
else:$ V! ~, ?7 o- @' I5 m; R
toks = lhost.split(".novalocal")1 K* ?3 b6 H' g& Y$ S4 V' T6 S
if len(toks) > 1:3 A/ U/ Z$ @2 [( |: a& s" B
hostname = toks[0]- w$ d4 h: \+ f4 o1 u
#domain = '.'.join(toks[1:])
) K- ~* \- J! {8 Velse:
, M* A0 [1 \- A+ h: \ hostname = toks[0] b2 a0 q, Y# v1 p e- E
if fqdn and domain != defdomain:. V* M/ f) F! X) h0 R2 u; H& T
return "%s.%s" % (hostname, domain)
6 Z5 S8 N- m* x+ X2 [. z q- K0 r8 melse:! G# A: Y1 Q( X
return hostname
0 _& l, g0 B+ \8 G/ D1 p修改完成后按“ESC”退出编辑模式,输入:wq!保存并退出。& T' _) h/ I" @9 S
/ n; i4 C: q0 s3 D
% W6 B- v: c% d/ ^
图5 修改__init__.py文件7 f# b: K& N [$ _4 u
点击放大
0 o: s0 F6 A, f+ `# {8 F执行如下命令进入“cloudinit/sources”文件夹。3 O) ^8 N+ E% g( B! }
cd /usr/lib/python2.7/site-packages/cloudinit/sources/: h" [( h) N- |) V- k: I
执行如下命令,删除“__init__.pyc”文件和优化编译后的“__init__.pyo”文件。
/ R, a6 j0 I% L9 g$ ?& Xrm -rf __init__.pyc- c- y; x9 F6 }: z! x( s, ]( q
rm -rf __init__.pyo C# f, b. I* X5 |3 C5 ?# e: T
执行如下命令,清理日志信息。 @0 n. K! h- Q3 I6 t
rm -rf /var/lib/cloud/*
4 Q4 }$ O" @$ u8 ~0 M& Xrm -rf /var/log/cloud-init*' x4 Y# [! K: f: S; @) H+ p+ _% [
执行以下命令编辑Cloud-Init日志输出路径配置文件,设置日志处理方式handlers,建议配置为cloudLogHandler。% w0 P, v3 o2 _$ o) T) n7 m% N" V
vim /etc/cloud/cloud.cfg.d/05_logging.cfg
2 g9 a+ g. J6 G. G/ s图6 配置为cloudLogHandler7 t. Q/ q4 _' T8 r9 x. a& S2 ?$ g5 U
# v+ X; x9 i* }7 T! D
4 X/ L( ~/ b" k* L/ |检查Cloud-Init工具相关配置是否成功
- z' W: N- I" d; v$ t+ L6 r执行以下命令,无错误发生,说明Cloud-Init配置成功。
7 d; G5 B: C i7 E/ I8 Xcloud-init init --local: Z" j& q# b8 _1 Q( S& s
正确安装的Cloud-Init会显示Cloud-Init的版本详细信息,并且无任何错误信息。例如,正确安装的情况下,不含有缺少文件的提示信息。
6 I0 k. V2 J( B说明:2 Z: R" f- F6 ^& ^! E3 o
执行如下命令,可将系统用户密码有效期设置为最大。此操作可选。
+ ^6 u% K4 y7 Q. v/ Tchage -M 99999 $user_name" F7 T- _5 w6 S6 |2 K+ d5 V
其中,user_name为系统用户,例如root帐户。
9 T+ u1 v' v# Y# @, S$ M, I密码有效期建议设置为99999。# x- i, {) [% P* s( z
|
|