|
|
配置Cloud-Init工具8 ]) t- A) g% Q' P/ ~( t
用户可以根据需要根据用户类型配置登录云服务器的用户权限。使用root帐户登录,需要开启root用户的ssh权限,并开启密码远程登录。
6 ^4 L( [4 g. I9 }& f6 M3 p若用户选择注入密码,则通过自己注入的密码进行远程SSH或noVNC登录。9 ? U2 ?) x4 D1 z t# y
若用户选择注入密钥,则通过自己注入的密钥进行远程SSH登录。
3 M. @6 t- t+ m9 b1 C% V) K5 ]: G执行以下命令,在vi编辑器中打开“/etc/cloud/cloud.cfg”。% K; h4 U" {" Z, T* A/ }. A
vi /etc/cloud/cloud.cfg
+ W' Q( h$ M7 M, g8 M(可选)在“/etc/cloud/cloud.cfg”中配置“apply_network_config”为“false”。
8 ^3 m" u J! t( w. c! X/ J5 V对于使用Cloud-Init 18.3及以上版本的用户,需执行本操作。
7 O/ u. B& |% e" N8 n0 [图1 配置示例. X4 F& Z- _' H: K8 v0 b
点击放大
3 Y5 b+ T( K( g% G ]设置开放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”表示不锁住用户密码。
) z- I0 y* e1 T! ausers:* h k3 N3 x9 z& B2 ~1 Q+ Z% J( k
- name: root
H& ~( \* I4 l lock_passwd: False' F$ d7 G' U6 ~6 f
disable_root: 0
% E- R) E K. z" ]ssh_pwauth: 1- s9 g+ _2 J: _ X X6 V
开启机器名更新机制,请勿注释或删除“ - update_hostname”语句。
6 ^6 e: L) Z4 q. h/ A% Z) Icloud_init_modules:1 v% w1 d1 T* m; }9 E
- migrator
* H9 I9 A2 O" K" V/ q - bootcmd
; `8 a" F8 c5 \/ e4 h - write-files
* `: I3 g$ v) ?7 Q7 I/ {+ q3 k - growpart
O. d- O9 n9 }6 Y1 f2 d% G3 q: Y - resizefs- q5 O2 G- z7 x$ l# N
- set_hostname4 q d; }% r5 Q4 G) I
- update_hostname# Y) }7 _6 I9 y" O
- update_etc_hosts
8 z P: i% m6 O( u) n - rsyslog j/ y" w( P. c; c( L# u
- users-groups! @# ?' r8 k4 B/ T; V6 O3 L$ _: ?
- ssh. w$ \" Z% S1 A" n
执行以下命令,在vi编辑器中打开“/etc/ssh/sshd_config”。$ f; ]7 F4 s | r2 w& _& e
vi /etc/ssh/sshd_config: T; b }9 ~, i: t4 M; Z& M
将“sshd_config”中的“PasswordAuthentication”的值修改为“yes”。9 [+ w- t, b( l) v# t
说明:
% P4 Y! E1 T! x8 S如果是SUSE和openSUSE操作系统,需要同时配置“sshd_config”文件中的以下两个参数为“yes”。; Z1 B/ f+ x5 l2 |/ r
PasswordAuthentication0 G9 f( _/ Y. f2 `% }. D
ChallengeResponseAuthentication o0 v# G! t( W# `8 G' [' Q* Y9 G
确保删除镜像模板中已经存在的linux帐户和“/home/linux”目录。9 c6 \3 M5 O; i
userdel linux5 P( ?; e9 w3 U. _5 w
rm -fr /home/linux
4 F4 W: i( Z# L, q# t配置agent访问OpenStack数据源。9 b7 r! j% z- {0 A* {8 p
在“/etc/cloud/cloud.cfg”最后一行添加如下内容,配置agent访问OpenStack数据源。
8 S. K: L$ R* f& W" A; \; Qdatasource_list: [ OpenStack ]" z2 _" N- A; K+ F3 v
datasource:
t7 S4 {4 K. n# _ OpenStack:. _( r P/ \1 x0 c( M. j; y/ a, Q
metadata_urls: ['http://169.254.169.254']
/ \ N; i: x% j' v max_wait: 120, l; ^) V4 t- ^2 F7 J- h. Q* }/ A" f
timeout: 52 `- H- l0 a; m/ [& R
说明:
7 H5 e0 r0 T6 _' d wmax_wait和timeout可由用户自定义是否需要配置,上述回显信息中max_wait和timeout的取值仅供参考。
7 r6 d8 ?! e! \, j, }) `3 w4 F当操作系统版本低于Debian8、CentOS 5时,不支持配置agent访问OpenStack数据源。 a& g: ?8 R/ }8 a
CentOS、EulerOS操作系统云服务器必须要禁用默认的zeroconf路由,以便精确访问OpenStack数据源。1 A/ ?) R) Q. N
echo "NOZEROCONF=yes" >> /etc/sysconfig/network& X) M4 t7 B# w) S' V. \
5 L$ f+ f. @' N3 D; q' ~' w1 n6 V. ~+ O
在配置文件“/etc/cloud/cloud.cfg”中禁用Cloud-Init接管网络。" k' Q T. f: p, j
当Cloud-Init版本等于或高于0.7.9版本时,在配置文件“/etc/cloud/cloud.cfg”中增加如下内容,禁用Cloud-Init接管网络。5 |3 P% k2 r9 N3 l% B% s
network:
: x$ v% ^& e; [ r config: disabled6 M1 j9 r- H: ?: e" y
- x0 `) B/ D0 m9 B
- u* F& A5 p( ^' P
说明:4 X0 n0 Y# O3 e3 i. R# `0 W
增加的内容需严格按照yaml格式进行配置。: [; E2 [9 x& C# s
; `' r& b) b6 l2 {! q3 c& I
$ [! G( K8 }0 e2 p, {图2 禁用Cloud-Init接管网络
( K. `9 T* I% {# b B- B在配置文件“/etc/cloud/cloud.cfg”中补充如下内容。
6 Q! A* p3 [6 K5 Umanage_etc_hosts: localhost. B# Q* T5 Y0 F4 B$ l2 k8 {
2 B# i7 i4 l3 F9 p
防止启动云服务器时,系统长时间卡在“Waiting for cloudResetPwdAgent”状态。
1 g9 P+ A: H1 {/ d! q图3 新增manage_etc_hosts: localhost
. L7 [( H5 H+ v9 T( c点击放大
6 j9 Z0 W$ ]) J* p4 _. ^5 A9 x4 ]6 s6 a
" c4 F3 y8 e; N: O) m9 N
修改配置文件“cloud_init_modules”。
2 D0 G/ S! X7 j% _在“cloud_init_modules”中将ssh从最后提前到第一位处理,提高云服务器ssh登录速度。
! H) @ L1 y3 R图4 提高云服务器ssh登录速度! i: I! I7 o& K
2 K( @4 d' R/ B. j* T& O5 X* O: Y0 {- j/ R/ q' m& \
修改以下配置使得镜像创建的云服务器主机名不带“.novalocal”后缀且主机名称中可以带点号。, A6 q; b7 O( t5 {8 Y, v
执行如下命令,修改“__init__.py”文件。+ E8 _$ K& k; T @1 S
vi /usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py1 A+ c9 P# C2 T
按“i”进入编辑模式,根据关键字toks查询,修改内容如下回显信息所示。
* R& X' B" n- U! T* i) p. \! \" lif toks:& y& H; G3 Y' Y2 w' {9 N7 l% _
toks = str(toks).split('.')
4 E. I/ ^% A5 z4 |5 u2 [else:) ]8 J. l& d" L( C- z( w$ c* ]* h0 x
toks = ["ip-%s" % lhost.replace(".", "-")]
" a5 M+ u$ d" |9 ~4 Felse:
% ?! t* i! Y" _ C% ^6 { toks = lhost.split(".novalocal"); u a# I7 j: C. W! d' K6 {
if len(toks) > 1:
, k8 v$ C7 U0 i: L: p8 t$ c hostname = toks[0]. r2 o5 t$ D) W" e
#domain = '.'.join(toks[1:])
6 ` E) m* ], kelse:, O1 o2 L( Y3 u: n: G4 w% o+ B; h
hostname = toks[0]
4 E9 Y+ I: J5 M+ p0 @if fqdn and domain != defdomain:
# R5 K5 l( Z0 _4 d* C! ` return "%s.%s" % (hostname, domain)
* P5 t1 k1 I D2 N" ^5 Oelse:
" e7 q, P8 L5 A+ z+ a return hostname% p/ Y& z: |* e0 K1 N; ^" d+ z0 ^7 q
修改完成后按“ESC”退出编辑模式,输入:wq!保存并退出。3 y/ u6 J1 ]! J: p
! @; ~5 F0 e( j% r$ g$ U* b2 `. { r9 w1 {: [# W% w) C
图5 修改__init__.py文件6 B m q* d i1 n
点击放大
! \# v( S( c2 d9 H. b8 B% h执行如下命令进入“cloudinit/sources”文件夹。3 S* O* e( ^% {. l& l5 J1 n1 u
cd /usr/lib/python2.7/site-packages/cloudinit/sources/
- M" b7 }5 p- h' n8 c0 T$ z, _& I执行如下命令,删除“__init__.pyc”文件和优化编译后的“__init__.pyo”文件。
2 K/ {" Z- V4 M4 rrm -rf __init__.pyc
. e, F' {( y3 ]3 hrm -rf __init__.pyo
. F" \( ]; P8 R. O; s% i7 V执行如下命令,清理日志信息。
5 n0 W& V$ m/ S$ r! b$ ?/ Rrm -rf /var/lib/cloud/*0 T! `' J& E( T
rm -rf /var/log/cloud-init*% {6 t1 [+ }% S% x: L
执行以下命令编辑Cloud-Init日志输出路径配置文件,设置日志处理方式handlers,建议配置为cloudLogHandler。
* C! `( v% g/ S, C. rvim /etc/cloud/cloud.cfg.d/05_logging.cfg
) u$ _% k Z l9 a2 |, L图6 配置为cloudLogHandler% K1 G, m6 t" P. D; J% [& u6 s
6 q) L, F% ^" Q4 E! [3 R
6 l6 Z0 X1 E, g1 ]& u+ S$ m9 P) C检查Cloud-Init工具相关配置是否成功6 F p' a* ~) z8 o& o
执行以下命令,无错误发生,说明Cloud-Init配置成功。
. c; v# i8 v. Y+ L5 Q2 l1 x; G$ [cloud-init init --local: L) A" v [. x2 ^0 S
正确安装的Cloud-Init会显示Cloud-Init的版本详细信息,并且无任何错误信息。例如,正确安装的情况下,不含有缺少文件的提示信息。7 p2 r g* ]! E+ l% M; E" e2 V/ c
说明:
# p- o( J" S- D. v执行如下命令,可将系统用户密码有效期设置为最大。此操作可选。
3 c# Q8 ?4 R6 \. I8 @4 p/ y- fchage -M 99999 $user_name
1 N7 R7 ?, |) n R! T+ l5 D. N. Y- f其中,user_name为系统用户,例如root帐户。
" ~( F2 ~, q5 x密码有效期建议设置为99999。3 F3 I! A7 E8 L, A5 i
|
|