|
|
Failed to run bootcmd module bootcmd
i/ o) p; ^7 T! `0 O1 k N# T H k, M5 b6 D
w( z7 e2 q5 n2 @" \/ C2023-09-12 08:11:12,132 - util.py[WARNING]: Failed to run bootcmd module bootcmd& R, S( U( s' D9 f9 H
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'>) failed2 W3 d- S* }# Q( o2 J' `
. V1 i: Z; H: J
; W0 F% G: D" F/ d
6 S7 q& n" q' V
2 f. b& _! G+ V. c6 u0 n; l$ D7 A) [" l- P1 }8 }5 ] T% d, G! q
语法格式:cloud-init [参数]
0 h5 [8 _4 A6 S! p. I9 e9 g: ^+ g" j: f& D' B& v8 q/ { f
常用参数: init 初始化cloud-init并执行初始化模块 + j8 J8 r) ~' F: u9 V' |" V* w
初始化
% v9 c9 z5 p( |7 v* C6 H5 y
- [1 d4 U* f# @: h- a# a! R% z. Jcloud-init并执行初始化模块:( P$ ]9 ], {8 y4 c! ~4 \
& ?' ]! z. s9 N[root@cool ~]# cloud-init init
2 M' E$ b# q! N. p" J& R- b# t5 y
使用给定的配置键激活模块:
6 K R" z: O* C- T
& Q# Z; Z. H' e1 e[root@cool ~]# cloud-init modules. X, a% c- |7 ~8 X- P6 C- n% F
& h' D" R$ E8 G! `$ N/ h2 J6 |5 P报告云启动状态或等待完成:
, Q' Y5 v; g0 N% |/ \9 U: g, R8 B6 h. L! [
[root@cool ~]# cloud-init status" f& q6 U) V# J% K$ ~: D0 u
1 i- U$ z, N% f: a6 \% ]0 I删除日志和工件,以便重新运行cloud-init:
6 H5 q, _- o' R5 z: C2 d1 S7 c; e8 p3 K0 A
[root@cool ~]# cloud-init clean
* q8 ]2 l. Q) v# b* ]& w( K5 u+ `* M7 {9 o% c
根据以上信息,得知我们需要自动扩容vda3分区(growpart)、扩容LVM和xfs文件系统(runcmd)。
( o ~ J& X8 ?7 u8 i. M创建文件/etc/cloud/cloud.cfg.d/growpart.cfg! c# E9 |6 x( X; |3 O2 n" a
vim /etc/cloud/cloud.cfg.d/growpart.cfg) G$ l# }( K# [" Y0 k
6 Y" C6 F9 F4 N. s/ [6 v0 y' u* ~4 C1 U/ ?3 y
#cloud-config
2 c# b' v* ?8 F- O3 q, tgrowpart:
" T* H* ]$ A( J) J9 t& y mode: auto" N' A: o0 m3 ^3 j9 g8 i7 e
devices: [/dev/vda2]
. i! G, }, ?( G' v( Q1 h ignore_growroot_disabled: false; l, E E P3 s) v2 P# C% A# r
runcmd:' P4 R* ]# Z2 P1 f" E0 r$ s# ?" j0 B3 N+ ^
- [pvresize,/dev/vda2]8 N8 J7 h; X9 O: o, w
- [lvextend,-l,+100%FREE,/dev/mapper/vklas-root]
o+ E4 L5 m1 `( L# \1 s* g - [xfs_growfs,/]! {+ V/ P# P. N% h
, N4 ^$ ]2 x" p4 ^& G$ S! T
注意:文件系统为ext2、ext3、ext4,则采用通过resize2fs 进行调整
" \: e1 _4 D& y3 Z0 ]
& V, i3 e. Z( r9 @' j8 r2.5 每次重启均调整
+ E& Q$ m4 h; m! \% A4 b3 o U0 h2 Y" ^4 I0 D9 J
该需求涉及到云平台会有调整虚拟机的需求,也就是虚拟机磁盘进行调整后,文件系统也依然需要调整,故衍生出每次调整后自动扩容的了。
, t6 L8 E& O- g不同的cloud-init模块有不同的执行频次:once-per-instance 、 always。可以在Modules文档中https://cloudinit.readthedocs.io/en/latest/topics/modules.html
, T1 I) L+ R8 `8 A查看每个模块的Module frequency属性。例如,bootcmd在每次引导时运行,而runcmd只在第一次引导时运行。频次也可以在cloud.cfg配置文件模块列表中覆盖——cloud_init_modules, cloud_config_modules和cloud_final_modules。( q) `& h6 p) k
故我们有bootcmd和runcmd两种方法实现该需求。! W w% D# { u
3 ^$ Z' F' u& hruncmd
8 m' `% r' Z, Z9 @# ~5 t通过修改/etc/cloud/cloud.cfg文件,覆盖模块频次5 G0 P4 D3 a: f- N7 `# X
vim /etc/cloud/cloud.cfg
* m2 w( I: i, A0 D) \3 t- G
7 U) T; k! I8 ~. r7 @; |cloud_config_modules:
5 a2 k3 N2 Y5 p# }6 m - [runcmd,always]
- d1 E4 s& q/ f( l( Z e% j
U$ @$ d2 N" h, {/ C P2.5.2 bootcmd1 o- u4 V5 C& y/ q" X
修改/etc/cloud/cloud.cfg.d/growpart.cfg,将runcmd替换成bootcmd,全文如下:
5 f' v7 E6 Y: |" y5 y. v+ A8 c! Z* [& u' x( a/ ]) N3 ?' g9 l) ~
#cloud-config# `; h; G0 ]0 X. P1 G
growpart:
2 x' S9 ]6 M. K/ o# f1 h3 }; |4 J mode: auto) h }% T4 k; W' h r3 I
devices: [/dev/vda2]
; u* `" ]2 ^ k) f/ H5 b4 ^ ignore_growroot_disabled: false5 D0 q5 b/ l- G- [
bootcmd:! X& [( A4 q- [* D
- [pvresize,/dev/vda2]9 c7 B: I2 y9 Z' }, k7 y
- [lvextend,-l,+100%FREE,/dev/mapper/vklas-root]; M6 L% } S9 L3 t. R, j& e
- [xfs_growfs,/]
$ R6 a5 d# ~- b# \4 U
+ O* L+ T! o2 k4 C! W# l I5 h$ ]& v在云平台中调整后,还需再次重启才能生效
' ^/ f* m) f& m8 O. ]1 L+ N" k# j- L k2 {, I/ ^
3 ?( n; b( V3 [0 b: W* H* v# g5 I; L; i1 q
|
|