saltstack管理windows
一、saltstack 安装
1.1 saltstack 安装
saltstack 具体系统的安装方法可以查看官网文档:
http://docs.saltstack.cn/topics/installation/rhel.html#zeromq-4以及https://repo.saltproject.io/#rhel
##导入 SaltStack 存储库密钥
rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/3004/SALTSTACK-GPG-KEY.pub
##添加saltstack 的官方yum源
wget https://repo.saltproject.io/py3/redhat/7/x86_64/3004.repo -O /etc/yum.repos.d/salt.repo
##安装salt-master salt-minion
yum install salt-master salt-minion
##启动salt-master salt-minion,并设置开机自动
systemctl enable --now salt-master
systemctl enable --now salt-minion
2.1 windows 端 salt-minion 安装
在官网选择对应windows系统版本的salt-minion(https://repo.saltproject.io/#windows)
静默安装windows 的 Salt-Minion
Salt-Minion-3004.2-1-Py3-AMD64-Setup.exe /S /master=192.168.96.11 /minion-name=win-192.168.39.132
安装完成后可以通过,任务管理→服务中 ,查看salt-minion 服务状态
master 查看minion 连接情况
[root@localhost ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
win-192.168.65.37
Rejected Keys:
salt-key -A
##接受所有id证书请求
[root@localhost ~]# salt-key -A -y
The following keys are going to be accepted:
Unaccepted Keys:
win-192.168.65.37
Key for minion win-192.168.65.37 accepted.
##再次查看可以发现,id:win-192.168.65.37加入授信
[root@localhost ~]# salt-key -L
Accepted Keys:
win-192.168.65.37
Denied Keys:
Unaccepted Keys:
Rejected Keys:
salt-minion windows 的配置文件C:\ProgramData\Salt Project\Salt\conf\minion ,可以通过修改id,来更改minion-name
二、salt 端口详情
saltstack是基于C/S架构的服务模式,服务器端叫做Master,客户端叫作Minion。并且有消息队列中的发布与订阅(pub/sub)服务模式,minion与master之间通过ZeroMQ消息队列通信,这也意味着Salt minion上不需要打开任何传入端口(从而减少攻击)。
端口信息 | 功能 |
---|---|
4505属于Salt Master Ret接口 port | 信息认证、文件服务、结果收集等功能 |
4506属于Salt Master Pub接口 port | 提供远程执行命令发送功能 |
salt-minion启动时从配置文件中获取master地址,如果为域名,则进行解析。解析完成后,会连接master的4506进行从而进行key认证。认证通过后,会连接4505端口订阅来自master pub接口的任务;
当master下发操作指令时,所有minion都能接收到,然后minion会检查本机是否匹配。如果匹配,则执行。执行完毕后,把结果发送到master的4506由master进行处理。
< font cmaster和minion命令发送通信完全是异步的,并且命令包通过maqpack进行序列化后数据会进一步压缩,所以salt的网络负载非常低。
三、salt master 管理windows 服务器
3.1 管理windows文件
替换文件内容
##查看E:\test1\buwo1.txt 文件内容
[root@localhost ~]# salt 'win-192.168.65.37' cmd.run 'powershell cat E:\test1\buwo1.txt'
win-192.168.65.37:
haier
##将E:\test1\buwo1.txt 内容替换成haier001,-replace 操作符默认是大小写不敏感(使用-creplace会大小写敏感)
[root@localhost ~]# salt 'win-192.168.65.37' cmd.powershell '(Get-Content E:\test1\buwo1.txt) | Foreach-Object {$_ -replace ("haier","haier001")} | Set-Content E:\test1\buwo1.txt'
win-192.168.65.37:
----------
[root@localhost ~]# salt 'win-192.168.65.37' cmd.run 'powershell cat E:\test1\buwo1.txt' win-192.168.65.37:
haier001
在文件底部添加内容
将在附加之前检查编码并匹配它
##文件E:\test1\buwo1.txt 末尾添加https://stackoverflow.com
[root@localhost ~]# salt 'win-192.168.65.37' cmd.powershell '"https://stackoverflow.com" | Set-Content -Append E:\test1\buwo1.txt'
win-192.168.65.37:
----------
[root@localhost ~]# salt 'win-192.168.65.37' cmd.run 'powershell cat E:\test1\buwo1.txt' win-192.168.65.37:
haier001
https://stackoverflow.com
3.2 管理windows文件目录
##查看E:/test1/ 下的文件内容
[root@localhost salt]# salt 'win-192.168.65.37' cmd.run 'powershell ls E:/test1/'
win-192.168.65.37:
Ŀ¼: E:\test1
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2022/10/31 15:14 14 buwo.txt
-a---- 2022/11/1 9:30 76 buwo1.txt
##创建tmp.xml文件,以下方法均可
salt 'win-192.168.65.37' file.touch 'E:\test1\tmp.xml'
salt 'win-192.168.65.37' cmd.run 'type nul>E:\test1\tmp.xml'
##创建一个abc目录,以下方法均可
salt 'win-192.168.65.37' file.mkdir 'E:\test1\abc'
salt 'win-192.168.65.37' cmd.run 'md E:\test1\abc'
##删除文件 salt file.remove 可以用于删除文件以及目录
## windows rd 用于删除目录以及文件目录内文件,del用于删除指定文件
salt 'win-192.168.65.37' file.remove 'E:\test1\tmp.xml'
##将master 上的文件复制到win-192.168.65.37上
[root@localhost salt]# salt 'win-192.168.65.37' cp.get_file salt://init.sh E:/test1/init.sh
win-192.168.65.37:
E:/test1/init.sh
3.3 查看windows磁盘
[root@localhost ~]# /usr/bin/salt 'win-192.168.65.37' cmd.run 'powershell Get-Wmiobject -Class Win32_logicaldisk'
win-192.168.65.37:
DeviceID : A:
DriveType : 2
ProviderName :
FreeSpace :
Size :
VolumeName :
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 40301436928
Size : 53109321728
VolumeName :
DeviceID : D:
DriveType : 5
ProviderName :
FreeSpace :
Size :
VolumeName :
DeviceID : E:
DriveType : 3
ProviderName :
FreeSpace : 10691887104
Size : 10734268416
VolumeName : 新加卷
3.4 管理windows 防火墙
防火墙固定开启/关闭命令
##打开/关闭windows防火墙
netsh advfirewall set allprofiles state on/off
##打开/关闭专用网络防火墙
netsh advfirewall set privateprofile state on/off
##打开/关闭公用网络防火墙
netsh advfirewall set publicprofile state on/off
netsh advfirewall firewall 规则说明
命令 | 说明 |
---|---|
add | 添加新入站或出站防火墙规则 |
delete | 删除所有匹配的防火墙规则 |
set | 为现有规则的属性设置新值 |
show | 显示指定的防火墙规则 |
add rule命令:添加防火墙规则
netsh advfirewall firewall add rule name="nginx-80" dir=in localport=80 action=allow protocol=TCP
-
name:规则名称
-
dir:方向,in为入站,out为出站
-
localport:指定端口号
-
action:操作,allow允许连接,block阻止连接
-
protocol:协议类型,tcp和udp
delete rule命令:删除防火墙规则
netsh advfirewall firewall delete rule name="nginx-80" protocol=tcp localport=80
这条命令会删除名称为“nginx-80”且协议类型为tcp,端口为80的防火墙规则
如果 名字的名字下规则,端口指定多个可以使用以下规则
netsh advfirewall firewall delete rule name="nginx-80"
set rule命令:修改防火墙规则
netsh advfirewall firewall set rule name="nginx-80" new localport=1536
##启用规则
netsh advfirewall firewall set rule name="nginx-80" new enable=yes
show rule命令:查看防火墙规则
netsh advfirewall firewall show rule name="nginx-80"
以上命令均可以用使用cmd.run 模块执行
3.5修改windows 用户密码
salt 'win-192.168.65.37' cmd.run 'net user administrator 05Fg~4NBaQ'
3.6修改salt-minion name
findstr
命令类似linux grep
查看C:\ProgramData\Salt Project\Salt\conf\minion 配置文件minion name
[root@localhost ~]# salt 'win-192.168.65.37' cmd.run 'type "C:\ProgramData\Salt Project\Salt\conf\minion" |findstr "id:" ' win-192.168.65.37:
id: win-192.168.65.37
我们将 win-192.168.65.37 替换成win-65.37
[root@localhost ~]# salt 'win-192.168.65.37' cmd.powershell '(Get-content "C:\ProgramData\Salt Project\Salt\conf\minion") | Foreach-Object {$_ -replace"win\-192.168.65.37","win-65.37"} | Set-Content "C:\ProgramData\Salt Project\Salt\conf\minion"'
win-192.168.65.37:
----------
[root@localhost ~]# salt 'win-192.168.65.37' cmd.run 'type "C:\ProgramData\Salt Project\Salt\conf\minion" |findstr "id:" ' win-192.168.65.37:
id: 192.168.65.37
重启salt-minion 服务
salt 'win-192.168.65.37' service.restart salt-minion
特别说明:
以及配置到windows 环境变量的服务 可以直接 net stop/start [服务名] 来启停服务net stop service && net start service来重启服务,没有添加到系统环境变量的可以通过执行.exe /.bat 文件来启动停止服务器
Comments | NOTHING