DevOps自动化组件RUNDECK开发部署使用说明

目录
  • 前言
  • RunDeck的使用场景
    • (一).标准流程自动化
      • 1.自定义工作流
      • 2.端到端的业务流程在本地或远程服务器
      • 3.跨平台
      • 4.可扩展
      • 5.安全访问控制
      • 6.和主流的DevOps组件集成
    • (二)作业调度
  • 使用案例分析
  • 开发部署服务
    • (1)如何二次开发RunDeck
    • (2)怎么部署RunDeck环境
      • 1.获得部署jar
      • 2.新建rundeck目录
      • 3.访问RunDeck服务
      • 4.用户指定的配置?
  • RunDeck的使用
    • (1)创建Project
    • (2)添加节点信息
    • (3)新增用于节点服务器权限验证的key
    • (4)新增job,添加查看日志的命令,在ca节点执行
    • (5)Activity中查看历史执行记录
    • (6)其他相关使用

前言

RunDeck 是用 Java开发的自动化部署持续集成的工具应用,项目已开源。runDeck的产品属性和jenkis类似。提供web界面和restapi来给用户使用,Web界面主要提供给非开发人员使用,如项目组的测试和运维人员,而它提供的丰富的api使得开发可以很容易的融合到DevOps平台体系中。同时runDeck提供了完整的权限管理,开发,运维,测试可以在RunDeck中完成软件交付的整个流程。

开源地址:https://github.com/rundeck/rundeck

官网地址:http://rundeck.org/

RunDeck的使用场景

(一).标准流程自动化

rundeck的自动化功能帮助你规范你的操作程序,设置访问控制,自动化功能特征如下

1.自定义工作流

rundeck提供工具来定义、构建、部署和管理自动化。这些自动化的过程在工作流程中定义。工作流作用于自动化过程中的各个任务。工作流运行失败或者成功都会发出通知。当错误发生时,你可以选择立即失败,或者触发特定的错误处理程序步骤。

2.端到端的业务流程在本地或远程服务器

rundeck工作流可以协调在本地或远程服务器的步骤。远程服务器是针对使用过滤器,查询表达式匹配到属性,和标签的服务器节点。

3.跨平台

rundeck提高跨多个工具,系统的效率,并通过消除或跨越技术和组织流程结构部门。rundeck工作流可以执行在Windows和UNIX平台,使用节点插件可以将RunDeck扩展到新的平台(包括网络设备)。

4.可扩展

rundeck通过插件机制拓展功能。官方提供很多非常使用的插件,当然你想开发符合自己公司特色的插件以及webui也是非常的简单

5.安全访问控制

工作流可以授权其他用户提供自助服务如运营团队。rundeck提供细粒度的基于角色的访问控制策略安全。

6.和主流的DevOps组件集成

rundeck提供了丰富的restapi可以和主流的DevOps组件集成,如jenkins等

(二)作业调度

提供web界面定义调度任务执行shell命令

作业调度是Rundeck的核心功能。使用场景如:自动调度任务,提供可视化的界面查看结构反馈,支持的调度特征如:无代理、跨平台(Windows需要插件支持)、文件传输、审计报告、等等

更多的使用场景详情见官网。

使用案例分析

开发部署服务

(1)如何二次开发RunDeck

RunDeck开发需要的环境包括:java、grials(工程自带了)、IDEA、IDEA Lombok插件、gradle

第一步:git clong https://github.com/rundeck/rundeck.git

第二步:用IDEA打开项目,安装Lombok插件,使用gradle构建

RunDeck工程主要有核心模块,插件模块,启动器模块,app模块,我们二次开发主要关注插件模块,和app模块就差不多了。

(2)怎么部署RunDeck环境

1.获得部署jar

自己使用gradle构建,在rundeck\rundeck-launcher\build\libs会生成rundeck-launcher-2.10.5-SNAPSHOT.jar。

2.新建rundeck目录

将jar包移到此目录,执行java -jar rundeck-launcher-2.10.5.jar 服务便启动了

服务启动后,会在rundeck目录生成如下相关目录:

  • var:存放远程主机key信息,如ssh的密码,服务私钥。保存新建项目的日志信息,生命周期数据等。存储项目节点资源模型缓存信息,等
  • tools:存放项目依赖的jar包,相关指令集
  • server:存储RunDeck配置信息(用户体系,数据库连接)。RunDeckserver本身的日志信息、项目元数据库信息、webui项目信息、web容器的依赖(jetty)
  • projects:存储新建的项目信息,包括项目节点信息等
  • libext: 存储插件依赖jar
  • etc:存储RunDeck使用的到的框架配置信息,如日志框架log4j,以及指定其他所有配置的磁盘存储路径,如以上所示目录,都可在etc中的配置文件指定

3.访问RunDeck服务

默认的web端口为4440,所以打开:http://localhost:4440,即可看到如下页面

ps:注意我截图的地址,yudian-pc:4440,是因为RunDeck启动的时候默认获取了计算机名称设置了framework.server.hostname = yudian-PC,这会导致虽然我们用localhost可以访问到服务,但是提交表单跳转的时候,都会被定向到yudian-pc:4440。解决方法如下:

  • 1.设置你本机的host,如,设置yudian-pc定向到localhost。
  • 2.修改配置文件/etc/framework.properties,自己指定如下的配置文件

framework.server.name = yudian-PC
framework.server.hostname = yudian-PC
framework.server.port = 4440
framework.server.url = http://yudian-PC:4440

4.用户指定的配置?

RunDeck有很多的数据可以由用户自己来配置,如上面的server.url端口等,当然很多的配置使用默认的就好了,不需要改动。其他的如数据库,初始化密码等还是可以改下的,RunDeck的信息的存储体系包括数据库系统和文件系统,其中数据库默认使用的h2数据库,当使用久数据一多性能就会下降了,当然,我们可以配置其他的支持jdbc的数据库来存储数据。

1.修改默认的用户名密码:

/server/config/realm.properties

2.修改数据库连接:

/server/config/rundeck-config.properties,如

dataSource.url = jdbc:mysql://localhost:3306/rundeckdb?autoReconnect=true

dataSource.username = root

dataSource.password = sasa

dataSource.driverClassName=com.mysql.jdbc.Driver

3.添加邮箱通知配置:

/server/config/rundeck-config.properties,如

grails.mail.host=smtp.sina.com.cn  
grails.mail.port=25  
grails.mail.username=xxx
grails.mail.password=xxx

RunDeck的使用

RunDeck使用过程中会涉及到五大模块概念,分别如Project,Nodes,Jobs,Commands,Activity,其他还有key仓库,用户权限管理等等。

Project是最基础的模块,Nodes,Jobs,Commands等都关联了Project,下面我们从创建项目,到执行命名,走一个完整的流程实例。

(1) 创建Project

输入项目名称(项目名称好像不支持中文),项目描述,选好ssh权限校验的方式(私钥 or password),提交

(2)添加节点信息

默认的节点配置信息,存储在RunDeck/projects/下的。这里以项目名称ca为例,打开projects/ca/etc/resources.xm文件,添加节点信息

添加node节点:属性如下

name="ca" description="newca server node" tags="" hostname="106.75.60.xxx" osArch="amd64" osFamily="unix" osName="Linux" osVersion="10.0" username="root"

回到文本控制台,刷新Nodes模块就会看到新增的节点信息,如

(3)新增用于节点服务器权限验证的key

入口从,右上角用户标志的左边那个配置按钮key storage进入,注意的我的url为http://yudian-pc:4440/menu/storage。创建好后在项目ssh属性password中选中创建好的key

(4)新增job,添加查看日志的命令,在ca节点执行

新增一个可执行的job,添加tail -f xxx.log用来查看远程服务器输出的日志信息,操作如下,注意如下箭头标注,可以指定筛选到的服务器,这里是ca,也可以配置命令执行失败后的处理流程等等。

执行job后,会不断地输出目标节点服务器的日志信息,如

(5)Activity中查看历史执行记录

(6)其他相关使用

如下图,还有用户权限控制,插件管理,报表导出等等功能,考虑篇幅这里就不一一列举了

文末结语RunDeck功能概念清晰,webui交互友好,细粒度的安全策略控制非常适合跨部门跨职能的协同作业,基于token机制的api很好的集成到DevOps平台中,是DevOps上下文中不可多得的组件。

以上就是DevOps自动化组件RUNDECK开发部署使用说明的详细内容,更多关于DevOps自动化组件RUNDECK开发的资料请关注我们其它相关文章!

(0)

