请在使用站内资源的同时不要恶意进行爬取或倒链等行为,感谢支持!
相关文档:
在远程 Windows 上启动 Jenkins.war 示例。
让 jenkins.war 在后台启动,可以执行批处理命令:(需要安装 JDK)
$ start /min java -jar D:\jenkins.war
命令放入脚本,放置不必要的错误:
start /min java -jar D:\jenkins.war
可执行 ansible 命令进行调用:
$ ansible windows_test -m raw -a "D:\start.bat"
此时可能会卡很久,通常会写入到 ansible-playbook 中添加 async 参数设置执行时间上限。
设置停止脚本:
$jps_object = C:\"Program Files"\Java\jdk1.8.0_201\bin\jps | findstr "jenkins" $java_pid = $jps_object.split()[0] taskkill /F /pid $java_pid
可执行命令:
$ ansible windows_test -m raw -a "D:\stop.ps1"
写为 ansible-playbook 可执行为:
--- - hosts: windows_test tasks: - name: stop service win_command: powershell D:\stop.ps1 - name: start service win_command: powershell.exe D:\start.bat async: 15 ignore_errors: true
执行命令为:
$ ansible-playbook demo.yaml PLAY [windows_test] *********************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] ******************************************************************************************************************************************************************************************************************************** ok: [10.31.129.16] TASK [stop service] *********************************************************************************************************************************************************************************************************************************** changed: [10.31.129.16] TASK [start service] ********************************************************************************************************************************************************************************************************************************** fatal: [10.31.129.16]: FAILED! => {"ansible_async_watchdog_pid": 8000, "ansible_job_id": "49468985171.7680", "changed": false, "finished": 1, "msg": "timed out waiting for module completion", "results_file": "C:\\Users\\Administrator\\AppData\\Local\\.ansible_async\\49468985171.7680", "started": 1} ...ignoring PLAY RECAP ******************************************************************************************************************************************************************************************************************************************** 10.31.129.16 : ok=3 changed=1 unreachable=0 failed=0
如果执行超时可设置 ignore_errors 对错误进行忽略,此时即可正常完成执行的命令。并且服务也在远端成功启动。
注意有个大坑,当直接在 Powershell 中执行 start.bat 时,如果让 Ansible 去执行 stop.ps1 实际上是无法执行的,因为 Ansible 使用的是 Administrator 用户,而 Powershell 直接执行使用的是 System 用户,所以使用 jps 是无法找到其他用户启动的进程的。
但此类方法并没有输出日志,只能在屏幕上滚动进程窗口,如果需要,可以已定义启动脚本如下:(需要用 Windows 编辑器打开并保存否则在 Linxu 或 MacOS 中保存的文件文件格式会报错)
@echo off set logName=jenkins_ set logTime=%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%time:~3,2%%time:~6,2% set logSuffix=.log set logPath=D:\ set logFullName=%logPath%%logName%%logTime%%logSuffix% echo Log Output To: %logFullName% start /MIN /B java -jar D:\jenkins.war >> %logFullName% 2>&1
或使用如下方式进行格式转换:
$ unix2dos start.bat
日志输出格式如下:
jenkins_2019050854116.log
如果需要覆盖应用之前先进行备份,则可以使用以下脚本:
@echo off set rq=%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%time:~3,2%%time:~6,2% set projectPath=D:\Web\Dev\ManageCommissionJob mkdir %projectPath%\backup\%rq% SETLOCAL ENABLEDELAYEDEXPANSION set fileName=comm_job_test.jar set sourceFilePath=%projectPath%\!fileName! set backupFilePath=%projectPath%\backup\%rq%\!fileName! echo "echo F|xcopy !backupFilePath! !sourceFilePath!" >> %projectPath%\backup\%rq%\rollback.bat move !sourceFilePath! !backupFilePath!
文档创建于 , 最后一次更新于 , 文档当前的状态 正式版 , 当前编写页面的版本 V1.3.1 。