为什么80%的码农都做不了架构师?>>>   

Rundeck这个产品很早就知道了,不过一直没有时间尝试,当时也没有相关的应用场景,最近cron job是越来越多,管理起来很是麻烦,忽然记起来还有Rundeck这么一个工具,决定先具体调研一番,看看是否能完全解决我的问题。

rundeck是一款开源的可以帮助你在数据中心或者云环境自动运行日常程序的软件,rundeck提供了一些特性来缓解费事繁琐的工作,并且很容易让你扩展自己的自动化成果。rundeck允许你在web界面或者命令行上指定在任何节点运行任务。rundeck也包含了其他特性来容易的扩展的你的自动化成果,例如:访问控制、工作流构建、调度、日志等等。

rundeck的特性如下:

  • 提供web api
  • 分布式命令执行
  • 可插拔的系统插件
  • 多步骤工作流构建
  • 以守护进程执行job或者调度运行
  • 图形化web控制台来控制job执行
  • 基于规则的访问控制,支持LDAP/AD
  • 历史及构建日志查看
  • 可以集成到外部工具
  • 命令行控制工具

先看看一些概念和术语:

role-based access control policies

rundeck的访问控制策略,授权用户和用户组以授权的权限来操作rundeck的资源,例如:project、job、nodes、commands、api。

projects

project是一个管理各个项目的地方,rundeck的活动都是在各自的project范围内进行活动,可以在一个rundeck server上设置多个project,多个project可以同一台rundeck server上进行操作维护。

jobs

job是一个封装的操作步骤序列,job选择节点和执行的步骤。

nodes

rundeck server可以访问的物理机或者虚拟机实例,资源以node模式在一个project中表示

commands

在node上可执行的单个字符串命令,rundeck通过node executor调用nodes上的commands。

executions

表示已经完成或者正在运行的command或者job,这些数据可以用来监控job的执行状态

plugins

rundeck 支持的第三方插件

下面我们看看rundeck的一些详细介绍:

rundeck是一个服务端的应用,是一个由你控制的中央管理控制系统。在内部,rundeck存储job的定义和执行结果在一个关系数据库中,command和job执行结果的输出则保存在磁盘上,你也可以把这些结果重定向到远程存储上,例如:S3、logstash。rundeck分发分布式执行命令是通过可插拔的执行插件来分发的,默认是使用SSH,但是你也可以使用其他插件,例如:salt,或者你自定义的方法。rundeck服务端也可以配置在远程服务器上以哪个用户执行命令。

rundeck是一个基于java的应用,需要jdk1.7的版本,该应用包括一个图形接口和一个网络接口,访问rundeck需要经过用户认证。运行rundeck不需要root或者管理员权限,我们建议使用一个单独的用户运行rundeck。rundeck启动后一般监听两个端口:http(4440)、https(4443)。保证客户端的22端口是被SSH监听的,因为rundeck默认使用ssh public-key来连接客户端。由于rundeck是基于java的,因此你在启动的时候可以修改一些默认配置,比如web端口之类的,格式如下:-Dproperty=value,加在java启动参数中即可,可以设置以下内容:

server.http.port The HTTP port to use for the server, default "4440"server.https.port The HTTPS port to use or the server, default "4443"server.http.host Address/hostname to listen on, default is all addresses "0.0.0.0"server.hostname Hostname to use for the server, default is the system hostnameserver.web.context Web context path to use, such as "/rundeck". Default is "/".rdeck.base Rundeck Basedir to use, default is the directory containing the launcher jarserver.datastore.path Path to server datastore dirdefault.user.name Username for default user account to createdefault.user.password Password for default user account to createrundeck.jaaslogin "true/false" - if true, enable JAAS login. If false, use the realm.properties file for login information.loginmodule.name Custom JAAS loginmodule name to useloginmodule.conf.name Name of a custom JAAS config file, located in the server's config dir.rundeck.config.name Name of a custom rundeck config file, located in the server's config dir.rundeck.ssl.config Path to the SSL config properties file to enable SSL. If not set, SSL is not enabled.rundeck.jetty.connector.forwarded true/false. Set to true to enable support for "X-forwarded-*" headers which may be sent by a front-end proxy to the rundeck server. See Using an SSL Terminated Proxy.rundeck.jetty.connector.ssl.excludedProtocols Comma-separated list of SSL protocols to disable. Default: 'SSLv3'. See Disabling SSL Protocols.rundeck.jetty.connector.ssl.includedProtocols Comma-separated list of SSL protocols to include. Default is based on available protocols. See Disabling SSL Protocols.rundeck.jetty.connector.ssl.excludedCipherSuites Comma-separated list of Cipher suites to disable. No default. See Disabling SSL Protocols.rundeck.jetty.connector.ssl.includedCipherSuites Comma-separated list of Cipher suites to enable. Default is based on available cipher suites. See Disabling SSL Protocols.

