Ansible 批量管理Windows Server服务器
Ansible批量管理Windows Server
Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具, 它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端 , 它使用SSH来和节点进行通信 Ansible基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作
ansible命令参数
anisble命令语法: ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数]
ansible详细参数:
-v,–verbose # 详细模式,如果命令执行成功,输出详细的结果 (-vv -vvv -vvvv)
-i PATH, -inventory=PATH # 指定 host 文件的路径,默认是在 /etc/ansible/hosts
-f NUM,-forks=NUM # NUM 是指定一个整数,默认是 5 ,指定 fork 开启同步进程的个数。
-m NAME,-module-name=NAME # 指定使用的 module 名称,默认使用 command模块
-a,MODULE_ARGS # 指定 module 模块的参数
-k,-ask-pass # 提示输入 ssh 的密码,而不是使用基于 ssh 的密钥认证
-s, sudo # 指定使用 sudo 获得 root 权限
-K,-ask-sudo-pass # 提示输入 sudo 密码,与 -sudo 一起使用
-u USERNAME,-user=USERNAME # 指定移动端的执行用户
-C,–check # 测试此命令执行会改变什么内容,不会真正的去执行
ansible-doc详细参数:
ansible-doc -l # 列出所有的模块列表
ansible-doc -s 模块名 # 查看指定模块的参数
环境要求:Win Server的PowerShell版本需要满足3.0+ , Management Framework版本需要3.0+
使用get-host命令查看powershell版本

使用winrm enumerate winrm/config/listener命令查看状态

使用如下命令配置winrm服务
winrm quickconfig
winrm set winrm/config/service/auth '@{Basic="true"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'

Windows Server 2016 默认开启以上操作,无需配置
发布机必须要linux系统,上面需要安装ansible pip 和python的相应模块
yum install ansible epel-release python-pip paramiko PyYAML Jinja2 httplib2 six -y
编辑主机文件用于管理windows server
vim /etc/ansible/hosts
手动添加主机内容 , 配置文件是YAML格式,所以缩进非常严格,不要用tab,要使用空格.
主机模板有两种
1. 主机IP ansible_user="用户名" ansible_password="密码" ansible_port=5985 ansible_connection="winrm" ansible_winrm_server_cert_validation=ignore

all:
children:
windows: #主机组
hosts:
10.123.102.180: #主机
10.123.102.181:
vars: #此变量只在windows主机组里生效,windows2主机组需要重新定义
ansible_user: Administrator
ansible_password: Admin~123
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_transport: ntlm
ansible_winrm_server_cert_validation: ignore
windows2:
hosts:
10.123.102.207:
10.123.102.208:
vars:
ansible_user: Administrator
ansible_password: Admin~123
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_transport: ntlm
ansible_winrm_server_cert_validation: ignore

