# windows资源配置说明
# 环境准备
# windows目标机环境准备
- windows服务器下载或更新 .NET Framework与powershell 推荐使用4.0及以上版本powershell 推荐使用4.5及以上版本.NET Framework
通过get-host命令检查powershell版本
get-host
这里我测试机用的是5.1版本。
注意: 先安装.NET Framework 4.5 ,然后安装powershell4.0,安装完成之后重启windows服务器
安装请自行到官网下载介质
- 更改powershell策略为remotesigned
***在管理员权限下***打开PowerShell,执行:set-executionpolicy remotesigned
set-executionpolicy remotesigned
Y
get-executionpolicy
get-executionpolicy看到结果为remotesigned即修改成功
- 配置winrm service并启动服务
winrm quickconfig
效果如下
如果报错Message【由于此计算机上的网络连接类型之一设置为公用,因此 WinRM 防火墙例外将不运行。 将网络连接类型更改为域或专用,然后再次尝试。】
请自行按提示将连接网络改为专用模式后重试。
- 请确定防火墙已经开启并添加开放了5985/TCP端口规则用于给远程管理使用,作为系统管理员绝对不建议为了方便直接关闭防火墙。
添加防火墙信任规则,允许5985端口通过
打开防火墙高级配置
选择入站规则,在点击新建规则
默认规则类型,配置协议和端口选择端口
配置端口5985
默认操作和配置文件,配置名称
- 建议在本地账户内建立一个拥有管理员权限账户,这里我们使用ansible用户进行管理操作

- 查看winrm service启动监听状态
winrm enumerate winrm/config/listener
效果如下
- 修改winrm配置,启用远程连接认证 winrm set winrm/config/service/auth '@{Basic="true"}'
效果如下
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
效果如下
windows端的配置完成
# jenkins引擎节点环境准备
1.在引擎节点(jenkins)安装windows python扩展模块
sudo yum install python-pip(若无pip命令,则先执行此步骤)
sudo pip install pywinrm
2.新建一个py脚本测试winrm模块链接是否正常
vim wintest.py
wintest.py内容:
import winrm
session = winrm.Session('http://IP地址:5985/wsman', auth=('测试账户', '测试密码'))
res = session.run_cmd('ipconfig')
print(res.status_code)
print(res.std_out.decode('gbk'))
执行脚本测试
python wintest.py
打印如下结果表示连接成功
3.在引擎节点(jenkins)安装ansible服务
yum安装ansible,默认的配置文件路径在/etc/ansible/hosts
sudo yum install -y ansible
whereis ansible
打印如下结果表示ansible安装成功
4.ansible连接windows目标机测试
新建一个windows host配置文件
vim /etc/ansible/win_hosts
内容:
[all]
windowns主机ip ansible_port=5985 ansible_user=用户 ansible_ssh_pass=密码 ansible_connection=winrm ansible_winrm_server_cert_validation=ignore
执行测试win_ping探测windows客户主机是否存活
ansible -i /etc/ansible/win_hosts -m win_ping x.x.x.x
ansible -i 是指定配置(不指定就是默认配置) -m 是指定命令 指定主机名或IP
打印如下结果表示ansible连接windows成功
# devops配置windows资源
- 选择资源类型云主机,端口5985,补充其他信息
注意,一定要如下填写环境变量,devops服务器根据该环境变量来检测是否为windows类型主机,ansible连接windows依赖该配置。
ansible_connection=winrm ansible_winrm_server_cert_validation=ignore

- 点击连通性检测,确保连接成功
# ansible自动发布
# 可以通过脚本原子任务中的ansible脚本实现springboot工程部署(需自行安装java并配置到path变量中)

---
- name: Run command on Windows machine
hosts: 10.10.10.11
tasks:
- name: Find Java process ID
win_shell: Get-WmiObject Win32_Process -Filter "CommandLine like '%-Dserver.port=28080%'" | Select-Object -ExpandProperty ProcessId
register: process_id
- name: Stop Java process
win_shell: taskkill /F /PID {{ item }}
with_items: "{{ process_id.stdout_lines }}"
- name: Download JAR file
win_get_url:
url: http://10.10.10.12:8081/nexus/repository/demo/0.0.1/obj/demo.jar
dest: D:\devops\demo.jar
url_username: admin
url_password: '***********'
force: True
- name: Run JAR file
win_command: java -Dserver.port=28080 -jar D:\devops\demo.jar > D:\devops\demo.log 2>&1
async: 30
poll: 0
# tomcat应用部署请使用windows下tomcat应用部署原子任务。