rundeck支持多用户配置,安装完毕后,会自动创建两个用户:user 是用来执行job和command的,密码是user。admin 是管理员用户,属于admin group,密码是admin。在浏览机器中访问即可,第一次登录rundeck时会让你创建一个project,project name可以包含数字以及字母,但是不能包含空格和特殊字符。

安装启动rundeck

rundeck官方提供rpm和deb包,选择符合你操作系统的软件包即可,当然官方也提供编译好的tar包。我选择的是deb包:rundeck-2.5.2-1-GA.deb。安装完成后直接启动:/etc/init.d/rundeckd start

如果你选择的已经编译好的tar包,则这样启动:$RDECK_BASE/server/sbin/rundeckd start

下面介绍一下rundeck的各个组件

project

一个project就是一个管理独立活动的地方,rundeck的所有活动都发生在它自己的project范围内。多个project可以在一个rundeck server上进行维护,各个project之间是互相独立的,因此你可以像在一台单独的rundeck server上组织他们,你可以管理不同的基础设施、环境、应用。所以,在刚部署完毕的rundeck之后,第一件事就是创建project

在rundeck 2.4以及之前,所project的定义和配置文件是存储在本地文件系统上的,自从rundeck 2.5开始,你可以设置把定义和配置文件存储在数据库上。需要在rundeck-config.properties配置文件中增加:rundeck.projectsStorageType=db或者filesystem,如果你以及使用了一个基于filesystem的存储系统,当你修改为db,重启rundeck之后,project会自动的加载进数据库中。这里的数据库不是mysql之类的关系数据库,是rundeck自己的Storage Facility数据库。

当你使用基于fileststem的配置存储系统,每个project都有一个配置文件,叫做project.properties,位置在:/var/rundeck/projects/project-name/etc/project.properties。

配置解释:http://rundeck.org/docs/administration/configuration-file-reference.html#project.properties

我们可以通过web管理截面创建project,也可以通过rd-project命令行创建project。project的名称由字母数字构成,但是不能包含空格和特殊字符。输入project名称创建,rundeck会自动初始化,并跳转到job页面。

如果创建了一个project,又希望时间久了还能记住该project的作用,你可以创建一个readme.md文件,来简单的介绍一个该project的作用,readme.md文件可以是markdown格式、甚至可以可以包含图片,这个readme.md文件默认是不自带的,你可以自建后,放置于/var/rundeck/projects/project-name/readme.md,然后在总的project管理截面会看到相关project的readme.md内容。

node

Resource Model就是设置一组nodes,rundeck可以分发commands到这些nodes上。每个project都有自己的Resource Model。project创建完毕后,会有一个初始化的resource model文件包含一些rundeck server的信息,而且只能在本地运行command,你可以在nodes界面浏览这些信息。node的resource会包含一些基础的属性,例如hostname,但也有一些有用的属性,例如tags,tag就是你给该node的标签,一个node可以有多个标签,你可以通过标签对node进行分组。

在project初始化之后,project会创建一个resource model source文件,project.properties文件中有resource model文件的配置路径(project.resources.file),一般在/var/rundeck/projects/project-name/etc/resources.xml。也可以为一个project配置多个Resource Model Sources,刚才说来Resource Model就是定义一组nodes,因此在一个Resource Model Sources文件中你可以定义多个node。Resource Model Sources文件目前支持两种格式:XML和YAML,默认是XML。

logging

rundeck安装完毕后,在log目录下会有多个日志文件产生,默认日志路径是:/var/log/rundeck,会有以下日志文件:

command.log: Shell tools log their activity to the command.logrundeck.audit.log: Authorization messages pertaining to aclpolicyrundeck.job.log: Log of all job definition changesrundeck.options.log: Logs remote HTTP requests for Options JSON datarundeck.log: General Rundeck application messagesservice.log: Standard input and output generated during runtime

command

command可以设置在node上执行你配置的命令,rundeck的图形截面提供了设置command的截面,设置完成后,rundeck通过ssh或者通过dispatch工具来执行命令。注意:你能够查看的节点以及能够执行哪些命令,是受ACL策略限制的。

后端使用RDB Database

rundeck默认使用文件来存储数据,你也可以配置rundeck使用RDB来存储数据,比如:mysql。需要修改rundeck-config.properties文件的dataSource配置项。如下:

