rundeck CentOS 部署以及配置
一个运维组件
简介
rundeck 是一个在多机器环境下实现自动化执行以及调度任务的开源工具。rundeck 提供了web 界面,用户可以通过web 界面定制任务,调度,观察节点的执行情况。
安装与配置
安装
rundeck 的官网位置rundeck
rundeck 运行依赖于java,因此需要首先安装并配置java
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y
在 /etc/profile.d 目录下创建 java.sh, 在java.sh 中写入
#!/bin/bash
JAVA_HOME=/usr/bin/java
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME
export CLASSPATH=.
为java.sh 添加执行权限
chmod +x /etc/profile.d/java.sh
使java环境变量生效
source /etc/profile.d/java.sh
使用yum 安装rundeck
rpm -Uvh http://repo.rundeck.org/latest.rpm
yum install rundeck
如果使用yum 安装失败,可以使用rpm 的方式安装。
wget http://download.rundeck.org/rpm/rundeck-2.11.5-1.56.GA.noarch.rpm
wget http://download.rundeck.org/rpm/rundeck-config-2.11.5-1.56.GA.noarch.rpm
rpm -i rundeck-2.11.5-1.56.GA.noarch.rpm rundeck-config-2.11.5-1.56.GA.noarch.rpm
启动rundeck 服务
/etc/init.d/rundeckd start
检查rundeck 是否启动
ps -ef | grep rundeck
netstat -anp | grep 4440
配置
更改默认用户名密码
rundeck 默认用户名密码都是admin,可以更改/etc/rundeck/realm.properties 文件中相应位置。更改后重启rundeck 服务
service rundeckd restart
更改根url设置
如果只在部署rundeck的机器访问rundeck web界面则不需要
vim /etc/rundeck/rundeck-config.properties
vim /etc/rundeck/framework.properties
把这两个文件中所有的localhost 更改为本机的ip地址然后保存
添加node节点
在下面示例中展示
示例
在浏览器中输入rundeck 地址,以我部署的服务为例http://10.4.227.26:4440/
默认输入 admin admin 登录, 登录后新建一个project
输入新建project 的名称以及描述其他按照默认选择,以test 为例,滚动到页面最后点击create 创建
下一步继续按照默认配置保存
新建工程后,我们查看工程下的node 节点
可以看到默认情况工程下只有server node 节点。为了添加其他节点,我们进入到 /var/rundeck/projects/test/etc 路径,编辑resources.xml 文件,默认情况resources.xml 下只有server node, 如下图
<?xml version="1.0" encoding="UTF-8"?>
<project>
<node name="10.4.227.26" description="Rundeck server node" tags="" hostname="10.4.227.26" osArch="amd64" osFamily="unix" osName="Linux" osVersion="3.10.0-123.el7.x86_64" username="rundeck"/>
</project>
以10.4.227.21为例,添加node节点,添加client node 节点后配置如下
<?xml version="1.0" encoding="UTF-8"?>
<project>
<node name="10.4.227.26" description="Rundeck server node" tags="" hostname="10.4.227.26" osArch="amd64" osFamily="unix" osName="Linux" osVersion="3.10.0-123.el7.x86_64" username="rundeck"/>
<node name="10.4.227.21" description="Rundeck client node" tags="" hostname="10.4.227.21" osArch="amd64" osFamily="unix" osName="Linux" osVersion="3.10.0-123.el7.x86_64" username="ce39906"/>
</project>
新增的hostname username 需要配置正确。
完成配置后,刷新web 界面,可以看到新增的10.4.227.21
仅仅在rundeck server 添加如下配置不能实现rundeck server 到client 的无密码连接。因此,我们登录到rundeck client机器(10.4.227.21),将 rundeck server(10.4.227.26) /var/lib/rundeck/.ssh/id_rsa.pub 的内容追加到 client 机器中的 ~/.ssh/authorized_keys
以上就完成rundeck node 节点的添加。下面我们测试通过web 界面配置在指定的node 节点上执行命令
选择所有节点后,我们以执行 ls /tmp 为例
点击右上角的执行,执行结果如下
除了简单的命令,rundeck job 支持实现更加复杂的任务。我们以执行脚本为例进行说明。首先新建一个job
配置job 的名称以及描述
在step 中选择执行脚本任务
点击后编辑脚本并保存
选择执行job 的node, 这里我们选择client node(10.4.227.21) 执行
其他使用默认配置,点击创建,创建完成后执行job
执行结果如下
可以看到在rundeck client 上执行了job 指定的脚本(执行 whoami 以及 ifconfig)
思考
rundeck 在完成初始配置后可以很方便用于在一组机器上执行各种任务,这种场景在生产环境以及日常运维中非常常见,类似的工具还有jenkins
前段时间公司部门要求开发自动部署工具,全套使用脚本+ ssh 的方式,健壮性和稳定性都存在不少问题。类似的自动部署的功能完全可以使用rundeck 配置job 的方式执行而不需要重新造轮子再搞一套鸡肋的东西。