建议cloudbase-init的启动模式改为“本地系统账户”,目前发现. \cloudbase-init的启动模式存在explorer.exe异常的概率 异常现象: explorer loop crash(explorer循环crash,一闪一闪,appplication.evtx 的启动模式,制作镜像的几个注意事项: 如果原机器有用userdata,不要执行清理cloudbase-init注册表,原因是,如果创建机器时传了userdata,而userdata代码里有写操作的代码, 那你删除了cloudbase-init的注册表会导致初始化标记为0,下次开机的时候cloudbase-init会认为机器没有初始化过,是新机器,就会自动触发重新执行一遍userdata里的代码,严重点假设 为本地系统帐户、清理本地用户和组里面的cloudbase-init用户 services.msc (在服务列表里改启动模式为“本地系统帐户”) lusrmgr.msc (删掉cloudbase-init
文档:https://cloud.tencent.com/developer/article/2285114
cloudbase-init是否可以禁用或删除? 依赖光驱,请不要禁用cloudbase-init服务或改动它、不要禁用光驱,不要删除光驱盘符,如果有安全软件,可能会拦截cloudbase-init,因为cloudbase-init通过python起作用 cloudbase-init很重要,cloudbase-init用户是否可以删除? 服务,不要禁止光驱,会影响初始化、设置密码、设置hostname等流程②请在安全软件里信任cloudbase-init,否则,安全软件会拦截cloudbase-init,导致cloudbase-init 就在cloudbase-init的安装目录里,如果python环境变量存在问题,也可能影响cloudbase-init正常执行。
或者<powershell>这里写代码</powershell>限制不能超过16KB不能超过16KB图片解决cloudbase-init userdata windows中文乱码userdata powershell
如何确认cloudbase-init用户能删不能删? ,然后就可以删除cloudbase-init用户了 . cloudbase-init是系统的一个服务,肯定得系统起来后cloudbase-init才会开始执行,所以肯定是重装结束后cloudbase-init才开始执行,对于那些启动快的其他业务服务建议设置延迟启动 ,其启动不要快于cloudbase-init。 控制台提醒得比较隐晦,原因就是cloudbase-init是系统的一个服务,肯定得系统起来后cloudbase-init才会开始执行。 每次重启后cloudbase-init完成的标志如何获取?
我之前写过2篇文档,关于直接利用cloudbase-init自带的python环境,以及相关环境变量的处理https://cloud.tencent.com/developer/article/2378739https /cloud.tencent.com/developer/article/2286918当时我只是从操作系统层面对C:\Python_CloudbaseInit\这个路径做了mklink处理,后来我在cloudbase-init 的文件中找到了证据用everything搜“C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Lib\__pycache__\netrc.cpython netrc.cpython-36.pyc对比1.1.2和1.1.6这2个版本上述路径的.pyc文件时,发现netrc.py的路径有差异C:\Program Files\Cloudbase Solutions\Cloudbase-Init Python\Lib\netrc.pyC:\Python_CloudbaseInit\Lib\netrc.py也就是说下面这2个目录等效C:\Program Files\Cloudbase Solutions\Cloudbase-Init
Cloudbase-Init是免费开源的,但.exe主程序不开源,只是.py文件开源 OpenStackService.exe C:\Program Files\Cloudbase Solutions\ Cloudbase-Init\bin\OpenStackService.exe cloudbase-init.exe C:\Program Files\Cloudbase Solutions\Cloudbase-Init \Python\Scripts\cloudbase-init.exe Cloudbase-Init官网: https://cloudbase.it/cloudbase-init/ https://github.com /cloudbase/cloudbase-init/releases 初始化不单单是Cloudbase-Init的多个Plugin依次执行,还有其他的异步调用 cloudbase-init的功能主要就是自动扩展系统盘分区 离线重置密码,2016支持,2019/2022不支持,此差异,源于cloudbase-init本身功能,为啥这样?
image.png 3、手工 启动 cloudbase-init 服务看看是否有相关报错,如果有报错需要解决(特别关注是否安装相关安全软件拦截cloudbase-init执行的相关操作)。 cloudbase-init 常见问题排查 问题1: 手工修改了cloudbase-init 账号密码导致cloudbase-init服务启动失败,从而使得初始化重置密码等操作失败。 当用户手工修改了改账号的密码的时候就会出现Windows 拉起 cloudbase-init 服务的时候用户名密码校验不通过导致 cloudbase-init 服务启动失败。 *解决方案:* 将 cloudbase-init 服务改为 LocalSystem 服务,具体操作方式详见: “如何确认子机内部的 cloudbase-init 服务是正常运行的-> 步骤2”。 问题2:用户禁用了 cloudbase-init 服务,从而使得初始化重置密码等操作失败。 背景原因: 无。 解决方案: 将 cloudbase-init 服务启动类型改为 自动。
pypi/simple --trusted-host mirrors.tencentyun.com 走公网到files.pythonhosted.org 跨境质量差,我这边也复现,用内网源没问题 cloudbase-init 自带python powershell命令切换到pip目录: cd "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Scripts " cmd.exe /c mklink "c:\python_cloudbaseinit" "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python " "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\" /D 2>$null wget http://windows-1251783334 \Python;C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Scripts" & "c:\python_cloudbaseinit
cloudbase-init上纠结 如果要重装cloudbase-init,把http://windows-1251783334.cos.ap-shanghai.myqcloud.com/CLOUDBASE-INIT_INSTALL.PS1 reset= 0 actions= restart/10000 sc.exe qc cloudbase-init 8192 net user cloudbase-init /del 2>&1> $null \" 需要提醒的是: 域业务需要删掉cloudbase-init配置文件里的hostname模块(C:\Program Files\Cloudbase Solutions\Cloudbase-Init config cloudbase-init obj= LocalSystem这句命令放弃使用cloudbase-init用户,既然没用了,你在用户和组里看到cloudbase-init用户碍眼的话,执行命令 net user cloudbase-init /del 2>&1删掉它即可 如果以后要调整服务所运行的用户,那就留着,如果保持local system不调整,那就删掉cloudbase-init用户(
我发现cloudbase-init的bug,cloudbase-init自带的python和pip原本是ok的,在制作sysprep镜像后执行pip -V就报这个错 C:\Users\Administrator to create process using '"c:\python_cloudbaseinit\python.exe" "C:\Program Files\Cloudbase Solutions\Cloudbase-Init 我自己尝试过2个解决方案: 1、重装pip,1.1.2版本的cloudbase-init自带的是Python 3.6.6,更新pip最高只能到pip 21.3.1,再高就报错了 参考https://cloud.tencent.com 这个方案是我突现灵感产生的,只需cmd命令行执行这句命令即可 mklink "c:\python_cloudbaseinit" "C:\Program Files\Cloudbase Solutions\Cloudbase-Init /D 或者powershell执行 cmd.exe /c mklink "c:\python_cloudbaseinit" "C:\Program Files\Cloudbase Solutions\Cloudbase-Init
公共镜像里有cloudbase-init,它的目录里带python环境了,但是需要启用下,这样启用:#mklink创建目录链接#联公网下载创建环境变量的微软小工具#利用下载的微软小工具path设置2个环境变量 (你也可以手动搞)python.exe目录:C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\pip.exe目录:C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Scripts\#mklink创建目录链接cmd.exe /c mklink "c:\python_cloudbaseinit " "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\" /D 2>$null#联公网下载创建环境变量的微软小工具wget http \Python;C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Scripts"启用python环境后就可以用腾讯云python内网源了
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的cloudbase-init目前稳定版是1.1.2,自带python3.6.6图片开发版目前是 1.1.4.dev28,自带python3.10.7图片cloudbase-init自带python和pip,但pip有报错,需要update下,参考https://blog.csdn.net/m0_62199749 /article/details/121983517 来更新pippython.exe目录:C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python \pip.exe目录:C:\Program Files\Cloudbase Solutions\Cloudbase-Init\Python\Scripts\自己可以添加下环境变量一般情况,腾讯云windows 云服务器(或者有cloudbase-init的windows机器)不需要额外安装python,直接用cloudbase-init自带的python就行,就是需要自己update下pip。
的注册表,如果创建机器时传了userdata,而userdata代码里有写操作的代码,那你删除了cloudbase-init的注册表会导致初始化标记为0,下次开机的时候cloudbase-init会认为机器没有初始化过 存量的机器需要用户手动执行下diskpart回车san policy=onlineall回车,并手动在磁盘管理器对脱机的磁盘联机,然后重启观察 存量的机器、自定义镜像都需要自己修一下 这里要特别提一下cloudbase-init 很多家云厂商都用它,它有个配置项san_policy=OnlineAll 可以在做镜像之前加到配置文件里试一下 配置文件路径:C:\Program Files\Cloudbase Solutions\Cloudbase-Init \conf\cloudbase-init.conf 下图不是云平台官方的,也不是cloudbase-init官方的,是我自己查cloudbase-init资料调配的,cloudbase-init的特殊配置项是很多的 set_unique_boot_disk_id display_idle_timeout real_time_clock_utc volumes_to_extend san_policy 等等 参考cloudbase-init
是以本地系统帐户(LocalSystem)运行 下面的操作都以Administrator管理员身份执行 1、如果机器能访问外网,进行第2步由脚本来升级cloudbase-init到最新稳定版 如果不能访问外网 ,参考官网文档升级cloudbase-init到最新稳定版https://cloud.tencent.com/document/product/213/30000 2、把http://windowsbj powershell进程放置在了后台,如果是这种情况,除过2和3,可能还会有4、5、6等情况,具体就是看开机后在后台的powershell进程数量有多少 cloudbase-init配置文件位置: C topic=images-adding-cloudbase-init-windows cloudbase-init日志文件位置: C:\Program Files\Cloudbase Solutions \Cloudbase-Init\log\cloudbase-init.log
\conf\cloudbase-init.conf" sc.exe config cloudbase-init obj= LocalSystem 2>&1 > $null sc.exe config cloudbase-init depend= tcpip/dhcp/dnscache/Winmgmt 2>&1 > $null sc.exe failure cloudbase-init reset= 0 actions= restart/10000 2>&1 > $null sc.exe qc cloudbase-init 8192 2>&1 > $null (gwmi -class win32 \conf\cloudbase-init.conf" -Verbos -force 2>&1 > $null #(Get-Content "C:\Progra~1\Cloudb~1\Cloudbase-Init \conf\cloudbase-init.conf" -force 2>&1 > $null (Get-Content "C:\Program Files\Cloudbase Solutions\Cloudbase-Init
迁移域环境时,请保持hostname不要变,云上的cloudbase-init初始化程序默认会改hostname为内网IP下划线形式,例如下图, 图片 cloudbase-init并不是必须的组件,如果你不用设置密码 、extend系统盘volume的功能和RunInstances接口的UserData、hostname功能,一般不建议安装cloudbase-init。 cloudbase-init配置文件:C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf 如果只是单纯不想 hostname被改,其他功能还想用,那就删除cloudbase-init配置文件里hostname组件(红色划线部分) 图片 另外,如果原系统diskpart的san policy不是onlineall
黑石除外,黑石裸金属之类的windows机器不要轻易动cloudbase-init,普通cvm的windows机器继续往下看1、cloudbase-init是否可以禁用或删除? 1.1.2自定义镜像里的cloudbase-init如果是0.9.11等低版本或dev开发版,这些版本可能有如下问题比如依赖项,新版是4个,这个才1个比如运行cloudbase-init的用户,新版是本地系统帐户 reset= 0 actions= restart/10000sc.exe qc cloudbase-init 8192net user cloudbase-init /del 2>&1 > $null4 因为安装cloudbase-init会产生cloudbase-init用户,不人为干预的话,就会以前面说的这种方式运行图片所以我加了sc.exe config cloudbase-init obj= LocalSystem 这句命令放弃使用cloudbase-init用户,既然没用了,你在用户和组里看到cloudbase-init用户碍眼的话,执行命令net user cloudbase-init /del 2>&1删掉它即可如果以后要调整服务所运行的用户
禁用cloudbase-init服务后重启机器就能看到光驱config-2,双击就能看到里面的目录结构,明文代码可以记事本查看,看下代码就懂了 代码入口是C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\TencentCloudRun.ps1 TencentCloudRun.ps1→ autorun.ps1→qcloud_action.ps1 \LocalScripts\" -force $scriptPath = "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts \LocalScripts\下面,是cloudbase-init的机制,每次开机都会执行这个目录的所有脚本,当然TencentCloudRun.ps1这个脚本是很特殊的(如果机器已经初始化过,不会二次初始化 ,除非你删掉cloudbase-init的注册表记录,这样就相当于机器没有初始化过),不要改动它 check打印服务的脚本放在这个目录,每次开机即便开机计划任务有啥异常没发挥作用,cloudbase-init
UserData产品文档:https://cloud.tencent.com/document/product/213/17526UserData依赖cloudbase-init,cloudbase-init 依赖光驱,请不要禁用cloudbase-init服务或改动它、不要禁用光驱,不要删除光驱盘符,如果有安全软件,可能会拦截cloudbase-init,因为cloudbase-init通过python起作用 ,安全软件可能会认为这是风险项,因此有必要在安全软件里进行cloudbase-init的信任。 代码需要base64编码后作为一行字符串传给UserData买Windows机器的时候,以下代码粘到购买界面高级设置部分的自定义数据(userdata)里,下单后,后台会先准备机器硬件、灌入系统、开机,然后cloudbase-init 服务启动、cloudbase-init执行完毕,整个过程需要时间,耐心等待几分钟再登录,如果操之过急,会报用户名密码错误或干脆就登录不了。