|
|
Failed to run bootcmd module bootcmd3 K7 s2 x# e2 e+ ~
5 q3 e9 F( a( q4 X7 E
8 s' W$ [8 o0 K5 B( C4 g! `2023-09-12 08:11:12,132 - util.py[WARNING]: Failed to run bootcmd module bootcmd- s$ }" ^0 w0 S7 n# G
2023-09-12 08:11:12,140 - util.py[WARNING]: Running module bootcmd (<module 'cloudinit.config.cc_bootcmd' from '/usr/lib/python2.7/site-packages/cloudinit/config/cc_bootcmd.pyc'>) failed
& `3 j6 F" D: c4 G& q" X7 W, I& X! Q; ^( z
( T1 S7 I/ ^1 e# j& O/ K
& `* X3 @4 @7 _% Q% r6 w! b
; x. b7 n1 `, @. R8 {* Y* R; u, \+ P; r4 }
语法格式:cloud-init [参数] ; L+ H. O d2 W4 x4 k
% h+ D" V8 S3 T5 I4 M5 T
常用参数: init 初始化cloud-init并执行初始化模块
3 \9 F) M$ q" z. z+ O4 R初始化$ |4 F" N* V1 }8 k0 p7 W2 Y
' B, [/ J4 N5 P, a
cloud-init并执行初始化模块:
! u$ t1 P; X$ q) a8 @# u1 I8 d0 {* m8 s' C# z
[root@cool ~]# cloud-init init K: K. n1 f: G1 h8 \' k6 Q1 r
: I* q- z: z$ {6 p5 t" o使用给定的配置键激活模块:5 k2 P# F6 u s. f
5 p- b/ p3 H/ o N1 m9 l# N6 f[root@cool ~]# cloud-init modules
# Q5 j/ P0 M: `0 X. F% s9 P2 l; U
6 y% `( b3 x4 c3 _: @! C$ m报告云启动状态或等待完成:$ T. s. X8 C# |2 |8 F
! i$ R- u2 p$ W[root@cool ~]# cloud-init status
' O3 ?. g+ Y9 e8 C& H
/ h, r. F% {; `( I* s0 ^% D删除日志和工件,以便重新运行cloud-init:. `" x, y* \4 T9 }
# I2 j% H" s' [) c0 l[root@cool ~]# cloud-init clean1 B$ Q9 z4 O( y H+ Y" F8 J
: F( S+ r1 x6 c; u根据以上信息,得知我们需要自动扩容vda3分区(growpart)、扩容LVM和xfs文件系统(runcmd)。
; P. }3 i# K7 e0 w3 @! b创建文件/etc/cloud/cloud.cfg.d/growpart.cfg8 a2 J$ ?! n$ j1 g
vim /etc/cloud/cloud.cfg.d/growpart.cfg
+ H+ N( I* V, H1 M( F2 d$ A" A- G1 g# R% R
#cloud-config+ n& A& v/ A% a4 ?4 b( x6 U- Y
growpart:$ K/ Y N# C( I4 L" E7 k8 j7 `/ e: M
mode: auto5 N5 @" v8 g' |9 s
devices: [/dev/vda2]
$ Q/ @! {! i) Q3 n; ~' e ignore_growroot_disabled: false
* i$ W9 B# A$ n- D9 E# }runcmd:
5 Z5 r1 B% F# y/ f0 u5 B - [pvresize,/dev/vda2]) e* _ o! l9 d3 p3 Z- a3 _$ K
- [lvextend,-l,+100%FREE,/dev/mapper/vklas-root]
6 H+ z6 i% i9 e; K6 j ^5 I - [xfs_growfs,/]. z. y6 F0 A6 S& D% E* n1 A$ d
5 V& |! @9 w* C% a注意:文件系统为ext2、ext3、ext4,则采用通过resize2fs 进行调整. h" s* H) y3 U/ i8 M) h
1 t. c( H# C' E% x2.5 每次重启均调整
& X) h) D* H" \
( F c" A8 c# s1 w9 r5 N2 P该需求涉及到云平台会有调整虚拟机的需求,也就是虚拟机磁盘进行调整后,文件系统也依然需要调整,故衍生出每次调整后自动扩容的了。" X1 x1 \& V; Q# |' f
不同的cloud-init模块有不同的执行频次:once-per-instance 、 always。可以在Modules文档中https://cloudinit.readthedocs.io/en/latest/topics/modules.html7 g2 n0 b" p8 u# T
查看每个模块的Module frequency属性。例如,bootcmd在每次引导时运行,而runcmd只在第一次引导时运行。频次也可以在cloud.cfg配置文件模块列表中覆盖——cloud_init_modules, cloud_config_modules和cloud_final_modules。9 M- z5 J0 C8 F! n. [! O' y) I( N
故我们有bootcmd和runcmd两种方法实现该需求。
$ C% F/ r# s- w i5 l5 R% M& {+ k' {# v" S; q- a0 m1 \
runcmd# \3 q( |& Y$ d8 o# t
通过修改/etc/cloud/cloud.cfg文件,覆盖模块频次 I/ @/ @' L% r# }0 b
vim /etc/cloud/cloud.cfg+ g: [# W: P+ {! |/ [" g0 W# N
1 t: }+ t4 [' P8 i; D% n4 Kcloud_config_modules:
, C: c3 Y$ v9 X4 a - [runcmd,always]
4 O* B5 r. J; C2 h" H2 j4 ~. d+ j* I, b3 x( U. S" \* P
2.5.2 bootcmd- Q( s5 F+ o6 H) ]/ @3 `, t
修改/etc/cloud/cloud.cfg.d/growpart.cfg,将runcmd替换成bootcmd,全文如下:! L* A3 T% K! D7 i/ P
# M5 J `: L% \& O
#cloud-config! E- {1 l' P1 d2 Y- N( O9 M5 f
growpart:, E* b' F; _* L$ _- T" z
mode: auto
. c5 w' Z' j& p$ h3 W& v5 _ devices: [/dev/vda2]- w9 e! j% n. a0 L3 E& w
ignore_growroot_disabled: false6 T; ^0 p- p x' A. d) W& m
bootcmd:0 p, u4 t' ^5 }$ D
- [pvresize,/dev/vda2]9 v6 I* G+ o$ `. k- _8 z9 W( |, c
- [lvextend,-l,+100%FREE,/dev/mapper/vklas-root]
- X$ T1 K* F3 B( N' W - [xfs_growfs,/]
; s+ m& H; V; x' B8 Y+ y- ?( r0 J# F
& c9 _6 {" T/ A4 y3 P5 Y5 M在云平台中调整后,还需再次重启才能生效
4 d d8 X J1 ?1 x. R; d! Y+ A' c2 W( R' b1 B2 Z% I
4 E( a" J& z1 s& {5 o6 M4 w5 [2 k4 S' L' b) t, d/ U! L
|
|