兄弟们,干IT的都知道,公司里Windows电脑一多,运维就变成体力活。昨天新来了20个实习生,每人要装Office、Chrome、7-Zip、VPN客户端,还得把SMBv1关了、密码策略改严格点。以前咋办?要么拿U盘一个个跑,要么搞个域策略慢慢等。几百台机器,光配安全基线就能把人搞疯。
今天咱聊聊怎么用Ansible这个“遥控器”搞定这事儿。别一听“Ansible”就觉得高大上,其实它就是个指挥中心,你写个剧本(Playbook),它就能远程指挥所有Windows电脑干活,而且不需要在被控电脑上装任何客户端——它走的是WinRM,相当于Windows自带的“远程管理通道”。
先搭个“指挥中心”
你得找一台Linux或者Windows的机器作为控制节点,装上Ansible。然后让所有Windows电脑打开WinRM服务。这一步其实很简单:在每台Windows上跑个PowerShell脚本,把WinRM监听端口5985(HTTP)或5986(HTTPS)打开就行。你可能会问:“这不是还得手动跑脚本吗?”别急,你可以先找一台“样板机”配好,然后导出一个组策略或通过系统镜像批量下发。或者用Ansible的winrm模块在首次连接时配置——前提是你要有管理员账户。
打个比方:WinRM就像Windows的“门铃”,Ansible按门铃,Windows就得开门听指令。
写个安装软件的“剧本”
Ansible里做Windows软件安装,最爽的模块是win_chocolatey。Chocolatey就是Windows版的yum或apt,一个命令行包管理器。比如要装7-Zip,Playbook里写:
- name: 安装7-Zip
win_chocolatey:
name: 7zip
state: present
跑一下,所有电脑上7-Zip就装好了,静默安装,用户甚至不知道。如果公司内部有安全策略,不让连外网,你可以搭一个内部Chocolatey源,把软件包放进去,一样用。
除了Chocolatey,还有win_package模块,适合安装那种exe/msi,比如:
- name: 安装企业版Office
win_package:
path: '\\fileserver\soft\office2019.iso'
arguments: '/adminfile office.msp'
state: present
配置安全基线,就像改注册表开关
安全基线那些事儿,比如禁用SMBv1、关闭445端口、设置密码长度、开启防火墙日志……本质上都是改注册表或服务。Ansible对应的模块有win_regedit、win_service、win_firewall。
举个例子,禁用SMBv1:
- name: 禁用SMBv1服务
win_service:
name: lanmanserver
state: stopped
start_mode: disabled
- name: 删除SMBv1注册表键
win_regedit:
path: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
name: SMB1
data: 0
type: dword
state: present
再比如强制要求密码长度至少10位:
- name: 设置密码长度最小值为10
win_security_policy:
name: MinimumPasswordLength
value: 10
这些操作幂等性很好——跑一次是这效果,跑一百次还是这效果,不会重复设置。你可以在新机器入职时跑一遍,也可以定期全部刷新一遍。
真实场景:新员工入职自动化
想象一下:HR发来10个新员工名字和电脑MAC地址,你用Excel登记后,Ansible自动完成以下动作:
- 把电脑加入AD域(如果你有域环境)
- 安装标准软件包(Office、浏览器、企业软件)
- 配置安全基线(关闭RDP不安全认证、开启Windows Defender实时保护)
- 推送公司内部证书或WiFi配置
- 创建本地管理员账号(如果不用域)
整个过程你只需要维护一份Playbook,跑一条ansible-playbook -i hosts.ini new_employee.yml,喝杯咖啡,搞定。
踩坑提醒
- WinRM认证:建议用HTTPS + 自签名证书,或者用Kerberos。别裸奔HTTP,安全基线自己就过不了。
- 连接问题:如果机器在VPN内网,需要提前确保网络可达。可以先在Playbook里加个
wait_for模块等待WinRM端口开放。 - 挂起的重启:有些软件安装或配置需要重启,Ansible可以控制是否自动重启,用
win_reboot模块,并等待机器重新上线。
总结
一句话:Ansible让Windows运维从“搬砖”变成“写剧本”。几百台机器,你只需要维护几个YAML文件,想装啥就装啥,想锁啥就锁啥。而且你还能把这个剧本放到Git里做版本管理,新人来了也敢让他跑。
当然,具体怎么搞,还有更多细节——比如如何批量初始化WinRM、如何用Ansible Tower做可视化派发、如何与SCCM配合。想了解更完整的方案?更多方案可访问 itfangan.com,里面有不少现成的实战案例和脚本,直接拿来用就行。
兄弟们,别再用U盘一个个装了,该换个姿势爽一把了。