[转帖]Ansible管理windows集群

http://www.cnblogs.com/Dev0ps/p/10026908.html

写的挺好的 我关注点还是不够好呢

最近公司新项目需要安装400+windows server 2012系统的工作站,想着怎么能像linux下运用ansible批量管理,linux就很简单了有ssh服务

但是下却没这么简单,但还是有办法那就是Powershell。

Ansible可用于管理Windows集群,不过管理节点需要部署在Linux机器上,而且需要预装python winrm模块。

同时,Windows机器上的powershell版本需要满足3.0+,且Management Framework也需要满足3.0+版本。

一、首先在Powershell窗口执行get-host命令查看版本

二、配置winrm服务

Windows上winrm服务默认是未启用的,使用如下命令可以查看状态。


1

winrm enumerate winrm/config/listener

使用如下命令配置winrm服务


1

2

3

winrm quickconfig

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

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

至此,windows主机的配置就完成了,接下来我们配置linux管理节点进行验证。
三、Linux管理节点配置

1.然后需要使用pip安装pywinrm模块。如果没有安装pip,则先参考python分类博文安装并配置pip。


1

[[email protected]-server ansible]# pip install "pywinrm>=0.2.2"

2.配置hosts文件


1

2

[wind]

192.168.247.151 ansible_ssh_user="Administrator" ansible_ssh_pass="NPS#2018" ansible_ssh_port=5985 ansible_connection="winrm" ansible_winrm_server_cert_validation=ignore

3.然后使用如下命令进行验证,我们看到,此时可以使用win_ping模块连到之前配置的windows主机上了。


1

2

3

4

5

[[email protected]-server ansible]# ansible wind -m win_ping

192.168.247.151 | SUCCESS => {

    "changed": false,

    "ping""pong"

}

4.远程推送文件


1

2

3

4

5

6

7

8

9

10

[[email protected]-server ansible]# ansible wind -m win_copy -a ‘src=/etc/ansible/PreventCopy.jar dest=C:\‘

192.168.247.151 | SUCCESS => {

    "changed": true,

    "checksum""c3da689273ec80f8072573b73dd87d3bc68e0395",

    "dest""‘C:\\PreventCopy.jar‘",

    "operation""file_copy",

    "original_basename""PreventCopy.jar",

    "size"62463090,

    "src""/etc/ansible/PreventCopy.jar"

}

5.删除远程文件


1

2

3

4

[[email protected]-server ansible]# ansible wind -m win_file -a "path=C:\PreventCopy.jar state=absent"

192.168.247.151 | SUCCESS => {

    "changed": true

}

更多模块及详细功能介绍:https://docs.ansible.com/ansible/latest/modules/list_of_windows_modules.html除win开头的模块外,scripts,raw,slurp,setup模块在Windows 下也可正常使用。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

Windows下可用模块虽不及Linux丰富,但基础功能均包括在内,以下几个模块为常用模块:

win_acl (E) —设置文件/目录属主属组权限;

win_copy—拷贝文件到远程Windows主机;

win_file —创建,删除文件或目录;

win_lineinfile—匹配替换文件内容;

win_package (E) —安装/卸载本地或网络软件包;

win_ping —Windows系统下的ping模块,常用来测试主机是否存活;

win_service—管理Windows Services服务;

win_user —管理Windows本地用户。

window的通信检测为:ansible testwin -m win_ping

复制文件到window:

ansible windows -m win_copy -"src=/etc/passwd dest=E:filepasswd"

删除文件:

ansible windows -m win_file -"path=E:filepasswd state=absent"

新增用户:

ansible windows -m win_user -"name=stanley [email protected] groups=Administrators"

重启服务:

ansible windows -m win_service -"name=spooler state=restarted"

获取window主机信息:

ansible windows -m setup

执行ps脚本:

ansible windows -m script -"E://test.ps1"

获取IP地址:

ansible windows -m win_command -"ipconfig"

查看文件状态:

ansible windows -m win_stat -"path=‘C://Windows/win.ini‘"

移动文件:

