用easyinstaller安装zookeeper,hadoop,hbase等群集软件
用easyinstaller安装zookeeper,hadoop,hbase等群集软件
jianglibo 发表于1年前
用easyinstaller安装zookeeper,hadoop,hbase等群集软件
  • 发表于 1年前
  • 阅读 474
  • 收藏 44
  • 点赞 1
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 已经有Puppet, Chef. Ansible. Salt等工具存在,何必再来个easyinstaller?前者的使用场景是,公司雇佣一个会这些工具的人专门从事服务器自动化的工作。easyinstaller是你办公电脑(笔记本)上的一个app,每个人都可以使用和受益。

鸟瞰图

输入图片说明

easyinstaller是运行在你的桌面电脑的一个web程序,运行之后在浏览器里面输入localhost即可。为了完成安装,一个先决条件是必须能从你的桌面电脑访问目标服务器,目前仅支持ssh。

快速开始

运行环境: java8

  1. https://github.com/jianglibo/easyinstaller/releases下载最新版本
  2. 运行 java -jar easyinstaller-x.x.x.jar
  3. 打开浏览器,访问localhost

建立服务器组

群集软件的安装目标是服务器组,每个服务器可以指定自己的角色。 输入图片说明

导入安装脚本

可以从https://github.com/jianglibo/install-scripts/releases找找有没有需要的脚本,或者自己开发,或者叫别人开发。

输入图片说明 导入截图: 输入图片说明

安装软件到目标服务器组

输入图片说明

项目进度

这个项目采用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'

这个其实是一个独立的项目,一些共享的脚本代码片段就install-scripts

# 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 script
Param(
    [parameter(Mandatory=$true)]
    $envfile,
    [parameter(Mandatory=$true)]
    $action
)

# insert-common-script-here:powershell/PsCommon.ps1
# Remove-Item /opt/vvvvv/* -Recurse -Force

function 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任何语言的爱好者,并且对自动化群集软件安装有兴趣,欢迎参与到这个项目中来。

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
jianglibo
粉丝 43
博文 57
码字总数 34649
作品 3
×
jianglibo
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: