|
|
配置Cloud-Init工具
, ^! K- g# _" k4 L! S1 M用户可以根据需要根据用户类型配置登录云服务器的用户权限。使用root帐户登录,需要开启root用户的ssh权限,并开启密码远程登录。% m X$ q) k5 [; C: s8 g
若用户选择注入密码,则通过自己注入的密码进行远程SSH或noVNC登录。
5 ]3 e, Z5 y4 L! y( e) t若用户选择注入密钥,则通过自己注入的密钥进行远程SSH登录。
- {; p) z/ C0 _2 d) t8 M执行以下命令,在vi编辑器中打开“/etc/cloud/cloud.cfg”。1 t& F7 G. `0 }+ _) h0 t$ O9 |
vi /etc/cloud/cloud.cfg- ]$ |4 x8 ]6 z1 D; G
(可选)在“/etc/cloud/cloud.cfg”中配置“apply_network_config”为“false”。
' E1 |6 s; @- [; }" k6 _对于使用Cloud-Init 18.3及以上版本的用户,需执行本操作。! @: |7 U4 I, N- \1 K
图1 配置示例; X1 N# [. t7 w
点击放大. S7 S# p2 T! E% [
设置开放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”表示不锁住用户密码。
- d' p+ T& I' K. ^4 L( R' H2 Husers:+ v0 X- z" j2 D% V1 t% ]
- name: root) C' w- O/ |0 [* e: [
lock_passwd: False
& z/ L1 h& z/ A8 X* Kdisable_root: 0
( s* j/ h! {7 n) w3 [" q% ~) ossh_pwauth: 1
" w1 ]2 e9 Z# r. ?, L开启机器名更新机制,请勿注释或删除“ - update_hostname”语句。
! J3 z% M9 c! g. B4 `, ncloud_init_modules:
N& b: U# h/ I% ~- \ - migrator
7 m: j+ L& R% P" r& Q- C; |( ~ - bootcmd" F: k0 a$ W0 b
- write-files
. j9 ~! ^: S: }! [& C7 n - growpart
\. s& x$ x5 R4 a- {, F - resizefs8 t. S A4 E2 ~- K2 C
- set_hostname, O l7 `9 w; `5 B( ~
- update_hostname, {% c6 Z7 I9 V* O) E0 |
- update_etc_hosts% E- B! p) ]) M1 Q" w3 I3 ]
- rsyslog
! x8 P5 i+ M1 A7 l9 ` - users-groups3 P: a; N6 s9 I# z/ s# J2 u
- ssh" H0 Z- g* Y" f; v' ^, L: q, l& |
执行以下命令,在vi编辑器中打开“/etc/ssh/sshd_config”。
: s- \7 e3 ^6 s' q7 b, p, w: |vi /etc/ssh/sshd_config
+ U, K* a. ?' z+ i将“sshd_config”中的“PasswordAuthentication”的值修改为“yes”。
' l: i$ p8 T+ }! R说明:
5 |7 ~. o; x/ w: ]/ @如果是SUSE和openSUSE操作系统,需要同时配置“sshd_config”文件中的以下两个参数为“yes”。
+ K: U8 h4 w) Q; m( [1 DPasswordAuthentication& f- H2 v( D# }9 A' \
ChallengeResponseAuthentication, C$ o1 L0 t5 D! |3 G% g
确保删除镜像模板中已经存在的linux帐户和“/home/linux”目录。3 ]) ^& w9 t3 B: `9 W; s$ @- X
userdel linux
6 F4 V: v$ C9 R2 brm -fr /home/linux" G* W4 C* R# D8 I
配置agent访问OpenStack数据源。
8 p1 M; `' Q! u在“/etc/cloud/cloud.cfg”最后一行添加如下内容,配置agent访问OpenStack数据源。
& [: I& }+ B O& Fdatasource_list: [ OpenStack ]* V( U- t: @/ e: g6 P
datasource:# v7 D: `- z+ O, C+ ]
OpenStack:4 @1 H( F, S' T6 ^
metadata_urls: ['http://169.254.169.254']
& z' W+ w( r1 ~2 N, z+ D* L max_wait: 1201 U! A/ O/ r. y
timeout: 57 N( `; c* Q0 h- b0 C U
说明:: Z% V# h. e% ~; j0 |& f
max_wait和timeout可由用户自定义是否需要配置,上述回显信息中max_wait和timeout的取值仅供参考。 l6 h$ U/ V6 Q2 W' Y6 `3 n
当操作系统版本低于Debian8、CentOS 5时,不支持配置agent访问OpenStack数据源。
' O1 O: G: X( W* q0 g u' h8 gCentOS、EulerOS操作系统云服务器必须要禁用默认的zeroconf路由,以便精确访问OpenStack数据源。! X! r& d% k! U+ n0 b* r0 F0 W
echo "NOZEROCONF=yes" >> /etc/sysconfig/network% `- u# h d/ A
7 F0 E$ ]0 H( j4 q, r3 h1 S
( G) S% C/ O# m% ^2 G2 @9 U在配置文件“/etc/cloud/cloud.cfg”中禁用Cloud-Init接管网络。
9 _' J1 D- J1 J+ q3 p3 T当Cloud-Init版本等于或高于0.7.9版本时,在配置文件“/etc/cloud/cloud.cfg”中增加如下内容,禁用Cloud-Init接管网络。
& s' q+ Y, F3 s, dnetwork:" c, u2 g1 q' h- o* r
config: disabled
( s/ B( Y9 m8 _8 G- G$ Y2 v
7 _% H; e( [+ `% P
5 t+ Z( t- Q6 D- w. U说明:2 e+ [ Q$ m! Q8 M( ^! l. G4 k
增加的内容需严格按照yaml格式进行配置。
$ |% _' D; u8 |% \7 o* ]+ g# E/ [% k; B5 v" d3 s
5 | {8 i4 \( Q) Z. M
图2 禁用Cloud-Init接管网络
5 h! G. h/ N* G& ^+ Y在配置文件“/etc/cloud/cloud.cfg”中补充如下内容。/ S) Q1 V) S& b& x0 ]
manage_etc_hosts: localhost [; [$ H5 Q& y% s" T
5 L2 u! N3 R/ V3 P% O3 X& c防止启动云服务器时,系统长时间卡在“Waiting for cloudResetPwdAgent”状态。2 i# C8 z3 X& g
图3 新增manage_etc_hosts: localhost) [7 L! c1 R4 f8 g: J( V
点击放大
0 J. Z# [9 F( r6 u2 c$ A0 ~0 w! ?- [+ b, O; R
& L* J4 w9 }( P5 v5 R修改配置文件“cloud_init_modules”。9 u$ A. ?5 H$ `2 I! l3 v
在“cloud_init_modules”中将ssh从最后提前到第一位处理,提高云服务器ssh登录速度。
+ L6 h/ m) Z/ G0 A5 @& F+ k图4 提高云服务器ssh登录速度5 s9 V- W2 F' U: y0 s
4 C( }3 q! h0 v: v% @. V" `4 G' h C
5 ~% G8 Y, T- Q; F9 O
修改以下配置使得镜像创建的云服务器主机名不带“.novalocal”后缀且主机名称中可以带点号。) R# Y. x3 w' P8 X
执行如下命令,修改“__init__.py”文件。
5 s7 i y" v& W6 r$ p3 g- a7 Cvi /usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py% M9 Z: e' S0 L5 R7 } L
按“i”进入编辑模式,根据关键字toks查询,修改内容如下回显信息所示。
5 x; O" H; T- k. |9 P$ D; @5 Pif toks:
- e( u' |$ X" n: C" G* U toks = str(toks).split('.')+ l( w+ ]: z7 w. F; g+ M
else: y* G% N* _6 e) ?4 J: S$ z
toks = ["ip-%s" % lhost.replace(".", "-")]
7 [8 o7 u1 ~- w& Jelse:
5 i5 b- Q3 B+ F% I% T5 x toks = lhost.split(".novalocal")4 o& G3 G9 H3 n" u7 o E* {4 ~" h, X
if len(toks) > 1:7 D7 f4 I( y) t7 F1 W
hostname = toks[0]0 v! Y" i) o7 c
#domain = '.'.join(toks[1:])# u$ N/ g) h1 z
else:( F2 {) K/ ^+ Z5 @ j& L2 h
hostname = toks[0]* [/ a4 L( c& R9 r
if fqdn and domain != defdomain:+ W: r' n/ f# L$ k6 s8 F# |
return "%s.%s" % (hostname, domain)
! o* e$ S! [) }. ^% U4 B9 U" k# h0 ~else:
0 N) f4 w4 ~7 P/ o% p return hostname
% u, {. h/ S7 q: S' q' e: o6 U9 H修改完成后按“ESC”退出编辑模式,输入:wq!保存并退出。
( i# `* \# v+ s/ Y1 I; n/ j6 H! n( ^: [
q5 q% Q( ? F0 ]$ {4 K图5 修改__init__.py文件7 n$ V6 `. l1 I8 ^, A
点击放大1 r" a8 E* [7 P. c' \+ S
执行如下命令进入“cloudinit/sources”文件夹。
6 g8 k+ w$ h4 |; B" A* `, z) @9 Zcd /usr/lib/python2.7/site-packages/cloudinit/sources/
Y$ E. G" F$ \' Z9 q6 D执行如下命令,删除“__init__.pyc”文件和优化编译后的“__init__.pyo”文件。. j) x6 v& @5 N. ~2 a
rm -rf __init__.pyc5 W% H) h% K( Z7 l& }* A
rm -rf __init__.pyo0 I W3 J4 K m1 ?6 S; K! C
执行如下命令,清理日志信息。7 j2 [+ k" J! Q2 d
rm -rf /var/lib/cloud/*
: T$ s4 ^6 V/ I5 v2 \/ x+ g6 srm -rf /var/log/cloud-init* o8 a- F) @1 b: C2 b( f! z
执行以下命令编辑Cloud-Init日志输出路径配置文件,设置日志处理方式handlers,建议配置为cloudLogHandler。0 X# T+ s c1 y! ?* N9 t# g: m
vim /etc/cloud/cloud.cfg.d/05_logging.cfg6 a @$ s0 q4 u, a; ^9 {
图6 配置为cloudLogHandler
& N" ]1 z5 m6 l
5 g2 W4 G& R% W) W( p5 a
2 R0 B$ M1 B i检查Cloud-Init工具相关配置是否成功
6 R2 U7 Q9 Z0 Y执行以下命令,无错误发生,说明Cloud-Init配置成功。
5 ?& @1 R- h1 U8 `* T1 [cloud-init init --local
8 S8 M/ r5 z- T9 m1 ]% O- D0 @* G- o正确安装的Cloud-Init会显示Cloud-Init的版本详细信息,并且无任何错误信息。例如,正确安装的情况下,不含有缺少文件的提示信息。
+ p& X5 L0 m3 q0 p说明:
% E/ d* N1 U4 n, R1 c6 j% T执行如下命令,可将系统用户密码有效期设置为最大。此操作可选。
$ x0 ?! E4 X) i4 w/ v% ychage -M 99999 $user_name/ g3 ~. O, l, ]
其中,user_name为系统用户,例如root帐户。
8 `- @0 w; w& W7 H' M密码有效期建议设置为99999。
. f; r, a$ @* B |
|