windows 批量管理工具调研

发布于 2022-10-20  240 次阅读


一、开源windows 的种类

Ansible、SaltStack、Puppet等都是目前比较受用户欢迎的自动化化运维工具,其中Ansible和SaltStack使用python 编写,具有良好的可移植性。Puppet的使用使用Ruby编写,脚本语法复杂,且可移植性比较差,目前的使用者慢慢变少。

Ansible、SaltStack、Puppet功能比较

名称 Saltstack Ansible Puppet
开发语言 Python Python Ruby
windows支持 支持 支持 支持
学习成本 State语法需要单独学习,相对容易 playbook语法相对简单,容易学习 需学习Puppet的DSL或Ruby
通信方式 ZeroMQ进行通信 SSH通信 HTTP通信
加密方式 AES加密(MQ本身不支持加密,需注意MITM攻击) OpenSSH 标准SSL协议
客户端

MITM攻击:中间人攻击,也称之为间接攻击,通过伪装成master主机和远程主机进行通信,从而进行攻击。

二、管理windows 方式对比:

2.1 Ansible管理windows 服务器环境要求

远程主机系统如为Windows需预先如下配置:

  • Framework 版本大于3.0+
  • 更改powershell策略为remotesigned
  • PowerShell版本大于3.0+
  • Windows远程管理(WinRM)启用以及配置

Ansible 服务端要求:

  • Ansible 版本大于1.7
  • Ansible 需要安装pywinrm 扩容(使用Python的 “winrm” 模块来和远程主机交互,插件安装比较麻烦)

ansible 服务器端通过调用Python的 “winrm“ 模块,和windows 的 WinRM通信,将命令通过powershell 进行执行。

2.2 Saltstack管理windows 服务器环境要求

只要客户端安装 Salt Minion 即可,根据系统版本X86 or X64 选择对应,软件包安装即可

salt master通过发布端口发送命令,salt minion接收到命令开始检索,目标minion找到执行module 和对应的方法,执行命令,将结果返回

2.3 Puppet管理windows 服务器环境要求

只要客户端安装 Puppet puagent 即可

在puppet里面叫做manifest,用户上传manifest程序,pupet master会对manifest程序进行编译,将编译后的信息发给Puppet client,client端通过master 获取的manifest完成 对服务器的配置,最后将结果返回给master

三、管理windows 优劣

名称 管理windows优势 管理windows劣势
Saltstack 安装 windows 客户端较为简单,无需太多额外配置,语法相应简单 需要在客户端安装agent,MQ本身不支持加密
Ansible ansible 的windows 模块的简单,可以使用win_powershell模块,可以有效减少dos 的学习 客户端预配置较多,管理端需要安装winrm(由于pip的问题,目前测试python 2不支持安装winrm)
Puppet 安装 windows 客户端较为简单,无需太多额外配置 需要在客户端安装agent,需要额外学习Ruby,语法编写manifest,无法通过命令去下发配置

结论:Puppt 由于使用ruby 语法,且每次下发配置都需要通过编译manifest来完成,无法直接通过命令去下发配置,使用场景有局限性

ansible 和Saltstack模块都比较简单,并且都可以通过命令以及执行yaml文件去下发配置,使用目前技术团队使用最多两款批量管理工具,可以根据不同测重点去选择使用ansible 或者Saltstack