You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Windows虚拟机配置开机自动运行Ansible playbook方案问询

实现方案

要同时满足Azure Windows虚拟机供应阶段执行Ansible playbook、重启后自动重跑的需求,组合使用Azure原生功能加Windows系统配置即可实现,无需额外第三方服务:

1. 供应阶段触发playbook执行

使用Azure自带的*自定义脚本扩展(Custom Script Extension for Windows)*实现部署阶段的自动触发,该功能是Azure虚拟机服务的原生扩展,不需要独立开通:

  • 提前准备好Windows环境的Ansible运行依赖:如果是playbook在VM本地执行,提前在VM镜像中预装ansible、把playbook文件预置到指定路径;如果是用中心Ansible节点推送执行,提前在镜像中配置好WinRM服务、放行对应防火墙端口、配置Ansible管控所需的管理员权限。
  • 部署VM时在自定义脚本扩展中填入对应触发命令:
    • 本地执行场景命令示例:ansible-playbook C:\ansible\playbook\init.yml > C:\ansible\run_logs\first_run.log 2>&1
    • 中心节点推送场景:脚本内调用回调接口通知你的Ansible管控节点,对当前新创建的VM执行playbook即可。
  • 如果使用ARM模板、Bicep、Terraform等基础设施即代码工具部署,可以直接把自定义脚本扩展的配置写入部署代码,实现全自动化。

2. 配置重启后自动执行playbook

直接在Windows系统中配置开机计划任务即可,该配置可以直接放到供应阶段的自定义脚本中自动完成,无需手动登录VM操作:

  • 在自定义脚本中追加创建计划任务的命令,示例如下:
    schtasks /create /tn "Ansible Playbook Auto Run" /tr "ansible-playbook C:\ansible\playbook\init.yml >> C:\ansible\run_logs\reboot_run.log 2>&1" /sc onstart /ru SYSTEM /rl highest /f
  • 上述命令创建的计划任务会在系统每次启动时,以系统最高权限自动执行指定playbook,无需用户登录就能正常运行。
注意事项
  • 中心Ansible节点推送的场景下,需要确保VM重启后网络可达Ansible节点,也可以配置VM启动后主动上报IP/主机信息到Ansible节点触发执行,避免IP变动导致推送失败。
  • 建议所有执行操作都留存日志到本地指定路径,方便后续排查执行失败的问题。

内容的提问来源于stack exchange,提问作者mohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:27:03