- 积分
- 16844
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
配置Cloud-Init工具
* `5 s* m1 [, R& ]& f1 p3 P% |用户可以根据需要根据用户类型配置登录云服务器的用户权限。使用root帐户登录,需要开启root用户的ssh权限,并开启密码远程登录。: u! C7 h4 Z. J8 _$ }
若用户选择注入密码,则通过自己注入的密码进行远程SSH或noVNC登录。
& `4 }6 k4 X( f3 [7 x9 I若用户选择注入密钥,则通过自己注入的密钥进行远程SSH登录。% a S3 @% M3 P% A" j' Z
执行以下命令,在vi编辑器中打开“/etc/cloud/cloud.cfg”。
1 C5 J1 K8 K- svi /etc/cloud/cloud.cfg
. ?% l9 E6 }$ S9 a" l, Q! Z(可选)在“/etc/cloud/cloud.cfg”中配置“apply_network_config”为“false”。: M0 L& i0 F/ `; |5 n) k
对于使用Cloud-Init 18.3及以上版本的用户,需执行本操作。
4 b# ?' O( _. B1 W4 l4 I图1 配置示例* N. w# E+ W- U1 W ^- J4 x/ |' i1 Q2 N
点击放大0 v& v2 ^7 m, F+ M8 p
设置开放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”表示不锁住用户密码。4 Z3 k" L$ `; u
users:8 ^/ ~$ ]! b1 I% j" o5 [0 u
- name: root
. ?: _! B3 R/ K5 \+ F lock_passwd: False3 U9 ^8 x5 F& j0 R8 G. U
disable_root: 0
, U2 K& V; ^8 F# k( K! Y6 yssh_pwauth: 1
7 c" R+ y! j |5 q开启机器名更新机制,请勿注释或删除“ - update_hostname”语句。. I: B# ~! {; i) Z$ Z( L
cloud_init_modules:9 ]' [9 a7 c+ d' Z# f, F
- migrator
! Z' d- |" H. y" N - bootcmd% w+ b# W/ K+ [
- write-files5 j: u% v. U" c& v
- growpart
. M4 v0 ~6 {+ X) z - resizefs% X8 h) q2 d& e# J- R1 l' C; G7 r
- set_hostname Z3 ?5 H7 B! ^; X9 ]$ ]+ l
- update_hostname: F2 D" H" W+ U: x4 r" ^, ?. S
- update_etc_hosts5 x! c# V" i5 z
- rsyslog) e* c6 r6 z4 ?
- users-groups$ v$ h0 K/ L& z- o! {) e
- ssh9 g/ R% l" t% K, O
执行以下命令,在vi编辑器中打开“/etc/ssh/sshd_config”。9 ]9 F2 p# ~7 ?% l- D: h/ t Q
vi /etc/ssh/sshd_config( v0 A) _% W4 @* F
将“sshd_config”中的“PasswordAuthentication”的值修改为“yes”。
* w8 y& b7 ?8 t$ }% f. J% E K说明:
$ u# y0 Y8 _" s. E" I8 d如果是SUSE和openSUSE操作系统,需要同时配置“sshd_config”文件中的以下两个参数为“yes”。
! y/ P8 c8 Q- }' ]: _% xPasswordAuthentication& w/ F& p( ^# \
ChallengeResponseAuthentication
. `4 y/ Z3 K8 C" B确保删除镜像模板中已经存在的linux帐户和“/home/linux”目录。2 A1 B9 d# Q$ L1 J# H( k
userdel linux0 g! u8 S: z- E2 T$ S
rm -fr /home/linux# q" O1 C" N: N# f# ^/ \ B
配置agent访问openstack数据源。
2 H6 g8 B2 g* @. E5 Z" A2 b在“/etc/cloud/cloud.cfg”最后一行添加如下内容,配置agent访问OpenStack数据源。9 r$ n) W! S. D0 P
datasource_list: [ OpenStack ]
0 N# C( N: R) u. o! C' ] Z* v% edatasource:: ]8 x2 F9 G# [
OpenStack:
6 v: ^8 a, K- s% x! v/ E3 c0 B# | metadata_urls: ['http://169.254.169.254']: X3 K: _6 ?. b) M
max_wait: 120" u! e" ^. Z8 T* X
timeout: 5
1 q* ^/ L+ d# R2 u& p3 i$ B) Z' M说明:
8 }$ T. ]# S6 h+ P$ Fmax_wait和timeout可由用户自定义是否需要配置,上述回显信息中max_wait和timeout的取值仅供参考。% I. m8 r, A) q
当操作系统版本低于Debian8、CentOS 5时,不支持配置agent访问OpenStack数据源。# \# V y2 q" \: _/ J6 u1 w
CentOS、EulerOS操作系统云服务器必须要禁用默认的zeroconf路由,以便精确访问OpenStack数据源。, T7 w( {/ P( q/ R- d- r
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
2 ?5 N) S9 ]2 D- ?& o2 _7 A& N2 k7 b1 f# F
; }8 O) i; q) H8 W% O, V- q+ Y
在配置文件“/etc/cloud/cloud.cfg”中禁用Cloud-Init接管网络。9 @! I" ~" s$ V- c/ ^ u% b: D
当Cloud-Init版本等于或高于0.7.9版本时,在配置文件“/etc/cloud/cloud.cfg”中增加如下内容,禁用Cloud-Init接管网络。1 E5 r; P+ J' m% U4 Q, `# i
network:- F0 r5 w( u0 n, c$ N1 L
config: disabled3 G2 T* Q0 ]. [. {+ m+ R X8 ]
' `# w' F( _3 y% K% u; O; K3 y X3 @! n$ z% ]! `+ k; q8 Q0 y( j
说明:
0 ^! N6 D' U+ @' n增加的内容需严格按照yaml格式进行配置。
+ O) J& W, S/ M/ ]8 c3 E, N k* B% J3 U1 m+ u$ n) q5 J6 l3 ?
$ z5 f8 |. t Z. @" D+ t图2 禁用Cloud-Init接管网络1 i) n+ ^* }3 L/ z: S O
在配置文件“/etc/cloud/cloud.cfg”中补充如下内容。
4 R% H; u% M+ `! W2 vmanage_etc_hosts: localhost3 G" r9 Y5 S6 y# Z1 {, @
5 y# s" m) P& b, i; u
防止启动云服务器时,系统长时间卡在“Waiting for cloudResetPwdAgent”状态。$ w! w4 k! F/ B. {5 I
图3 新增manage_etc_hosts: localhost
4 k P: ?7 W" M* i, u点击放大
: Q7 h% Z% [. g7 b+ I% W7 f( d& a: _5 }9 s
6 [" L' a# G/ f8 s- u+ R
修改配置文件“cloud_init_modules”。
\# \: E9 h/ o. h在“cloud_init_modules”中将ssh从最后提前到第一位处理,提高云服务器ssh登录速度。
& N Z( i! Z/ g- P图4 提高云服务器ssh登录速度: R) ?: b- I+ b5 o% Y3 w6 E3 P
. M. | L! Y7 I' \- {
& {% a+ s7 v: _$ _' Y8 y5 U修改以下配置使得镜像创建的云服务器主机名不带“.novalocal”后缀且主机名称中可以带点号。1 \; D# L* L. p; b
执行如下命令,修改“__init__.py”文件。& N$ M( d% Q7 Q7 L m7 \9 r
vi /usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py
* N3 u8 y E# s. z按“i”进入编辑模式,根据关键字toks查询,修改内容如下回显信息所示。
3 y! ^+ t6 ]( @0 |if toks:
" I! r: I7 U% g! m5 f1 X/ ~ toks = str(toks).split('.')
% b1 w& L9 l1 }: q/ G2 Welse:
5 J" {& V/ E+ V; k toks = ["ip-%s" % lhost.replace(".", "-")]
9 T6 i, U* m1 R7 `8 _* Zelse:* ]4 ?8 ?+ S4 I C4 o
toks = lhost.split(".novalocal")
* }+ w* r. w4 U: r" P" W% fif len(toks) > 1:
n* ]! r8 s1 G5 V7 l$ Z1 ] hostname = toks[0]$ `3 r1 r6 x, s* H- [
#domain = '.'.join(toks[1:])6 U7 R; G1 t' V8 h) W
else:& k! A9 Z, g4 p
hostname = toks[0]
; k# m' V5 S+ Zif fqdn and domain != defdomain:
# _* Q1 d+ I# c0 n return "%s.%s" % (hostname, domain)3 T/ T& J: C# \% i& c) [
else:
. ]! H6 v4 w* p0 J' n9 m1 c return hostname0 ~4 Q& d" d5 X2 n
修改完成后按“ESC”退出编辑模式,输入:wq!保存并退出。
8 y- n& b, e' M$ D
I3 a' J: _; m, a3 S: u6 }( i( W4 X6 Y, L
图5 修改__init__.py文件2 u+ x6 G! s8 f
点击放大
( V* y9 U; u, L执行如下命令进入“cloudinit/sources”文件夹。
3 m& C& m# q' A; ]& k# m- t6 j% ocd /usr/lib/python2.7/site-packages/cloudinit/sources/6 ~' b$ X0 }) d' H3 j
执行如下命令,删除“__init__.pyc”文件和优化编译后的“__init__.pyo”文件。
! r5 T# Z" z. j. K+ }: f7 orm -rf __init__.pyc" `, ?% F$ H7 G B+ B* K) H, v
rm -rf __init__.pyo$ D+ n# _) s$ u. w
执行如下命令,清理日志信息。# Z- L+ ?5 i" u9 Y8 m" Z
rm -rf /var/lib/cloud/*
1 e% q: A) b# \4 g! O3 urm -rf /var/log/cloud-init*
2 Q, B) k+ ^' q0 N: f$ k: m执行以下命令编辑Cloud-Init日志输出路径配置文件,设置日志处理方式handlers,建议配置为cloudLogHandler。
, d0 _$ G/ X8 h: s0 Kvim /etc/cloud/cloud.cfg.d/05_logging.cfg) H) o5 x# C/ W7 o M
图6 配置为cloudLogHandler
- p5 E* c" Q9 w0 b& n% [! O7 P
9 u+ G! V) s: n0 d
) m* F9 r* h! H' `6 x9 Z, o检查Cloud-Init工具相关配置是否成功1 d9 w d2 w J% A7 _0 o5 h9 M
执行以下命令,无错误发生,说明Cloud-Init配置成功。
, h# L. d7 X0 z+ T0 ^ A# d8 d, [cloud-init init --local
* @( H9 @* t& f. I' j正确安装的Cloud-Init会显示Cloud-Init的版本详细信息,并且无任何错误信息。例如,正确安装的情况下,不含有缺少文件的提示信息。
9 b c, i/ B' [! Q8 r+ e- R说明:3 a9 X m D0 f& g$ w, w+ ?' l
执行如下命令,可将系统用户密码有效期设置为最大。此操作可选。
2 b8 x* E, U2 }) Tchage -M 99999 $user_name
. U; y+ A! `/ y2 g6 A7 o$ R其中,user_name为系统用户,例如root帐户。
) r, z. ]' z9 J6 V5 b密码有效期建议设置为99999。
9 _% T! y6 a8 F& F: i |
|