Professional Documents
Culture Documents
Rundeck使用文档
Rundeck使用文档
Rundeck使用文档
一、 安装
Rundeck 只需要在控制节点上安装即可,client 节点不需要安装。控制节点通过 ssh 将
控制指令发送 client node,控制节点成为 server 节点。
1、 下载安装包:
地址 http://rundeck.org/downloads.html 可以下载 release 的各个版本,压缩包
有 rpm、jar、deb、tar 各类压缩包。
2、 安装环境:
a) 这里使用 jar 包安装, Rundeck 要求 Java 版本 1.6,安装期间用的 JDK、JVM,
安装前要设置好 JAVA_HOME。查看当前机器使用的 Java 版本的命令:java
–version
b) 网络端口,Rundeck 默认使用 tcp 端口 4440(http),4443(https)。查看网络端
口是否已经被使用。
3、 安装:
a) 定义 RDECK_BASE 环境变量
Export RDECK_BASE=/opt/rundeck
b) 创建 RDECK_BASE 环境变量设置的安装目录
Mkdir –p $RDECK_BASE
c) 复制安装用到的 laucher jar 包到安装目录
Cp rundeck-launcher-2.1.1.jar $RDECK_BASE
d) 切换当前路径到安装目录,进行安装操作
Cd $RDECK_BASE
Java –jar rundeck-launcher-2.1.1.jar
执行完上述命令,Rundeck 开始执行安装。
e) 等到执行输出下面信息,表示安装成功:
2014-05-20 13:35:51.127::INFO: Started SocketConnector@0.0.0.0:4440
f) 设置 shell 环境变量:
PATH=$PATH:$RDECK_BASE/tools/bin
MANPATH=$MANPATH:$RDECK_BASE/docs/man
4、 SSH 配置
Server 节点和 client 节点之间传送命令通过 SSH 发送, 因此需要配置 SSH 的 public key。
server 端配置:
当有提示时,全部回车。密码为空。产生~/.ssh/id_dsa.pub 文件.
ssh-keygen -t rsa
Client 端配置:
当有提示时,全部回车。密码为空。
ssh-keygen -t rsa
将 Server 端产生的~/.ssh/id_dsa.pub 文件复制到 Client 端的
~/.ssh/authorized_keys 文件。
设置 authorized_keys 权限
$ chmod 600 authorized_keys
设置.ssh 目录权限
$ chmod 700 .ssh
5、 client 节点管理配置:
Rundeck 的 client 节点的管理是通过在 resources.xml 配置文件中添加,删除,修
改 node 标签内的选项来管理的。Node 标签实例:
<node name="strongbad" type="Node"
description="a development host"
hostname="host:portno"
osArch="i386" osFamily="unix" osName="Darwin" osVersion="9.2.2"
tags=test
username="alexh"/>
resources.xml 配置文件在每个 project 的 etc 目录下,按照 project 来配置 node
节点的,也就是说每个 project 都有自己的 node 列表。这里是使用 launcher 安装
的,resources.xml 的路径为:
$RDECK_BASE/projects/myproj/etc/resources.xml。
二、使用
1、 startup and shutdown
rundeck 的安装方式的不同启用的方式也不同,rundeckd 脚本提供以下的操作:
rundeckd [start|stop|restart|condrestart|status]
使用 launcher 方式安装产生的 Rundeckd 脚本的位置为:
$RDECK_BASE/server/sbin/rundeckd
Startup
$RDECK_BASE/server/sbin/rundeckd start
Shutdown
$RDECK_BASE/server/sbin/rundeckd stop
2、 login
rundeck 默认使用 4440 端口,登陆 Rundeck 需要在浏览器地址栏输入 ip:port(比
如 172.18.9.122:4440) ,ip 即为 Rundeck 所安装的 server 的 IP。4440 端口没有
被占用并且 Rundeckd 完全启动的情况下,浏览器会显示登陆界面。默认的用户
名:”admin”,密码:”admin”。
3、 create project
Rundeck 使用 project 管理各类操作,每一个操作都位于一个具体的 project 中。
同一个 server 中可以创建多个不同的 project,各个 project 相互独立。Project
配置可以导出, 并导入到另外的 server 中。 新安装的 server 上没有 project 范例。
a) project 的配置文件
project 的配置文件(project.properties),launcer 安装情况下该配置文件
的位置:
$RDECK_BASE/projects/myproj/etc/project.properties。
b) project setup
创建一个 project 可以使用控制台 shell 工具 rd-project,也可以在图形控制
界面中点击”new project”按钮来创建一个 project。图 2-1 是点击“new
project”按钮后出现的界面。
图 2-1
Project 创建完成后页面会返回到 project 页面中,系统行正常情况下可以在
任意时刻创建 project。图 2-2 是 project 创建成功后返回 project 页面。
图 2-2
Project 创建成功后会在 server 上生成该 project 的配置文件
project.properties,以及一个 bootstrap 类型的 resource model 文件,
resource model 文件包含该 project 相关的 node 信息。Project 的 node 列表
如图 2-3
图 2-3
Project 所在的 server 节点会在节点名称后面显示红色 server 字样。
c) resource setup
生成的 resource model 文件中记录了 Rundeck server 可以调用的节点的元数
据,每个 project 都有自己的 resource model 文件,resource.xml。
与 controltier 类似,Rundeck 的 node 节点也有 tags 属性,可以使用 tags
对 node 节点进行分类管理。XML 文档的 node 标签事例:
<node name=”homestar”
Tags=”tag1,tag2”
osFamily=”unix”
hostname=”192.168.1.2”
username=”alex” />
hostname 和 name 值在使用 SSH 连接时使用,hostname 用以标识远程主,命令
的执行者是 username。如果 server 和 node 节点使用的端口不是 SSH 默认的 22
端口,可以再 hostname 标签中指定,例如:hostname=”192.168.1.2:2022”。
Rundeck 也支持使用远程的 web site URL 资源。
e) Running a job
执行 job 可以通过在 jobs 栏列出的 job 执行操作。点击 job 列表中每个 job 左侧的
run 图标执行这个 job,如果你不能看到 run 图标表示你没有执行该 job 的权限。
Job run 图标
执行 run 操作之后将会弹出对话框,显示 job 的执行状态,有 kill job 的权限可以 kill
掉正在执行的 job。
f) Choose execution options
点击 run 图标之后,执行选定的 job 定义的操作。这时候页面将出现 Activity 栏下,
显示该 job 的执行进度,和执行的状态,执行过程中的输出,执行报告,和 job 的
定义,以及重新执行按钮,有编辑权限的可以对 job 执行编辑操作。点击 Activity
栏将显示已经存在的执行记录。
g) Creating jobs
在 jobs 栏下,点击”Create job”按钮执行创建 job。菜单栏列出创建 job 和编辑 job
按钮。
h) Multiple executions
默认情况下,job 执行模式是单次执行,即是 job 执行期间 work flow 定义的操作只
执行一次。但是 job 执行的操作和 node 节点上的其他进程存在交互的情况下在 job
执行期间需要多次执行 work flow 定义的操作。然而,在某些情况下 job 执行期间多
次运行 work flow 定义的操作是很有必要的。
要在 job 中设置 multiple execution 可以编辑 job 的定义,在 multiple execution 的单
选框中选择”yes”,而不是默认的”no”。如下图所示:
m) killing job
立即 kill 掉当前正在运行的 job,注意:这里 kill job 是 kill 掉 job 正在运行的进程。
n) deleting job
在 job 的编辑页右下角有鼠标放上显示红色 X 的图标,点击该图标将删除该 job。
o) updating and copying jobs
job 创建成功之后可以编辑 job 的所有的内容,除了 UUID。
3、 defining an option
添加新的 option 通过点击”add an option”进入 option 定义页面,或者点击 option
后面的”edit”选项编辑已有的 option 定义。完成 option 的各项设置后点击”save”
保存 option 的设置, 如果不保存对该 option 的设置点击 discard,
放弃对该 option
的修改。
Option 定义的各个选项:
Identification:option 的名称,job 脚本调用该 option 的参数时需要通过 option
的 name 来获取 option 的值。例如定义了一个 option name 为 host,那么在脚
本中调用需要时用${option.host}来引用这个 option name 的值。
Input type:该选项有 ”plain, secure, secure remote authentication”三个可选,使
用 plain 之外的其他两个选项不能输入多个值。
Default value:option 默认值,如果 option 没有被设置或者被用户指定,在执行
job,command-line,API 时将使用该 option 的默认值。注意:在 command-line,api
调用的时候指定 option 值为空,将改写 option 的默认值。
Allowed value:option 可取的值,这个选项包括一个静态的值列表,或者提供
选项值的 URL,多个值使用逗号分隔”,”。也可以使用其它的数据值通过”remote
URL”。
Restrictions:option 显示和输入值的限制,如果” Enforced from values” 选项设
置为 true,option 将只显示可选值的下拉列表。
Requirement:设置这个 option 的值在 job 执行时是否是必须的。选择”NO”,即
为 job 在执行期间这个 option 的值可以为空。选择”YES”即为 job 执行时该 option
不允许使用空值。
Multi-valued:定义用户是否可以输入多个值。选择”NO”,即为只允许用户输入
一个值。选择”YES”为允许用户输入多个值。
设置完 option 的定义之后点击”Save”将该 option 的定义添加到 job 中。选
择”Cancel”将放弃对 option 的操作。
4、 Script usage
Job 中定义的 option 可以作为 job 的脚本参数也可以在脚本的内部引用 option
的值。Option 在 job 的上下文变量为:option.NAME。
例如:有个名称为”hello”的 job 并有一个 option 名称为”message”。
Option 用法:
Option 作为脚本参数,引用形式:${option.message}
下面简单介绍一下 option 在脚本中的使用方法:
#! /bin/bash
Echo envvar=$RD_OPTION_MESSAGE message 作为环境变量引用
Echo args=$1 message 作为脚本的参数向量
Echo message=@option.message@ 使用标志语法访问 message
当用户运行”hello”这个 job 的时候,界面将提示输入”message”的值。
加入用户输入了”howdy”这个值,上面的脚本输出应该为:
Envar=howdy
Args=howdy
Message=howdy
如果你定义的 option 是”Required”的,如果不输入值 job 将无法执行直到输入
值。反之,如果不是”Required”的,该 option 可以不输入值使这个 option 设置
为空,这时脚本的执行结果应该为:
Envar=
Args=
Message=
Secure Options
Option 可以被标记为”Secure”,在 GUI 中显示密码提示,secure 类 option 的值没
有和其他的 option 的值存放在一起。
存在两种 secure 类 option:
Secure:这种类型的 option 的值显示在脚本和命令行中
Secure remote authentication:这种类型的 option 的值不显示在脚本和命令行中,
只用于节点的授权和执行命令授权。
Secure 类 option 不支持输入多个值
Secure 类 option 不支持对节点授权,节点执行操作需要授权必须使用 secure
remote authentication。
Nodes
概述:node 为 Rundeck 可以访问的物理节点或虚拟节点,节点具有各种属性,通过设
置键/值对来扩展节点的属性,比较常用的属性”tag” ,使用 tag 属性来对节点进行分类管理。
Node 节点的管理是按照 project 来分类的,每个 project 都有各自的 node 列表。节点添加和
删除操作是通过编辑 project 的配置文件 resource.xml 来实现的。节点的管理也可以通过插
件提供的 URL 地址来实现,将 node 节点信息导入。本文后面提到的插件设置可以实现这一
功能。Rundeck 的 node 节点列表如下所示:
节点的选择:
Node 节点常用的一个功能是节点的选择,常用的选择有两种:一个是指定 name 属性选择
单一的节点。另一个是通过正则表达式形成节点列表,指定一系列的节点。选择多个节点的
方式有指定 tag 的值,或正则表达式。 如下所示通过指定 tag 值来选择节点,job 中的节点
选择方式与这里所讲述的一致。
使用正则表达式选择节点,如下所示:
ACL(Access Control Policy)
Rundeck 的访问控制规则来设置用户或者用户组的访问权限,控制用户或用户组只能对指定
的资源进行访问。Rundeck 的资源类型包括:project, job, node, commands 和 API。每一个操
作的执行都需要赋予执行者一定的权限。Rundeck 的用户管理按照角色管理的方式进行,每
一个用户都需要赋予一个角色。
ACL 在本版本的 Rundeck 中是应用 YAML 格式文档来配置用户的权限的,在该文档中设置系
统的资源和用户对资源的权限。Rundeck 中在指定的目录中设置任意命名的以 aclpolicy 结尾
的配置文档在系统中均生效。
如下所示是系统/etc/rundeck 目录下的配置文件列表:
配置文件如下所示:
[root@public-multirole-p-vnetz rundeck]# cat X3.aclpolicy
description: user, x3.
context:
project: 'X3'
for:
resource:
- equals:
kind: job
allow: [read] # allow read/create all kinds
- equals:
kind: node
allow: [read,create,update,refresh]
- equals:
kind: event
allow: [read,create]
adhoc:
- allow: [read,runAs,killAs,run,kill] # allow read/running/killing adhoc jobs
job:
- match:
group: 'x3 计算节点更新'
name: '.*'
allow: [read,run,runAs,kill,killAs] # allow read/write/delete/run/kill of all jobs
node:
- allow: [read,run] # allow read/run for all nodes
by:
username: x3
---
description: x3
context:
application: 'rundeck'
for:
resource:
- equals:
kind: project
allow: [read] # allow create of projects
- equals:
kind: system
allow: [read]
- equals:
kind: user
allow: [read]
project:
- match:
name: 'X3'
allow: [read] # allow view/admin of all projects
storage:
- allow: [read,create] # allow read/create/update/delete for all /keys/* storage content
by:
username: 'x3|x3deployer'
Authenticating users
Rundeck 的认证有三种方式,PropertyFileLoginModule,LDAP,PAM。这里介绍一下使用
PropertyFileLoginModule 方式,这种方式使用最简单,也就是修改 realm.properties 文件来定
义用户的和角色。即是在 realm.properties 文件中添加用户,密码,角色。
密码可以使用明文经过 MD5 加密的密文,也可以直接使用密码明文。
如下所示为 realm.properties 中的用户列表。
Logs
Rundeck 的日志存放路径根据安装方式的不同存放的路径也不同:
RPM 安装日志存放路径: /var/log/rundeck/
Launcher 安装日志存放路径:$RDECK_BASE/server/logs
Rundeck 中日志文件列表:
.
|-- command.log
|-- rundeck.audit.log
|-- rundeck.jobs.log
|-- rundeck.options.log
|-- rundeck.log
`-- service.log
在 launcher 安装日志的路径如下:
Service.log 位于$RDECK_BASE/var/log/目录中
Command.log 位于$RDECK_BASE/var/logs/目录中
Rundeck.audit.log, Rundeck.jobs.log, Rundeck.options.log, Rundeck.log 位于
$RDECK_BASE/server/logs/ 目录下。
在 RPM 安装日志的路径 为/var/log/rundeck/目录。
Command.log :记录 Rundeck 的 shell 命令行工具的执行日志。
Rundeck.audit.log :依据 aclpolicy 制定的规则记录认证登陆日志。
Rundeck.job.log :记录 job 的定义修改日志。
Rundeck.options.log :远程 HTTP 请求 JSON 数据的日志。
Rundeck.log : Rundeck 整天的应用日志。
Service.log :Rundeck 运行期间标准输入/输出的信息日志。