ansible windows -m raw -"cmd /c ‘move /y d:\issue c:\issue‘"

创建文件夹:

ansible windows -m raw -"mkdir d:\tst"

重启:

ansible windows -m win_reboot

结束程序:

ansible windows-m raw -"taskkill /F /IM QQ.exe /T"

如果window主机传回来的中文是乱码,则修改ansible控制机上的python编码:

sed -"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 -"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 -"ipconfig"

 

使用默认的配置文件获取网卡信息

ansible windows -m raw -"ipconfig"

 

拷贝文件到远程Windows主机

ansible windows -m win_copy -‘src=/etc/passwd dest=F:\file\passwd‘

 

ansible windows -m win_copy -"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 -"name=Tomcat8630 state=restarted"

重启node.js(.bat命令)

ansible windows -m win_command -"chdir=D:\SupplierPay .\http_restart.bat"

执行win_command模块命令

启动redis

ansible windows -m win_command -"chdir=D:\Redis server-start.bat "

ansible win -m win_command -"chdir=C:\ a.bat "

ps:"chdir=C:\ a.bat " 之前有空格

删除文件或者目录

ansible windows -m win_file -"dest=D:\Tomcat8630\log\ state=absent"

ansible windows -m win_file -"dest=D:\Tomcat8630\logs\ state=absent"

 

创建用户

ansible windows -m win_user -"name=aa passwd=123456"

 

创建一个名叫user1的管理员用户,要求能够远程访问

ansible windows -m win_user -"name=user1 password=123 groups=‘Administrators,Remote Desktop Users‘"

 

重启的第一种方式

ansible windows -m win_shell -"shutdown -r -t 1"

重启的第二种方式

ansible windows -m win_reboot

获取ip地址

ansible windows -m raw -"ipconfig"

获取身份

ansible windows -m win_command -"whoami"

移动文件

ansible windows -m raw -"cmd /c ‘move /y D:\Ansible\product\DBFPlus.exe D:\Ansible\back\‘"

移动文件目标端也需要制定到文件,而不能只制定到所在目录位置

ansible windows -m raw -"cmd /c ‘move /y D:\Ansible\product D:\Ansible\back‘"

移动文件夹源端和目标端目录都不能带反斜杠/。且将源的整个目录移到目的端目录里。

创建文件夹

ansible windows -m raw -"md d:\Ansible\justin"

删除文件或目录

ansible windows -m win_file -"path=d:\Ansible\justin state=absent"

结束某程序

ansible windows -m raw -"taskkill /F /IM snmp.exe /T"

文件传输

ansible windows -m win_copy -‘src=/app/svn/127_Client/118919/zjcfg.zip dest=D:\soft\‘

目标路径不能含关键词ansible,否则提示无效路径,源使用反斜杠结果将递归传输目录下所有文件,源不一反斜杠结尾将整个目录传输到目标目录下。

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/10729841.html

时间: 2024-10-08 03:29:56

[转帖]Ansible管理windows集群的相关文章

使用Chef管理windows集群 | 运维自动化工具

但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半天时间.虽然你编写了大量的shell(或python,perl)脚本来实现各种自动化场景,但最后会发现你又陷入了脚本的汪洋大海之中,管理和维护这么多的脚本的成本也不小.你需要一款基础设施自动化工具,希望它能具有以下功能. 1批量执行 这个不多说了吧,试想要为每一台机器打补丁的情形吧. 2任务编排 现

使用Chef管理windows集群

但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半天时间.虽然你编写了大量的shell(或python,perl)脚本来实现各种自动化场景,但最后会发现你又陷入了脚本的汪洋大海之中,管理和维护这么多的脚本的成本也不小.你需要一款基础设施自动化工具,希望它能具有以下功能. 批量执行.这个不多说了吧,试想要为每一台机器打补丁的情形吧. 任务编排.现在稍

如何在本地数据中心安装Service Fabric for Windows集群

