rundeck使用的一些注意事项

前言

记录rundeck在使用的过程中的一些注意事项.

SSH端口改变了怎么处理?

我们知道rundeck是基于ssh的,而rundeck提供的配置文件中,没有配置ssh端口的选项.

  • 我们可以在新建项目的时候,在前端的配置文件中按如下的配置

“Default Node Executor” 选择 “Script Execution”

1
ssh -p 11022 -i /etc/rundeck/.sshkeys/publisher -o "StrictHostKeyChecking no" ${node.username}@${node.hostname} ${exec.command}

ssh执行器

“Default Node File Copier” 选择 “Script Execution”

1
rsync -rvzt --exclude='.svn/' --exclude='.git/' --exclude='.idea/' -e 'ssh -p 11022 -i /etc/rundeck/.sshkeys/publisher -o StrictHostKeyChecking=false' ${file-copy.file} ${node.username}@${node.hostname}:${file-copy.destination}

ssh文件拷贝执行器

  • 如果项目已经配置好了,也可以在对应项目的etc/project.properties文件中定义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#Tue Jan 10 15:16:11 CST 2017
#edit below
project.description=我的第一个项目
project.name=my_first_project
project.nodeCache.delay=30
project.nodeCache.enabled=true
project.ssh-keypath=/etc/rundeck/.sshkeys/publisher
resources.source.1.config.file=/data/rundeck/projects/ad.uu66.com/etc/resources.xml
resources.source.1.config.format=resourcexml
resources.source.1.config.generateFileAutomatically=true
resources.source.1.config.includeServerNode=true
resources.source.1.config.requireFileExists=false
resources.source.1.type=file
# file copy define
service.FileCopier.default.provider=script-copy
plugin.script-copy.default.command=rsync -rvzt --exclude\='.svn/' --exclude\='.git/' --exclude\='.idea/' -e 'ssh -p 11022 -i /etc/rundeck/.sshkeys/publisher -o StrictHostKeyChecking\=false' ${file-copy.file} ${node.username}@${node.hostname}\:${file-copy.destination}
plugin.script-copy.default.shell=bash -c
# node execution define
service.NodeExecutor.default.provider=script-exec
plugin.script-exec.default.command=ssh -p 11022 -i /etc/rundeck/.sshkeys/publisher -o "StrictHostKeyChecking no" ${node.username}@${node.hostname} ${exec.command}
plugin.script-exec.default.shell=bash -c

注意提前在各个node上做好密钥验证

怎么在project下添加node节点?

当我们建立一个项目的时候,默认只会有server一个节点.如果需要在这个项目下配置其他机器,可以编辑对应项目的etc/resources.xml资源文件

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<project>
<node name="localhost" description="Rundeck server node" tags="" hostname="localhost" osArch="amd64" osFamily="unix" osName="Linux" osVersion="3.10.0-123.el7.x86_64" username="www"/>
<node name="safe-115.12.12.12" description="web node for safe environment" tags="web,safe" hostname="10.105.196.25" osArch="amd64" osFamily="unix" osName="Linux" osVersion="3.10.0-123.el7.x86_64" username="www" role="web" env='safe'/>
<node name="product-11.11.11.11" description="web node for safe environment" tags="web,product" hostname="10.105.210.115" osArch="amd64" osFamily="unix" osName="Linux" osVersion="3.10.0-123.el7.x86_64" username="www" role="web" env='product'/>
</project>

我们可以在node中配置我们对于这个node的一些环境变量, 比如我定义了
role: web
env: product
..
之后我们可以在job的定义中,可以通过定义的变量去筛选服务器
node过滤
同样也可以在nodes看到
node过滤

怎么添加用户?

用户的配置文件在/etc/rundeck/realm.properties文件中,我们可以通过jetty-all的jar包生成帐号和密码信息

1
2
3
4
5
6
7
8
9
# find /var/lib/rundeck/ -iname "*jetty-all*"
/var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar
# java -cp /var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar org.eclipse.jetty.util.security.Password {用户名} {密码}
# java -cp /var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar org.eclipse.jetty.util.security.Password RunAdmin yangcan
yangcan
OBF:1ytm1ri71uh61tvj1ugk1ri71yt0
MD5:16cb5051f94fc7798e49d10b9eb1ea72
CRYPT:RuJ7rNskTJFEE

上面给出了不同的算法加密的密码

可以在文件的/etc/rundeck/realm.properties中配置用户,它的格式

1
2
3
# <username>: <password>[,<rolename> ...]
RunAdmin: MD5:16cb5051f94fc7798e49d10b9eb1ea72,user,admin,architect,deploy,build

TODO 未完待续

  • rundeck的权限配置
分享即快乐,谢谢你请思哲小朋友吃糖!