gradle是个构建工具,dsl特性,向前还兼容已有的java/maven生态的技术,已经发展的比较庞大了。
之前只是做java的项目构建,最多在部署到服务器的时候用他的ssh插件做个file upload和服务器重启。
这几天公司里有了好多台新购置的机器,分了虚拟机,准备运行环境——这就需要每一个机器安装一些软件和做一些配置,体力活,我在网上找了下,貌似自动化运维工具类似puppet的开源软件比较适合做这个,但还要每一个都安装agent。
我就尝试用gradle做了下,发现还不错,也算是20台虚拟机的java/tomcat/nginx一键安装,就分享下。
gradle和ssh插件的官网地址如下:
https://gradle.org/
http://gradle-ssh-plugin.github.io/
代码和注释如下:
// 初始化软件环境 buildscript { repositories { jcenter() } dependencies { classpath 'org.hidetake:gradle-ssh-plugin:1.1.3' } } apply plugin: 'org.hidetake.ssh' String targetPre = 'dev' // TODO List deployTargets = [1, 2, 3, 4, 5, 6] // 定义你的目标机器的ssh信息,这里可以用编程的方式进行批量定义,就不用一个个输入了,感谢groovy的动态语法 remotes { for(one in deployTargets){ int suf = 40 + one - 1 "${targetPre}${one}" { host = '111.111.111.' + suf port = 22 user = 'root' password = '123!@#' } } } ssh.settings { knownHosts = allowAnyHosts } // 接受运行命令行的参数,指定要操作的目标机器名称 // use -Pargs=1,2,3 List targets = deployTargets if(project.hasProperty('args')){ targets = args.split(',') } // 开关变量 // 替换163的源 boolean update163 = true // 安装nginx boolean installNginx = true // 安装tomcat boolean installTomcat = true // 安装java boolean installJava = true // 用文件上传的方式安装jdk,因为用源下载太慢 String jdkFile = 'jdk-7u79-linux-x64.tar.gz' String jdkFilePath = 'D:/BaiduYunDownload/' + jdkFile String confDir = 'server-config/' def c = {String suf -> confDir + suf } // 默认ubuntu14.04没有开启root账号,这里可以批量修改root密码 // 用bash也可以做到修改sshd_config配置文件的配置项(但这个命令我不会写。。) task changeRootPwd << { // need to change /etc/sshd_config PermitRootLogin yes, sudo service ssh restart ssh.run { for(target in targets){ String key = targetPre + target session(remotes[key]) { println 'login done as ' + remotes[key].user String pwd = remotes[key].password execute('sudo passwd root', pty: true, interaction: { // old user is tjapp when(partial: ~/.+tjapp.+/) { standardInput << pwd << '\n' when(line: _) {line -> standardInput << pwd << '\n' when(line: _) {line2 -> standardInput << pwd << '\n' } } } when(line: _) { line -> throw new IllegalStateException("passwd command returned error: $line") } }) } } } } // 初始化软件环境 task init << { ssh.run { for(target in targets){ String key = targetPre + target session(remotes[key]) { println 'login done as ' + remotes[key].user String cmd //apt-get install software-properties-common //add-apt-repository ppa:webupd8team/java if(update163){ put from: c('sources.list'), into: '/etc/apt/' cmd = ''' apt-get update ''' cmd.readLines().collect{it.trim()}.grep{it}.each{ execute it } println 'done update sources' } if(installNginx){ // install nginx execute('apt-get install nginx', pty: true, interaction: { when(line: _, from: standardOutput) { line -> println line } standardInput << 'y' << '\n' }) println 'done install nginx' put from: c('nginx/nginx.conf'), into: '/etc/nginx/' put from: c('nginx/default'), into: '/etc/nginx/sites-enabled/' println 'done config nginx' } if(installTomcat){ // install tomcat cmd = ''' mkdir /home/myuser mkdir /home/myuser/soft wget -P /home/myuser/soft http://apache.fayea.com/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz tar zxvf /home/myuser/soft/apache-tomcat-8.0.33.tar.gz -C /home/myuser/soft mv /home/myuser/soft/apache-tomcat-8.0.33 /home/myuser/soft/tomcat8 ''' cmd.readLines().collect{it.trim()}.grep{it}.each{ execute it } put from: c('tomcat/catalina.sh'), into: '/home/myuser/soft/tomcat8/bin' put from: c('tomcat/server.xml'), into: '/home/myuser/soft/tomcat8/conf' println 'done config tomcat' } // install java if(installJava){ // tcl interaction // apt-get install oracle-java7-installer put from: jdkFilePath, into: '/home/myuser/soft' println 'done copy jdk' cmd = """ tar zxvf /home/myuser/soft/${jdkFile} -C /home/myuser/soft mv /home/myuser/soft/jdk1.7.0_79 /home/myuser/soft/jdk7 """ cmd.readLines().collect{it.trim()}.grep{it}.each{ execute it } put from: c('profile.bak'), into: '/root/.profile' execute 'source /root/.profile' println 'done config java' } } } } }
相关推荐
`gradle-ssh-plugin`是这样一个Gradle插件,它扩展了Gradle的功能,允许用户通过SSH协议执行远程操作,如复制文件、运行命令等,极大地简化了跨服务器部署的过程。 **一、Gradle SSH 插件简介** `gradle-ssh-...
2016/4/21 版本1.0.5已发布增加了对minHeapSize 支持在类路径添加了额外的jmeter-plugin和webdriver jar 修复了jmSystemPropertiesFiles的问题重新格式化一些代码文件2016/4/2 版本1.0.4已发布固定的和 。...
【标题】"specs2-mock_2.11-2.3.12-scalaz-7.1.0-M7.zip" 和 【描述】"gradle-ssh-plugin.zip, Gradle ssh插件提供远程执行和文件传输功能Gradle ssh插件" 提供了两个不同的IT知识点,一个是关于Scala测试框架Specs2...
Gradle Plugin Infrastructure plugin for Publish Over X Jackson 2 API Java JSON Web Token (JJWT) Plugin Javadoc Plugin JavaScript GUI Lib: ACE Editor bundle plugin JavaScript GUI Lib: Handlebars bundle...
- Android Emulator Plugin 和 Android Lint Plugin:用于Android应用的模拟器和静态代码分析。 ##### 3.4 配置全局工具 - 在“系统管理”->“全局工具配置”中配置: - **Git路径**:指定Git安装目录。 - **...
《SSH连接器与Gradle Protobuf插件:深入解析与应用》 在现代软件开发中,自动化工具和框架的使用已经变得至关重要。本篇文章将详细探讨一个名为"crash.connectors.ssh-1.3.0-beta21.zip"的压缩包,其中包含了对SSH...
groovy-ssh, 在 Groovy DSL上,基于SSH自动化工具 Groovy SSH是基于DSL的自动化工具,提供远程命令执行和...https://gradle-ssh-plugin.github.io捐赠这是一个在Apache许可以版 2.0下许可以的开源软件。 欢迎打开问题或
在整合SSH项目时,除了这三个框架的基本库,还需要一些额外的依赖,例如: - **Servlet API**:因为Struts和Spring都需要在Servlet容器(如Tomcat)中运行,所以需要`servlet-api.jar`。 - **JSTL**:JavaServer ...
在这个例子中,`jcenter()`是一个常用的中央仓库,而`org.hidetake:gradle-ssh-plugin:2.7.0`和`co.tomlee.gradle.plugins:gradle-thrift-plugin:0.0.6`是两个特定的Gradle插件,它们分别用于SSH连接和Thrift编译。...
开发者可以通过构建工具如Maven或Gradle来管理这些依赖,或者直接将这些JAR包放入WEB-INF/lib目录下,对于非Maven项目来说,"ssh_jar"压缩包提供了一个方便的方式来获取所有必需的库,避免了逐一查找和下载的麻烦。...
SSH(Struts2、Spring、Hibernate)是一种经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。在这个“ssh常用Jar包”中,包含了S2SH框架的关键组件和其他辅助库,比如视频处理和数据库连接相关的...
- 范围:该方案适用于具备Java基础,对SSH框架有一定了解的开发者,用于创建企业级Web应用程序。 - 说明:文档内容涵盖SSH框架的各个组件,包括Struts2、Spring和Hibernate的核心概念、配置步骤及实践应用。 - ...
SSH整合是指将Spring、Struts2和Hibernate这三个流行的开源框架集成在一起,用于构建高效、灵活的企业级Web应用程序。在Java开发中,SSH整合提供了一种强大的模型-视图-控制器(MVC)架构,使开发者能够更有效地管理...
5. **Android** (虽然标签中提到,但没有直接对应的插件): Jenkins 支持Android应用的构建和测试,通常会配合Gradle插件使用。例如,`android-emulator-plugin` 可以启动和管理Android模拟器,`android-lint-plugin`...
除了SSH框架本身的jar包,还有一些其他必要的库,如数据库驱动(如`mysql-connector.jar`或`ojdbc.jar`),用于连接不同的数据库;`log4j.jar`日志库用于记录应用运行时的信息;`commons-lang3.jar`、`commons-...
6. **开发环境与工具**:SSH整合通常在Eclipse或IntelliJ IDEA等集成开发环境中进行,使用Maven或Gradle进行项目管理和依赖管理,可能还需要Tomcat、Jetty等应用服务器进行部署和测试。 7. **最佳实践**: - 使用...
SSH框架整合通常会用到一系列特定的jar包,如Spring的核心库(spring-core、spring-context等)、Struts2的核心库(struts2-core、struts2-convention-plugin等)、Hibernate的主库(hibernate-core、hibernate-...
1. **构建WEB项目**:首先,我们需要创建一个基于Maven或Gradle的Java Web项目,确保项目结构符合标准的Web应用结构,包括src/main/java、src/main/resources、src/main/webapp等目录。 2. **构建数据库**:SSH整合...
在Java开发领域,SSH(Struts、Spring、Hibernate)是一个非常经典的MVC(Model-View-Controller)架构的框架组合,常用于构建企业级的Web应用程序。随着技术的发展,JDK版本也在不断更新,从JDK 1.7升级到JDK 1.8时...
以及一些其他第三方库,如Log4j用于日志记录,Commons Lang和IO库用于通用工具函数,还有可能包括Servlet和JSP相关的jar包,如`servlet-api.jar`, `jsp-api.jar`等,这些都是运行Java Web应用所必需的。 在实际开发...