dataSource.url = jdbc:mysql://myserver/rundeckdb?autoReconnect=true
dataSource.username = dbuser
dataSource.password = dbpass
dataSource.driverClassName=com.mysql.jdbc.Driver

使用jdbc连接mysql,rundeck默认已经自带了mysql的jdbc驱动,不需要你另外安装。

转载于:https://my.oschina.net/guol/blog/517644

rundeck入门-基础知识相关推荐

  1. Python培训入门基础知识学什么?

    Python培训基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python培训入门基础知识学什么呢?来看看下面小编 ...

  2. NLP汉语自然语言处理入门基础知识介绍

    NLP汉语自然语言处理入门基础知识介绍 自然语言处理定义: 自然语言处理是一门计算机科学.人工智能以及语言学的交叉学科.虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部 ...

  3. 负荷计算的时候assert失败_负荷计算的入门基础知识,小白入门必备!

    负荷计算是电气设计人员必须掌握的一必修课,选导体.设备还有保护开关的选择,电网系统分析,都离不开负荷计算的内容,为此小编特意总结9个负荷计算的入门基础知识,分享给大家,希望能在工作和学习中作为一份参考 ...

  4. python笔记基础-Python入门基础知识学习笔记之一

    为什么要写这篇文章? 本人做过Objective-C开发,现在在用C#做WinForm开发.近段时间在学习Python入门基础知识时,发现有很多知识点和Objective-C的不一样.故想通过本文记录 ...

  5. 电脑的基础知识_电脑入门基础知识

    电脑入门基础知识 学习电脑应该先了解电脑的基本的组件,然后学习操作,包括键盘.鼠标的使用,能基本使用操作系统,再学习打字. 作为一个电脑小白,想要学习电脑,首先要知道如何操作,学习打字,接着就是熟练使 ...

  6. ***入门基础知识(超全)

    ***入门基础知识(超全) [sell=2]  DOS 常用命令: dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 de ...

  7. Python入门基础知识学什么?

    Python基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python入门基础知识学什么呢?来看看下面小编的详细介 ...

  8. 半小时入门MATLAB编程入门基础知识:

    https://learnxinyminutes.com/docs/zh-cn/matlab-cn/ 半小时入门MATLAB编程入门基础知识: % 以百分号作为注释符 %{ 多行注释 可以 这样 表示 ...

  9. C语言入门基础知识有哪些?

    众所周知C语言经久不衰,并且很多人都想要成为C语言工程师,为了能够做好C语言技术学习,需要知晓C语言入门基础知识有哪些. 用一个简单的C程序例子,介绍C语言的基本构成.格式.以及良好的书写风格,使小伙 ...

最新文章

  1. 第 5 章 Nova - 025 - OpenStack 通用设计思路
  2. 超级干货:关于数据中台的深度思考与总结
  3. SSIS实用教程(SQLServer2005)
  4. java异常 The origin server did not find a current representation for the target resource or is not
  5. mysql增量备份保留策略_Mysql备份策略-完成备份+增量备份shell
  6. C++ STL中Map的按Key排序和按Value排序
  7. 力扣-1880(243 周赛) 检查某单词是否等于两单词之和
  8. pc上html5游戏无法打开,原神PC端进不去怎么办
  9. java后端开发(二):web开发历史解读
  10. linux更新电池驱动下载,Linux 5.13电源管理与ACPI更新已提交
  11. 简道云、氚云、明道云们更讨中小企业欢心?
  12. Java多线程学习(吐血超详细总结)转自博主林炳文Evankaka
  13. 计算机网络期末考试代做,代做计算机作业-易指做帮写网
  14. CATIA V5-6 R2017 支架类零件设计
  15. 如何部署一个属于自己的网站
  16. java.exe,javac.exe,javaw.exe 是什么进程? (转载)
  17. Strippednot stripped
  18. kettle入门(二) 之 kettle连接oracle报的坑爹错误 Error occured while trying to connect to the database 的几种情况
  19. 电热水器洗澡时注意(特别是需要拔插头)
  20. 母版页(Master Pages)

热门文章

  1. Windows 部署服务(WDS)基础配置指南 (2008 or 2008R2 Only)
  2. 也许,我们只需要缺憾的完美!
  3. 开源工具 PrivateBin 修复XSS 漏洞
  4. VMware:警惕 vSphere Web Client中的新漏洞
  5. 提升开发者安全的七大可行实践
  6. NAME:WRECK 漏洞影响近亿台物联网设备
  7. 安全研究员公开 vBulletin 0day 的详情和 PoC
  8. Django restframework 嵌套关系处理
  9. 腾讯云centos7下搭建fastDFS+nginx
  10. create-react-app 自定义 eslint 配置