|
|
Failed to run bootcmd module bootcmd7 j+ A8 I6 b, U& L7 b4 R
) L- U* W$ H0 Y' ^! B7 M x- n7 Q$ c. L! |/ r
2023-09-12 08:11:12,132 - util.py[WARNING]: Failed to run bootcmd module bootcmd
1 i; F7 p" t5 |7 q* _9 A0 X2023-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/ B- A: {9 C* {" P1 d5 N6 g
' ]& B- |. b9 a1 E5 K: z7 ?/ p8 A* J
6 Q) K' g* D+ {7 J
* L8 s }/ ]2 I4 {) X
9 }, m) g# `$ n. P7 w0 Q, N$ j+ V% D' h2 S6 ]7 W' q$ t6 u& r
语法格式:cloud-init [参数]
9 K( B8 g5 i: e* i, v- I
! Z: v# r L$ o9 v常用参数: init 初始化cloud-init并执行初始化模块
% E4 H8 @8 r. S5 L2 c) _: ]初始化5 L9 `' f, {5 U+ u& [" x7 k
+ V2 o$ f( O8 o1 f0 q H1 H* O
cloud-init并执行初始化模块:
7 o- Q% i8 X3 }6 o' ~# D, T5 Z Y, R* G* Y9 M: W- R4 e* Z
[root@cool ~]# cloud-init init
; }9 [0 f) V7 u; H9 x! `$ [% }6 E; ?9 z- H, A( X
使用给定的配置键激活模块:
; `7 K7 z: q! d- B0 C3 B+ X8 k' W H; x+ `, V. O& Q) i, P# G6 ~
[root@cool ~]# cloud-init modules
. M$ L) I; T4 m/ ]7 Z" s% |: o
- t; k4 {+ E% x7 e: T' S4 N. z报告云启动状态或等待完成:
0 {0 r, _2 T6 h& s- i. g/ m6 x; `! y" v# E; v7 I: F
[root@cool ~]# cloud-init status( N: c2 q" c( a( J9 |
! d/ L' Q z" Z8 |, t5 z删除日志和工件,以便重新运行cloud-init:
( U L" G/ J& ]9 R# _8 K. V, G( @" i6 r
[root@cool ~]# cloud-init clean _* C7 d, [, ?+ p J6 X" P2 f
, D6 }$ D- j2 e$ i
根据以上信息,得知我们需要自动扩容vda3分区(growpart)、扩容LVM和xfs文件系统(runcmd)。
! T5 M% V: ]8 @* b7 S创建文件/etc/cloud/cloud.cfg.d/growpart.cfg0 I+ t8 C4 b* l6 j7 F3 y
vim /etc/cloud/cloud.cfg.d/growpart.cfg& P1 h8 Q4 n# a, [8 `
& k/ y/ G$ }! \) O y% Q
#cloud-config
/ R+ p9 B. b6 ^) z$ z$ k! u% V4 vgrowpart:: Z6 x& d' G3 [" _4 d, Q0 W6 i) V
mode: auto; V0 ]4 t& y5 K8 ?5 j' A
devices: [/dev/vda2]% ^: v; r* k; W8 X- N. @* z0 w6 k Y
ignore_growroot_disabled: false
! R2 a8 H+ V: }! p7 O- aruncmd:
3 Q, r& d9 g( w) U7 R0 j. i! g6 H - [pvresize,/dev/vda2] Z5 S | `* i
- [lvextend,-l,+100%FREE,/dev/mapper/vklas-root]; ?0 [" A: u+ J( e( t4 t" ]
- [xfs_growfs,/]( b9 p0 h- Q" U7 \1 h, X
. d9 o4 D6 O" l$ u3 ? V注意:文件系统为ext2、ext3、ext4,则采用通过resize2fs 进行调整3 l; i8 z9 u E, g
2 g9 e4 h( \5 V, f8 q0 `4 _9 Z
2.5 每次重启均调整
" J0 v) t$ M' y; y" q8 j
7 U9 @' ]5 @) F+ g0 g. e9 E* B/ f该需求涉及到云平台会有调整虚拟机的需求,也就是虚拟机磁盘进行调整后,文件系统也依然需要调整,故衍生出每次调整后自动扩容的了。
6 e6 s$ p5 Q1 o+ V K' X" E8 ?不同的cloud-init模块有不同的执行频次:once-per-instance 、 always。可以在Modules文档中https://cloudinit.readthedocs.io/en/latest/topics/modules.html
; e4 R% U s6 Z% H查看每个模块的Module frequency属性。例如,bootcmd在每次引导时运行,而runcmd只在第一次引导时运行。频次也可以在cloud.cfg配置文件模块列表中覆盖——cloud_init_modules, cloud_config_modules和cloud_final_modules。7 h2 w% K- K- Y$ E( x `
故我们有bootcmd和runcmd两种方法实现该需求。. m1 n; i5 G) x2 d
( @7 F, e' G4 M! ]& @" Bruncmd
- s; M. x/ [ w! H通过修改/etc/cloud/cloud.cfg文件,覆盖模块频次/ p. P( F8 S1 o3 L; e$ w) {
vim /etc/cloud/cloud.cfg
# y& Z# `+ v& S6 g% \( E' a( G$ Q3 O1 ^! g8 K# k" R) s- E( _0 ~
cloud_config_modules:
" j- ?) x1 }4 T! Z8 F! H. L - [runcmd,always]
. ]1 c% `% x7 v3 V& w) R" k/ V$ Q) a* G
2.5.2 bootcmd1 l2 L% k+ A8 {( F
修改/etc/cloud/cloud.cfg.d/growpart.cfg,将runcmd替换成bootcmd,全文如下:; J$ a$ T" g* l+ M! q2 |8 R' k# v
0 ?, ~" ^/ ?$ h) x& v; D
#cloud-config+ [+ X8 K i% m) \
growpart:
7 A$ F j2 n8 a5 G mode: auto
- l. Z X4 w: Q5 a' W7 Z devices: [/dev/vda2]
1 U7 ~, ?! b6 } Z3 b0 T ignore_growroot_disabled: false
; z, g: R! X# Y4 x2 S7 A: Jbootcmd:
& h1 k V+ O+ o# N9 h& A Y# ^. W - [pvresize,/dev/vda2]
+ d7 _7 _9 y. M- b5 z' h- N - [lvextend,-l,+100%FREE,/dev/mapper/vklas-root]
L) K t& B6 H$ x - [xfs_growfs,/]3 h* u: u1 l- ^0 u
& `8 u2 C j4 m8 V" m在云平台中调整后,还需再次重启才能生效
& u1 p3 `4 P" l4 A6 x5 y- w
9 ?% v" U5 n4 F' I4 u4 B- W r' {) L# p) M! A! P6 C! o
* w5 L8 h; h7 i* s+ a |
|