Ansible批量管理Windows服务器,winrm配置

本文详细介绍了如何使用Ansible这款开源自动化运维工具来管理Windows服务器,包括配置Ansible、Windows的WinRM服务、防火墙规则,以及执行文件传输、账号管理、脚本执行等自动化任务。
摘要由CSDN通过智能技术生成

(一)Ansible简介

Ansible 是一款轻量级的开源的自动化运维工具,支持 linux 和 windows(只支持 client,并且部分模块),利用 Ansible 可以简单批量的配置系统,安装软件,或者更高级的运维任务(比如滚动升级)。

Ansible 之类的运维工具对运维工作进行抽象及规范,能够极大的降低运维难度。本文只是为了演示如何通过 ansible 的各模块对 windows 进行传输文件,管理账号,执行脚本等批量自动化管理工作。

(二)注意事项

Ansible 只支持 Powershell 4.0 及以上(用 3.0 会报 Process is terminated due to StackOverflowException.),所以要求最低要求 Win7,或者 Win server 2008,详见
《Ansible Doc host requirements》

配置winrm之前检查系统版本,以及powershell版本。
需要:Microsoft .NET Framework 4.5以上,
powershell5.0(Windows Management Framework 5.0 )

我建议大家使用5.0以上版本,4.0版本官网上已经找不到了。下载地址见另一篇文章《Ansible配置成功但报错Process is terminated due to StackOverflowException问题记录》

注意: 先安装.NET Framework 4.5 ,然后安装powershell4.0,安装完成之后重启windows服务器

(三)winrm配置

Windows客户端配置winrm,开启powershell远程管理权限

管理员权限打开powershell终端,按如下步骤执行命令:

① 查看powershell执行策略

get-executionpolicy

在这里插入图片描述

② 更改powershell执行策略为remotesigned

set-executionpolicy remotesigned

在这里插入图片描述

③ 配置winrm service并启动服务

winrm quickconfig

在这里插入图片描述

④ 查看winrm service启动监听状态

我这里之前已经配置过了,如果第一次配记得这5步执行完之后再运行此命令检查一下是否开启

winrm enumerate winrm/config/listener

在这里插入图片描述

⑤ 修改winrm配置,启用远程连接认证

winrm set winrm/config/service/auth '@{Basic="true"}'

winrm set winrm/config/service '@{AllowUnencrypted="true"}'

在这里插入图片描述

(四)Windows客户端防火墙设置

添加防火墙信任规则,允许5985端口通过

① 新建入站规则

打开防火墙高级配置,选择入站规则,在点击新建规则
在这里插入图片描述

②填写特定信任端口5985

在这里插入图片描述

③ 填写新建规则名称

在这里插入图片描述

(五) Ansible服务端配置和测试管理Windows服务器

① 添加windows客户端连接信息

编辑/etc/ansible/hosts,添加客户端主机信息

别名 ansible_host=192.168.3.159 ansible_ssh_user="Administrator" ansible_ssh_pass="XXX"
ansible_ssh_port=5985 ansible_connection="winrm" 
ansible_winrm_server_cert_validation=ignore

也可以不起别名:(那么下图windows组里就可以写ip了)

192.168.3.159 ansible_ssh_user="Administrator" ansible_ssh_pass="XXX"
ansible_ssh_port=5985 ansible_connection="winrm" 
ansible_winrm_server_cert_validation=ignore

在这里插入图片描述

② ping测试windows客户主机组是否存活

ansible windows -m win_ping -u Administrator

在这里插入图片描述
单独ping某个主机 (我在配置文件/etc/ansible/hosts中,给主机起了别名,就可以ping别名了)

ansible haha3 -m win_ping -u Administrator

在这里插入图片描述

③ 创建文件夹

ansible windows -m win_file -a 'dest=C:/mikasa8 state=directory' -u Administrator

在这里插入图片描述

查看C盘目录下已经有了 mikasa8 文件夹
在这里插入图片描述

④ 传输文件到windows组中的所有主机

ansible windows -m win_copy -a 'src=/etc/hosts dest=c:\mikasa8\hosts.txt' -u Administrator

在这里插入图片描述

⑤ 删除主机 haha1 中的某个目录

只想对某个主机生效的话,将windows改为ip或是自己定义的别名就可以了(如果定义了别名写ip没用)

ansible haha1 -m win_file -a 'dest=c:\mikasa8 state=absent' -u Administrator

在这里插入图片描述

⑥ 批量远程执行远程执行 cmd 命令

ansible windows -m win_shell -a 'ipconfig' -u Administrator

⑦ 远程批量重启windows服务器

ansible windows -m win_reboot -u Administrator
ansible windows -m win_shell -a 'shutdown -r -t 0' -u Administrator

⑧ 其他常用命令

# 重启远程windows主机的服务
ansible windows -m win_service -a 'name=httpd state=restarted' -u Administrator

# 获取某个主机的信息:
ansible haha1 -m setup -u Administrator

# 给192.168.3.160(haha3)创建用户
ansible haha3 -m win_user -a "name=haha3 passwd=123456" -u Administrator

# 同时删除 windows 组中所有主机的某个文件
ansible windows -m win_file -a 'dest=c:\mikasa8\hosts.txt state=absent' -u Administrator

# 批量执行ps脚本:
ansible windows -m script -a "C://test.ps1" -u Administrator

# 批量修改密码
ansible windows -m win_user -a "name=Administrator update_password=always password="Admin123456""
-u Administrator

# 获取身份
ansible windows -m win_command -a "whoami" -u Administrator

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值