DevOps DevOps
产品简介
产品安装
快速入门
使用指南
开发指南
FAQ
6.7更新说明
  • windows资源配置说明
  • 环境准备
  • windows目标机环境准备
  • jenkins引擎节点环境准备
  • devops配置windows资源
  • ansible自动发布
  • 可以通过脚本原子任务中的ansible脚本实现springboot工程部署(需自行安装java并配置到path变量中)
  • tomcat应用部署请使用windows下tomcat应用部署原子任务。

# windows资源配置说明

# 环境准备

# windows目标机环境准备

  1. 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服务器

安装请自行到官网下载介质

  1. 更改powershell策略为remotesigned
    ***在管理员权限下***打开PowerShell,执行:set-executionpolicy remotesigned
set-executionpolicy remotesigned
Y
get-executionpolicy

get-executionpolicy看到结果为remotesigned即修改成功

  1. 配置winrm service并启动服务
winrm quickconfig

效果如下

如果报错Message【由于此计算机上的网络连接类型之一设置为公用,因此 WinRM 防火墙例外将不运行。 将网络连接类型更改为域或专用,然后再次尝试。】

请自行按提示将连接网络改为专用模式后重试。

  1. 请确定防火墙已经开启并添加开放了5985/TCP端口规则用于给远程管理使用,作为系统管理员绝对不建议为了方便直接关闭防火墙。

添加防火墙信任规则,允许5985端口通过

打开防火墙高级配置

选择入站规则,在点击新建规则

默认规则类型,配置协议和端口选择端口

配置端口5985

默认操作和配置文件,配置名称

  1. 建议在本地账户内建立一个拥有管理员权限账户,这里我们使用ansible用户进行管理操作
  1. 查看winrm service启动监听状态
winrm enumerate winrm/config/listener

效果如下

  1. 修改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资源

  1. 选择资源类型云主机,端口5985,补充其他信息
    注意,一定要如下填写环境变量,devops服务器根据该环境变量来检测是否为windows类型主机,ansible连接windows依赖该配置。
ansible_connection=winrm ansible_winrm_server_cert_validation=ignore
  1. 点击连通性检测,确保连接成功

# 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应用部署原子任务。

← 组件定时扫描配置 更新构建发布定义引擎 →