相关推荐

  • DevOps,CI,CD,自动化简述

    前言: 随着企业应用的不断迭代,不断扩大,应用的发布发布可能涉及多个团队,如pc端,手机端,小程序端等等.应用发布也就成为了一项高风险,高压力的超过过程,以及应用的开发迭代的沟通,测试成本也大大的变得不可控了.这时候就出现了DevOps管理理念,CI,CD以及强大的部署自动化手段确保部署任务的可重复性.减少部署出错的可能性.下面简单的描述一下这四者的基本概念. DevOps 什么是DevOps? DevOps(Development和Operations的组合词)是一组过程.方法与系统的统称,用

  • DevOps自动化组件RUNDECK开发部署使用说明

    目录 前言 RunDeck的使用场景 (一).标准流程自动化 1.自定义工作流 2.端到端的业务流程在本地或远程服务器 3.跨平台 4.可扩展 5.安全访问控制 6.和主流的DevOps组件集成 (二)作业调度 使用案例分析 开发部署服务 (1)如何二次开发RunDeck (2)怎么部署RunDeck环境 1.获得部署jar 2.新建rundeck目录 3.访问RunDeck服务 4.用户指定的配置? RunDeck的使用 (1)创建Project (2)添加节点信息 (3)新增用于节点服务器权

  • 使用DevOps开源利器开发部署Hygieia平台

    目录 Hygieia是什么? Hygieia架构图 Hygieia开发用到技术栈 Hygieia项目运行部署 启动api模块 启动UI模块 启动插件模块 测试gitlib插件 文末结语 Hygieia是什么? Capitalone(全美十大银行之一)开源的DevOps利器.使用Hygieia后,在整个软件开发周期中,用户可以选择VersionOne或Jira进行用户故事的追踪,选择Subversion或GitHub作为代码仓库,选择Jenkins或Hudson进行构建,选择Selenium和So

  • Rainbond配置组件自动构建部署官方文档讲解

    目录 前言 前提条件 基于源代码操作流程 1.开启组件 Git-Webhook 2.配置代码仓库 基于镜像仓库操作流程 1.开启镜像仓库 Webhook 自动构建 2.Tag 触发自动修改策略 3.配置镜像仓库 API 触发自动构建 前言 通过自动构建的功能,可以实现代码或镜像提交后组件自动触发构建和部署,Rainbond 提供了基于代码仓库 Webhooks.镜像仓库 Webhooks 和自定义 API 三种方式触发组件自动部署.自动构建的功能可以辅助开发者便捷的实现敏捷开发. 前提条件 组件

  • Vue组件中prop属性使用说明实例代码详解

    Prop 的大小写 (camelCase vs kebab-case) HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符.这意味着当你使用 DOM 中的模板时,camelCase (驼峰命名法) 的 prop 名需要使用其等价的 kebab-case (短横线分隔命名) 命名: Vue.component('blog-post', { // 在 JavaScript 中是 camelCase 的 props: ['postTitle'], template: '<h

  • 基于Vue2-Calendar改进的日历组件(含中文使用说明)

    一,前言 我是刚学Vue的菜鸟,在使用过程中需要用到日历控件,由于项目中原来是用jQuery写的,因此用了bootstarp的日历控件,但是配合Vue实在有点蛋疼,不够优雅-- 于是网上搜了好久找到了Vue2-Calendar,不用说,挺好用的,但是同时也发现这个组件有些问题,有些功能挺不符合我们的要求,于是着手改了一版 二,改进的功能 在Vue2-Calendar v2.2.4 版基础上作了优化. 1.改进原控件无法切换语言的BUG,支持 lang='zh-CN'和'en'. 2.日历面板增加

  • 详解vue.js组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然成为了第一个问题.鉴于目前web前端mvvm框架以及组件化开发方式的流行,决定技术栈采用:vue + es6 + 组件化. 这里首先简单说下web前端组件化开发方式的历程: 最早的组件化结构,代码结构可能如下: - lib/components/calendar |- calendar.css |-

  • Vue.js组件使用开发实例教程

    组件 组件可以扩展HTML元素,封装可重用的代码,在较高的层面上,组件是自定义元素,vue.js的编译器为它添加特殊功能,在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展. Vue.js的组件可以理解为预先定义好了行为的ViewModel类.一个组件可以预定义很多选项,但最核心的是以下几个: 模板(template):模板声明了数据和最终展现给用户的DOM之间的映射关系. 初始数据(data):一个组件的初始数据状态.对于可复用的组件来说,这通常是私有的状态. 接受的外部参数(p

  • 生产库自动化MySQL5.6安装部署详细教程

    自动化运维是一个DBA应该掌握的技术,其中,自动化安装数据库是一项基本的技能,本文中的安装脚本已通过测试,作为生产库来说没有问题,鉴于每个公司存储规划要求不同,可以按需自行修改脚本. 脚本中已经注释说明一些基本的安装信息 本脚本默认启用5.6部分新特性 innodb_buffer_pool_dump_at_shutdown=1 它dump的不是数据,是Id号 innodb_buffer_pool_load_at_startup=1 开启这个两个参数当数据库重启后把这些热数据重新加载回去 只有正常

  • Vue-router 类似Vuex实现组件化开发的示例

    本文介绍了Vue-router 类似Vuex实现组件化开发的示例,分享给大家,具体如下: 随着项目越来越大,把所有route写在一个文件里就显得杂乱. #单个组件路由 import a from '../components/a' export default { path: '/a', name: 'a', component: a } import arouter from 'xxx' export default new Router({ routes: [ arouter ] }) #多

  • 详解使用React进行组件库开发

    最近针对日常业务需求使用react封装了一套[组件库], 大概记录下整个开发过程中的心得.由于篇幅原因,在这里只对开发过程中比较纠结的选型和打包等进行讨论,后续再对具体组件的封装进行讨论. 概述 我们都知道,组件化的开发模式对于我们的开发效率有着极大的提升,针对我们日常使用的基本组件进行封装,可以大量的简化我们对于基本UI的关注度,让我们的工作聚焦在业务逻辑上,很好的分离业务与基础UI的代码,使得整个项目更有调理,这也是我们要进行本组件库开发的原因. 然而现有React开源组件有很多,像ant-

随机推荐