测试:
ansible 主机组或单个主机IP -i / etc/ansible/hosts -m win_ping
-i # 指定 host 文件的路径,默认是在 /etc/ansible/hosts 定义的主机清单写在该文件下 , 那么可以不加 -i
-m # 指定使用的ping模块
下面是windows常用模块
获取window主机信息:
ansible windows -m setup
执行ps脚本:
ansible windows -m script -a "E://test.ps1"
查看文件状态:
ansible windows -m win_stat -a "path='C://Windows/win.ini'"
结束程序:
ansible windows-m raw -a "taskkill /F /IM QQ.exe /T"
如果window主机传回来的中文是乱码,则修改ansible控制机上的python编码:
sed -i "s#tdout_buffer.append(stdout)#tdout_buffer.append(stdout.decode('gbk').encode('utf-8'))#g" /usr/lib/python2.6/site-packages/winrm/protocol.py
sed -i "s#stderr_buffer.append(stderr)#stderr_buffer.append(stderr.decode('gbk').encode('utf-8'))#g" /usr/lib/python2.6/site-packages/winrm/protocol.py
指定配置文件获取win网卡信息
ansible -i win_hosts windows -m raw -a "ipconfig"
使用默认的配置文件获取网卡信息
ansible windows -m raw -a "ipconfig"
拷贝文件到远程Windows主机
ansible windows -m win_copy -a 'src=/etc/passwd dest=F:\file\passwd'
ansible windows -m win_copy -a "src=/usr/local/src/PayChannels20.35.zip dest=D:\Tomcat8630\webapps\PayChannels20.35.zip"
ansible windows -m win_copy -a "src=/usr/local/src/SupplierPay.zip dest=D:\SupplierPay.zip
将.zip解压到远程Windows主机,远程主机上必须存在需要解压的源文件
ansible windows -m win_unzip -a"creates=no src=D:\Tomcat8620\webapps\PayChannels-8630.zip dest=D:\Tomcat8620\webapps"
解压到D盘:ansible windows -m win_unzip -a"creates=no src=D:\SupplierPay.zip dest=D:"
重启远程windows主机的服务
ansible windows -m win_service -a "name=Tomcat8630 state=restarted"
重启node.js(.bat命令)
ansible windows -m win_command -a "chdir=D:\SupplierPay .\http_restart.bat"
执行win_command模块命令
启动redis
ansible windows -m win_command -a "chdir=D:\Redis server-start.bat "
ansible win -m win_command -a "chdir=C:\ a.bat "
ps:"chdir=C:\ a.bat " 之前有空格
删除文件或者目录
ansible windows -m win_file -a "dest=D:\Tomcat8630\log\ state=absent"
ansible windows -m win_file -a "dest=D:\Tomcat8630\logs\ state=absent"
创建用户
ansible windows -m win_user -a "name=aa passwd=123456"
创建一个名叫user1的管理员用户,要求能够远程访问
ansible windows -m win_user -a "name=user1 password=123 groups='Administrators,Remote Desktop Users'"
重启的第一种方式
ansible windows -m win_shell -a "shutdown -r -t 1"
重启的第二种方式
ansible windows -m win_reboot
获取ip地址
ansible windows -m raw -a "ipconfig"
获取身份
ansible windows -m win_command -a "whoami"
移动文件
ansible windows -m raw -a "cmd /c 'move /y D:\Ansible\product\DBFPlus.exe D:\Ansible\back\'"
移动文件目标端也需要制定到文件,而不能只制定到所在目录位置
ansible windows -m raw -a "cmd /c 'move /y D:\Ansible\product D:\Ansible\back'"
移动文件夹源端和目标端目录都不能带反斜杠/。且将源的整个目录移到目的端目录里。
创建文件夹
ansible windows -m raw -a "md d:\Ansible\justin"
删除文件或目录
ansible windows -m win_file -a "path=d:\Ansible\justin state=absent"
结束某程序
ansible windows -m raw -a "taskkill /F /IM snmp.exe /T"
文件传输
ansible windows -m win_copy -a 'src=/app/svn/127_Client/118919/zjcfg.zip dest=D:\soft\'
修改密码
ansible windows -m win_user -a "name=Administrator update_password=always password="Admin~123""
Ansible 批量管理Windows Server服务器的更多相关文章
- 使用ansible批量管理远程服务器
使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全 ...
- Linux(11):期中架构(3)--- SSH远程管理服务 & ansible 批量管理服务
SSH远程管理服务 1. 远程管理服务知识介绍 # 1.1 SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Worki ...
- ansible批量管理服务 上
1 ansible简介 1.1 ansible批量管理服务概述 (1)是基于python语言开发的自动化软件工具(2)是基于SSH远程管理服务实现远程主机批量管理(3)并行管理,部署简单,应用也简单方 ...
- Windows Server 服务器安全配置
Windows Server 服务器安全配置 好吧,我标题党了.我只了解一些基本的安全配置.如果你是大湿,请绕道或者给予我严厉的批评让我进步谢谢. 编辑这篇文章用的编辑器编辑的,当我单击查看的时候发现 ...
- 六.ansible批量管理服务
期中集群架构-第六章-ansible批量管理服务介绍====================================================================== 01. ...
- windows server服务器上mysql远程连接失败的坑
windows server服务器上mysql远程连接失败的坑 背景:趁这阿里云活动,和朋友合伙买了个服务器,最坑的是没想到他买的是windows Server的,反正便宜,将就着用吧,自己装好了wa ...
- windows server 服务器添加免费域名证书的方法(Let's Encrypt)
在 windows server 服务器上可以通过 win-acme工具添加ssl 1.首先下载工具 https://github.com/PKISharp/win-acme/releases 最新版 ...
- 使用Windows系统远程连接Windows server服务器
点击开始菜单->运行 (或者 windows+R) ,输入"mstsc"命令, 打开远程桌面连接对话框,输入你要连接的Windows server服务器的公网IP. 点击 ...
- 六. jenkins部署springboot项目(3)--windows环境--远程windows server服务器
前提:jenkins服务器和windows server服务器不在一台机器上 对于jenkins服务器上编译好的jar或war包如何推送到windows server服务器上. 参照网上的,在wind ...
随机推荐
- 把.Net开发环境迁移到Linux上去
.Net Core发布之前,多年来,.Net程序员的开发环境都在Windows上. 三街第一帅的我,虽然上班的8小时一直在windows上撸C#,但是下班时间一般都在搞其他的乱七八糟的东西,比如写写小 ...
- 2017 ACM Jordanian Collegiate Programming Contest
A. Chrome Tabs 当$n=1$时答案为$0$,当$k=1$或$k=n$时答案为$1$,否则答案为$2$. #include<cstdio> int T,n,k; int mai ...
- mysql安装了半天参考了文章搞定了
https://blog.csdn.net/yelllowcong/article/details/79641313 mysql -uroot -pbrucelee 总结下: 1.安装时注意具体的路径 ...
- 04_ switch 练习 _ 你及格了吗
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- layer过去的时间不能选择,只能选择未来的时间 LayUI中的时间日期控件,设置时间范围,
默认Layui中的时间控件显示如下: 我当时系统时间是2018-06-07, 我需要做的是2018-06-07之后过去的时间不能选择 <p><span>时间范围:</sp ...
- Viterbi algorithm
HMM(隐马尔可夫模型)是用来描述隐含未知参数的统计模型,是一个关于时序的概率模型,它描述了一个由隐藏的马尔可夫链生成状态序列,再由状态序列生成观测序列的过程.其中,状态之间的转换以及观测序列和状态序 ...
- reference to 'map' is ambiguous|
reference to 'map' is ambiguous| c++编译出现此错误 表明定义的变量名字map和库函数map冲突而产生歧义
- input 在 2 和 3 上的区别
2 和 3 上面 在 input 的区别 1 2 3 name = raw_input('请输入用户名:')#python2.7的用法 name = input('请输入用户名:')#python3 ...
- 严重:one or more listeners failed. Full details will be found in the appropriate container log file
one or more listeners failed. Full details will be found in the appropriate container log file 这句话 ...
- VUE-007-通过路由 router.push 传递 query 参数(路由 name 识别,请求链接显示参数传递)
在前端页面表单列表修改时,经常需要在页面切换的时候,传递需要修改的表单内容,通常可通过路由进行表单参数的传递. 首先,配置页面跳转路由.在 router/index.js 中配置相应的页面跳转路由,如 ...
