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服务器的更多相关文章

  1. 使用ansible批量管理远程服务器

    使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全 ...

  2. Linux(11):期中架构(3)--- SSH远程管理服务 & ansible 批量管理服务

    SSH远程管理服务 1. 远程管理服务知识介绍 # 1.1 SSH远程登录服务介绍说明 SSH是Secure Shell Protocol的简写,由 IETF 网络工作小组(Network Worki ...

  3. ansible批量管理服务 上

    1 ansible简介 1.1 ansible批量管理服务概述 (1)是基于python语言开发的自动化软件工具(2)是基于SSH远程管理服务实现远程主机批量管理(3)并行管理,部署简单,应用也简单方 ...

  4. Windows Server 服务器安全配置

    Windows Server 服务器安全配置 好吧,我标题党了.我只了解一些基本的安全配置.如果你是大湿,请绕道或者给予我严厉的批评让我进步谢谢. 编辑这篇文章用的编辑器编辑的,当我单击查看的时候发现 ...

  5. 六.ansible批量管理服务

    期中集群架构-第六章-ansible批量管理服务介绍====================================================================== 01. ...

  6. windows server服务器上mysql远程连接失败的坑

    windows server服务器上mysql远程连接失败的坑 背景:趁这阿里云活动,和朋友合伙买了个服务器,最坑的是没想到他买的是windows Server的,反正便宜,将就着用吧,自己装好了wa ...

  7. windows server 服务器添加免费域名证书的方法(Let's Encrypt)

    在 windows server 服务器上可以通过 win-acme工具添加ssl 1.首先下载工具 https://github.com/PKISharp/win-acme/releases 最新版 ...

  8. 使用Windows系统远程连接Windows server服务器

    点击开始菜单->运行 (或者 windows+R) ,输入"mstsc"命令,  打开远程桌面连接对话框,输入你要连接的Windows server服务器的公网IP.  点击 ...

  9. 六. jenkins部署springboot项目(3)--windows环境--远程windows server服务器

    前提:jenkins服务器和windows server服务器不在一台机器上 对于jenkins服务器上编译好的jar或war包如何推送到windows server服务器上. 参照网上的,在wind ...

随机推荐

  1. 网页布局之grid

    学习网格布局时,你可能会在网络上看到很多文章,内容不同,属性不同,真是让人摸不着头脑,到底哪个才是正确的?看了本篇文章,我想你会豁然开朗.比如,一会儿用grid-rows,一会儿用grid-defin ...

  2. Java8新特性----Stream

    Stream Stream 是用函数式编程方式在集合类上进行复杂操作的工具. 一)常用的流操作 惰性求值方法:只描述Stream,最终不产生新集合的方法(返回的还是Stream). 及早求值方法:最终 ...

  3. [BZOJ1984][Luogu4315]月下“毛景树”

    题目大意 给出一棵 n 个点的无根树,待边权,要求维护一下操作: 修改某条边的边权 修改点 u 到点 v 路径上所有边的边权 点 u 到点 v 路径上所有边的边权加上某个值 查询点 u 到点 v 路径 ...

  4. 层居中绝对定位的div的居中方法,下面的写法兼容IE系列浏览器和火狐浏览器

    详细解说,直接看样式:#dingwei{padding:10px;background-color:#003300;color:#FFFFFF; width:600px;height:300px; d ...

  5. laravel之构造器操作数据库

    使用构造器来查询的优点是可以方式sql注入 1.插入 2.修改数据库 3.删除 4.查询

  6. laravel5.5+vue+Element-ui+vux环境搭建(webpack+laravelMix)(转)

    本教程例子可到GitHub 上下载 Laravel5.5-Vue-Element-ui-Vux 1.laravel5.5安装,详情请参考: https://laravelacademy.org/pos ...

  7. ecshop 2.x 3.x sql injection/rce payload

    首先,感谢ringk3y的分析:http://ringk3y.com/2018/08/31/ec ... %E6%89%A7%E8%A1%8C/ 大家跟一遍代码基本上都能弄明白漏洞的原理,整个漏洞的构 ...

  8. mongodb聚合命令

    聚合aggregate 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成管道,可以对每个阶段的管道进行分组.过滤等功能,然后经过一系列的处理,输出相应的 ...

  9. 2019.4.10 初识puppeteer

    注:原地址:https://www.cnblogs.com/paris-test/p/9705075.html 一.Puppeteer 介绍 Puppeteer 翻译是操纵木偶的人,利用这个工具,我们 ...

  10. 一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)

           关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂.今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获. 一.核心功能 ‘r’ ...