概述 首先本文只是对官方文档(中文,英文)的一个提炼,详细的安装说明还请仔细阅读官方文档. 虽然Service Fabric的官方名称往往被加上Azure,但是实际上(估计很多人不知道)Service Fabric可以安装到本地数据中心或者任意公有云上,这不官方文档就有一章专门讲如何安装到AWS的内容. 所以现在为了区分,一般把在Azure上提供的开箱即用的PaaS称之为Azure Service Fabric,而把本地安装的称之为Service Fabric Standalone. 同时,Se

Hadoop集群管理--保证集群平稳地运行

本篇介绍为了保证Hadoop集群平稳地运行,需要深入掌握的知识,以及一些管理监控的手段,日常维护的工作. HDFS 永久性数据结构 对于管理员来说,深入了解namenode,辅助namecode和datanode等HDFS组件如何在磁盘上组织永久性数据非常重要. 洞悉各文件的用法有助于进行故障诊断和故障检出. namenode的目录结构 namenode被格式化后,将在${dfs.namenode.name.dir}/current 目录下,产生如下的目录结构:VERSION.edits.fsi

从单机到集群会话的管理之集群模式二(更大的集群)

<从单机到集群会话的管理之集群模式一>中讲到的全节点复制的网络流量随节点数量增加呈平方趋势增长,也正是因为这个因素导致无法构建较大规模的集群,为了使集群节点能更加大,首要解决的就是数据复制时流量增长的问题,下面将介绍另外一种会话管理方式,每个会话只会有一个备份,它使会话备份的网络流量随节点数量的增加呈线性趋势增长,大大减少了网络流量和逻辑操作,可构建较大的集群. 下面看看这种方式具体的工作机制,集群一般是通过负载均衡对外提供整体服务,所有节点被隐藏在后端组成一个整体.前面各种模式的实现都无需负

Oracle 11g 管理Oracle 集群

管理Oracle 集群 命令行工具 –crsctl管理集群相关的操作: -启动和关闭Oracle集群 -启用和禁用Oracle集群后台进程 -注册集群资源 -srvctl 管理Oracle 资源相关操作 -启动和关闭数据库实例和服务(dbdao.com oracle 11g OCM培训) 在Oracle Grid安装的home路径下的命令行工具crsctl和srvctl用来管理Oracle集群.使用crsctl可以监控和管理任何集群节点的集群组件和资源.srvctl工具提供了类似的功能,来监控和

Hadoop系列之(三):使用Cloudera部署,管理Hadoop集群

1. Cloudera介绍 Hadoop是一个开源项目,Cloudera对Hadoop进行了商业化,简化了安装过程,并对hadoop做了一些封装. 根据使用的需要,Hadoop集群要安装很多的组件,一个一个安装配置起来比较麻烦,还要考虑HA,监控等. 使用Cloudera可以很简单的部署集群,安装需要的组件,并且可以监控和管理集群. CDH是Cloudera公司的发行版,包含Hadoop,Spark,Hive,Hbase和一些工具等. Cloudera有两个版本: Cloudera Expres

Oracle数据库精讲课程之Rac管理(集群组件、性能监控及调整、节点管理、备份和恢复)

对这个课程有兴趣的朋友可以加我的QQ2059055336和我联系 本课程主要是介绍Oracle RAC体系结构与工作机制,了解并掌握RAC数据库下的相关技术,如:cache Fusion. Failover.load balance.FAN.OCR和Voting disk等,通过VMWARE虚拟环境,实践演练RAC数据库的安装部署.RAC数据库日常性能监控.备份和恢复.实例增加和删除以及补丁安装等操作,通过本课程的学习,学员在掌握RAC理论知识基础上,能够熟练掌握RAC数据库的日常管理操作. 课

Mongodb Windows 集群

我在一台Windows机器下搭建了一个 Replica Sets + Sharding 测试集群环境,以此作为我后续对于Mongodb更进一步学习的实验平台. 只有一台windows机器,配置方案:1.3个分片sharding2.每一个分片由3个节点构成1主2备的Replica Sets3.3个配置节点Configsever4.1个路由节点Mongos 分片复制集A(三个分片节点构成一个复制集): 127.0.0.1:10000   127.0.0.1:10001  127.0.0.1:1000