批量控制教程-Ansible管理windows

ops/2024/10/20 16:36:33/

背景

你厌恶要手动操作多台机器进行某些重复的操作吗?想象一下,在周五的晚上你想要下班了,但是你得在很多台机器手动发布一些东西,每台机器都要整半小时,整整8台机器,一晚上几个小时可以预见又没了。

ansible使你解脱。写一些配置文件,一条命令执行它,然后等待所有机器同时工作,确认一下没问题,然后举杯庆祝。

一、配置windows主机


1、改powerShell的策略为remotesigned,否则运行不了powerShell脚本文件。

#检查 
get-executionpolicy 
#设置 
set-executionpolicy remotesigned



2、检查powershell的版本是否超过3.0,没有就更新

#检查 
$PSVersionTable.PSVersion



3、配置远程控制

# 启动
winrm winrm qc 
# 设置相关的配置 
winrm set winrm/config/service '@{AllowUnencrypted="true"}' 
winrm set winrm/config/service/auth '@{Basic="true"}'



4、查看winrm配置信息

# 查看winrm配置信息 
winrm get winrm/config

二、配置Linux
1、ubuntu安装ansible

apt update && apt install ansible



2、修改主机清单内容

# 编辑配置文件 
$ sudo vim /etc/ansible/hosts 
#输入以下内容 
[win] 10.11.20.20 
[win:vars] 
ansible_ssh_pass=your_password 
ansible_ssh_user=your_user
ansible_connection=winrm 
ansible_winrm_transport=ntlm
ansible_ssh_port=5985 
ansible_winrm_server_cert_validation=ignore



3、检查是否能联通

# 查看是否ping通 
ansible all -m win_ping 
#在命令后面加上-vvv可以看到更详细的信息 
ansible all -m win_ping -vvv



如果成功

10.11.20.20 | SUCCESS => { "changed": false, "ping": "pong" }

常用模块
win_shell,在双引号里面写入你要的命令即可

ansible win -m win_shell -a "dir"

失败排查


1、如果提示
ansible-win | UNREACHABLE! => { "changed": false, "msg": "plaintext: the specified credentials were rejected by the server", "unreachable": true }
那么在配置主机时,增加

ansible_winrm_transport=ntlm


2、如果你的winrm起不来,提示要把网络连接从公共改为专用
win+R快捷键,输入secpol.msc->网络列表管理器策略->所有网络->右键属性->网络位置设置为“用户可以更改”->在网络和internet设置->以太网->点击当前网络->从公共勾选为专用 并且把所有其他的网络名称属性里的位置,都设置成专用

3、如果控制节点ping不通目标节点,将目标节点的防火墙关闭,或配置防火墙出入口策略,比如打开5985出入口

4、执行一些启动命令会启动进程的,要注意两点:

   4.1 要使用async异步来执行,不然控制端会一直卡住

   4.2 设置async等待时间不能太短、poll不能设置为0,因为太短的话进程还没启动完,这边的命令就中断了,那就不会成功启动;而poll为0,就会马上调到下一个命令,所以不能设置为0

案例:控制rpa部署指令

- name: windows commandshosts: 10.11.20.20tasks:- name: show dirwin_shell: pwdargs:chdir: "D:\\myproject\\pythonproject"- name: Run git pullwin_shell: |git pull "https://user:pass@git.com/your_repo.git" --allow-unrelated-histories masterargs:chdir: "D:\\myproject\\pythonproject"executable: cmd.exe- name: update requirementswin_shell: "pip install -r D:\\myproject\\pythonproject\\pythonrequirements.txt"args:chdir: "D:\\myproject\\pythonproject"executable: cmd.exe- name: stop clientwin_shell: for /f "tokens=2" %i in ('tasklist /v ^| findstr /R "cmd.exe"') do taskkill /T /F /PID %iargs:chdir: "D:\\myproject\\pythonproject"executable: cmd.exeignore_errors: yes- name: stop machinewin_shell: for /f "tokens=2" %i in ('tasklist /v ^| findstr /R /C:"python.*\.exe"') do taskkill /T /F /PID %iargs:chdir: "D:\\myproject\\pythonproject"executable: cmd.exeignore_errors: yes- name: start machinewin_shell: "python command.py >> output.txt"async: 30poll: 2register: task_resultargs:chdir: "D:\\myproject\\pythonproject"ignore_errors: yes- name: start clientwin_shell: curl www.baidu.comargs:executable: cmd.exe

这个案例是写在一个叫windows_commands.yml文件里的,

写好之后,用ansible-playbook windows_commands.yml -vvv  执行就行了


http://www.ppmy.cn/ops/15547.html

相关文章

jmeter-while控制器用法

condition中添加while结束循环的条件,以下语句的意思是,当percent等于100时,就跳出while循环继续执行 ${__javaScript("${percent}" ! 100)} 举例,以下方法是getPercent为一个引出的异步接口,该接口的返回包…

C#使用ftp进行文件上传和下载功能(一)

一.FTP概述 FTP (File Transfer Protocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证…

企业如何建立网络事件应急响应团队?

企业如何建立网络事件应急响应团队? 一、应急响应中每一秒都很重要二、选择外包服务还是建立自己的网络安全应急响应团队?三、您的应急响应团队需要谁?1. 应急响应小组2. 技术支持和监控团队 四、应急响应小组1. 安全分析工程师 – 具有网络、…

Java通过邮件发送验证码和通过手机号发送验证码

前提&#xff1a;我将验证码存入了map集合&#xff0c;进行验证。 private static HashMap<String, Integer> emailMap new HashMap<>();一、通过邮箱发送验证码&#xff1a; 1、准备条件&#xff1a;引入hutool依赖&#xff0c; <!--hutool--><depend…

centos7.9下安装SVN服务

一、安装subversion yum install -y subversion #安装svn mkdir -p /data/svnrepos/java #自定义svn仓库位置/data/svnrepos&#xff0c;自定义一个项目叫svn&#xff08;这里新建目录&#xff09; svnadmin create /data/svnrepos/java #创建一…

俄罗斯地理干货整理,柯桥俄语培训

山脉 高加索山脉(Кавказ)位于黑海、亚速海和里海之间&#xff0c;最高峰厄尔布鲁士峰(гора Эльбрус)海拔5642米。 乌拉尔山脉(Урал)位于东欧平原和西西伯利亚平原之间&#xff0c;是欧亚两大洲的自然分界线。 河流 俄罗斯联邦的河流多达10万多条。北徳维…

【Java框架】SpringMVC(二)——SpringMVC数据交互

目录 前后端数据交互RequestMapping注解基于RequestMapping注解设置接口的请求方式RequestMapping注解的常用属性一个方法配置多个接口method属性params属性headers属性consumes属性produces属性 SpringMVC中的参数传递默认单个简单参数默认多个简单参数默认参数中有基本数据类…

修改npm全局安装模式的路径

修改npm全局安装模式的路径 由于之前安装过nodejs&#xff0c;并且配置环境变量以及cache 、prefix 的信息&#xff1b; 由于项目需求安装最新版本的Nodejs&#xff0c;把环境变量的path相关目录进行调整&#xff0c;然后使用一下命令进行安装cnpm命令&#xff1b; npm insta…