黑石除外,黑石裸金属之类的windows机器不要轻易动cloudbase-init,普通cvm的windows机器继续往下看
1、cloudbase-init是否可以禁用或删除?
https://cloud.tencent.com/developer/article/1883449
可以,但新购机器时指定密码、控制台重置密码会不生效,需要自己提前在镜像里设置好密码,后面改密码也得在系统内部去改,另外,新购机器的RunInstances接口的UserData(自定义数据)功能依赖cloudbase-init,如果删除,新购机器时如果想用UserData进行高级的初始化自定义设置就实现不了。总之,看自己需求,如果确实不需要,就卸载掉。如果拿不定主意,建议保留。
2、如果业务确实需要cloudbase-init,那得关注一些注意事项
https://cloud.tencent.com/developer/article/write/1927748
3、目前公共镜像已经是1.1.2
自定义镜像里的cloudbase-init如果是0.9.11等低版本或dev开发版,这些版本可能有如下问题
比如依赖项,新版是4个,这个才1个
比如运行cloudbase-init的用户,新版是本地系统帐户,这个是.cloudbase-init
比如健壮性方面,新版有重试,旧版是Take No Action
以上问题可以以管理员身份打开powershell执行这几句命令纠正
代码语言:javascript复制sc.exe config cloudbase-init obj= LocalSystem
sc.exe config cloudbase-init depend= tcpip/dhcp/dnscache/Winmgmt
sc.exe failure cloudbase-init reset= 0 actions= restart/10000
sc.exe qc cloudbase-init 8192
net user cloudbase-init /del 2>&1 > $null
4、新版cloudbase-init 1.1.2的配置文件做了一些调优,如果不是1.1.2,建议更新,参考https://cloud.tencent.com/developer/article/1940021
利用powershell脚本自动化重装cloudbase-init,此方案前提是服务器能上网,如果机器没有外网,那只能在腾讯云上海地区的cvm使用,因为脚本我是放在上海COS的,上海CVM和同地域COS是走内网的,并且前提是正确解析上海COS域名到内网IP(一些使用者可能修改了默认DNS导致无法解析域名,因此要添加hosts,如果是默认的183打头的DNS,
183.60.82.98
183.60.83.19
就不用执行下面2句命令,如果机器有公网,也不需要执行)
代码语言:javascript复制cmd.exe /c "echo 169.254.0.47 windows-1251783334.cos.ap-shanghai.myzijiebao.com>> c:windowssystem32driversetchosts"
notepad c:windowssystem32driversetchosts
第2句主要是打开hosts让你检查第1句添加得对不对
对上海的windows cvm,升级到cloudbase-init 1.1.2的完整过程如下(cos url是区分大小写的,注意保持大小写原样,最好是直接copy):
打开第1个powershell窗口
代码语言:javascript复制cmd.exe /c "echo 169.254.0.47 windows-1251783334.cos.ap-shanghai.myzijiebao.com>> c:windowssystem32driversetchosts"
notepad c:windowssystem32driversetchosts
Set-ExecutionPolicy Unrestricted -force
打开第2个powershell窗口(全程大概10分钟内,需耐心等待)
代码语言:javascript复制Invoke-WebRequest -uri http://windows-1251783334.cos.ap-shanghai.myzijiebao.com/CLOUDBASE-INIT_INSTALL.PS1 -OutFile c:cloudbase-init_install.ps1
powershell -file c:cloudbase-init_install.ps1
sc.exe config cloudbase-init obj= LocalSystem
sc.exe config cloudbase-init depend= tcpip/dhcp/dnscache/Winmgmt
sc.exe failure cloudbase-init reset= 0 actions= restart/10000
sc.exe qc cloudbase-init 8192
net user cloudbase-init /del 2>&1 > $null
因为安装cloudbase-init会产生cloudbase-init用户,不人为干预的话,就会以前面说的这种方式运行
所以我加了sc.exe config cloudbase-init obj= LocalSystem这句命令放弃使用cloudbase-init用户,既然没用了,你在用户和组里看到cloudbase-init用户碍眼的话,执行命令net user cloudbase-init /del 2>&1删掉它即可
如果以后要调整服务所运行的用户,那就留着,如果保持local system不调整,那就删掉cloudbase-init用户(建议删除,好奇害死猫,不建议尝试切换到.cloudbase-init模式运行,可能导致密码成为1或随机密码)