鸟瞰图
easyinstaller是运行在你的桌面电脑的一个web程序,运行之后在浏览器里面输入localhost即可。为了完成安装,一个先决条件是必须能从你的桌面电脑访问目标服务器,目前仅支持ssh。
快速开始
运行环境: java8
- 从下载最新版本
- 运行 java -jar easyinstaller-x.x.x.jar
- 打开浏览器,访问localhost
建立服务器组
群集软件的安装目标是服务器组,每个服务器可以指定自己的角色。
导入安装脚本
可以从找找有没有需要的脚本,或者自己开发,或者叫别人开发。
导入截图:
安装软件到目标服务器组
项目进度
这个项目采用spring-boot开发,当然是java啦。UI用的是vaadin,虽然也是java,但需要分心去理解vaadin,还有需要写一些CSS。
有少量的bash脚本,作为起点。在安装tcl之后,就大部分使用tcl脚本了,最近发现powershell可以在linux下运行,所以重心就从tcl转移到powershell了,毕竟效率更高一些。
如果你仔细看一下build.gradle,发现会有以下依赖:
compile group: 'com.jianglibo.easyinstaller', name: 'scriptsnippets', version: '0.1.2'
这个其实是一个独立的项目,一些共享的脚本代码片段就。
# how to run this script. powershell -File /path/to/this/file.# ParamTest.ps1 - Show some parameter features# Param statement must be first non-comment, non-blank line in the scriptParam( [parameter(Mandatory=$true)] $envfile, [parameter(Mandatory=$true)] $action)# insert-common-script-here:powershell/PsCommon.ps1# Remove-Item /opt/vvvvv/* -Recurse -Forcefunction Decorate-Env { Param([parameter(ValueFromPipeline=$True)]$myenv) $myenv | Add-Member -MemberType ScriptProperty -Name zkconfigLines -Value { $this.software.configContent.asHt("zkconfig").GetEnumerator() | ForEach-Object {"{0}={1}" -f $_.Key,$_.Value} | Sort-Object } $myenv | Add-Member -MemberType ScriptProperty -Name serviceLines -Value { $this.boxGroup.boxes | Select-Object @{n="serverId"; e={$_.ip.split('\.')[-1]}}, hostname | ForEach-Object {"server.{0}={1}:{2}:{3}" -f (@($_.serverId, $_.hostname) + $this.software.configContent.zkports.Split(','))} | Sort-Object } $myenv | Add-Member -MemberType NoteProperty -Name DataDir -Value ($myenv.software.configContent.zkconfig.dataDir) $myenv | Add-Member -MemberType NoteProperty -Name configFolder -Value (Split-Path -Parent $myenv.software.configContent.configFile) $myenv | Add-Member -MemberType NoteProperty -Name configFile -Value $myenv.software.configContent.configFile $myenv | Add-Member -MemberType NoteProperty -Name binDir -Value $myenv.software.configContent.binDir $myenv | Add-Member -MemberType NoteProperty -Name logDir -Value $myenv.software.configContent.logDir $myenv | Add-Member -MemberType NoteProperty -Name pidFile -Value $myenv.software.configContent.pidFile $myenv | Add-Member -MemberType NoteProperty -Name logProp -Value $myenv.software.configContent.logProp $myenv}
如果你看到# insert-common-script-here:powershell/PsCommon.ps1 这样的行,在运行的时候就会替换成真的代码,但是它又是合法的注释掉的行,在测试的时候也不会受影响。
由于一个人的精力有限,如果你是perl,python,bash任何语言的爱好者,并且对自动化群集软件安装有兴趣,欢迎参与到这个项目中来。