RunDeck IT automation tool step by step installation guide

Introduction

RunDeck is an Open source server application to automate our daily IT tasks by replacing tools like Ansible, puppet, chef. RunDeck will store the job definitions and execution history using a relational database at the back-end in the form of file-based data storage. RunDeck available in pro version and it’s free to give a try.

Let us walk through the setup guide of Run Deck in a virtual machine.

Here we are using an Oracle 7 Virtual Machine with host name “rundeck.oel7.local” which served from a DNS server.

# hostnamectl status

Install Java and configure

RunDeck based on Java so we have to install with OpenJDK Java or Oracle Java.

# yum install java-1.8.0-openjdk -y

Check the version of Installed Java Version.

# java -version

This the version we are installed with

[root@rundeck ~]# java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
[root@rundeck ~]#

Once done with Java installation make sure to choose the right version of Java if your server installed with multiple versions of Java.

# alternatives --config java

Output for your reference

[root@rundeck ~]# alternatives --config java

There is 1 program that provides 'java'.

Selection Command
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 1
[root@rundeck ~]#

Firewall configuration

We need to allow the traffic for HTTP 4440 and HTTPS 4443 ports.

Check for the current status we are not enabled with above two ports.

# firewall-cmd --list-all
[root@rundeck ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources: 
services: ssh dhcpv6-client
ports: 
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules:

Add the required ports and list it.

# firewall-cmd --add-port=4440/tcp --add-port=4443/tcp
# firewall-cmd --list-all
[root@rundeck ~]# firewall-cmd --add-port=4440/tcp --add-port=4443/tcp
success
[root@rundeck ~]#

[root@rundeck ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources: 
services: ssh dhcpv6-client
ports: 4440/tcp 4443/tcp
protocols: 
masquerade: no
forward-ports: 
source-ports: 
icmp-blocks: 
rich rules: 
[root@rundeck ~]#

Password less authentication

By default user account will be created in the name of “rundeck” during the installation

To manage the remote servers from “rundeck” we can use any account which can be changed later. For time being we are about to create an SSH Key for root user and copy the key to remote servers which are managed by RunDeck.

# ssh-keygen# ssh-copy-id root@ansiclient1.oel7.local

Installing Rundeck Packages

Now let us start with installing the packages.

Install from repository to get the RunDeck package.

# rpm -Uvh http://repo.rundeck.org/latest.rpm
[root@rundeck ~]# rpm -Uvh http://repo.rundeck.org/latest.rpm
Retrieving http://repo.rundeck.org/latest.rpm
warning: /var/tmp/rpm-tmp.Y2TEvH: Header V4 RSA/SHA1 Signature, key ID e2d1065b: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:rundeck-repo-4-0 ################################# [100%]
[root@rundeck ~]#

Search for Rundeck package “yum search rundeck” and install it using “yum install rundeck -y”.

# yum search rundeck
# yum install rundeck -y
[root@rundeck ~]# yum search rundeck
rundeck-cli.noarch : A commandline tool for Rundeck.
rundeck-config.noarch : RunDeck configuration package
rundeck-repo.noarch : Rundeck Repository Bootstrap
rundeck.noarch : It Slices, it Dices, it Takes Out Your Garbage
[root@rundeck ~]#

[root@rundeck ~]# yum install rundeck -y
---> Package rundeck.noarch 0:2.10.8-1.50.GA will be installed
--> Processing Dependency: rundeck-config for package: rundeck-2.10.8-1.50.GA.noarch
--> Running transaction check
---> Package rundeck-config.noarch 0:2.10.8-1.50.GA will be installed
--> Finished Dependency Resolution
Installing:
rundeck noarch 2.10.8-1.50.GA rundeck-release-bintray 106 M
Installing for dependencies:
rundeck-config noarch 2.10.8-1.50.GA rundeck-release-bintray 10 k
Public key for rundeck-config-2.10.8-1.50.GA.noarch.rpm is not installed
(1/2): rundeck-config-2.10.8-1.50.GA.noarch.rpm | 10 kB 00:00:02 
(2/2): rundeck-2.10.8-1.50.GA.noarch.rpm | 106 MB 00:02:07 
-------------------------------------------------------------------------------------
Installing : rundeck-config-2.10.8-1.50.GA.noarch 1/2 
Installing : rundeck-2.10.8-1.50.GA.noarch 2/2 
Verifying : rundeck-2.10.8-1.50.GA.noarch 1/2 
Verifying : rundeck-config-2.10.8-1.50.GA.noarch 2/2

Installed:
rundeck.noarch 0:2.10.8-1.50.GA

Dependency Installed:
rundeck-config.noarch 0:2.10.8-1.50.GA

Complete!
[root@rundeck ~]#

Starting the service

Start the RunDeck service and check the status.

# systemctl status rundeckd
# systemctl start rundeckd
# systemctl enable rundeckd
[root@rundeck ~]# systemctl status rundeckd
● rundeckd.service - SYSV: rundeckd, providing rundeckd
Loaded: loaded (/etc/rc.d/init.d/rundeckd; bad; vendor preset: disabled)
Active: active (running) since Fri 2018-04-06 02:28:28 IST; 17s ago
Docs: man:systemd-sysv-generator(8)
Main PID: 35014 (runuser)
CGroup: /system.slice/rundeckd.service
‣ 35014 runuser -s /bin/bash -l rundeck -c java -Djava.security.auth.login.config=/etc/rundeck/...

Apr 06 02:28:28 rundeck.oel7.local systemd[1]: Starting SYSV: rundeckd, providing rundeckd...
Apr 06 02:28:28 rundeck.oel7.local rundeckd[35006]: Starting rundeckd: [ OK ]
Apr 06 02:28:28 rundeck.oel7.local systemd[1]: Started SYSV: rundeckd, providing rundeckd.
[root@rundeck ~]#

Here we are able to see the “rundeck” user ID which created during the installation.

[root@rundeck ~]# cat /etc/passwd | tail -n 1
rundeck:x:1001:1001::/var/lib/rundeck:/bin/bash
[root@rundeck ~]#

Post Installation Configurations

Once done with installation if we need to make changes to hostnames or to URL we can by editing framework.properties. I have made a few changes only for my Web URL from “localhost” to “rundeck.oel7.local” look into below output.

# vi /etc/rundeck/framework.properties

# ----------------------------------------------------------------
# Rundeck server connection information
# ----------------------------------------------------------------

framework.server.name = rundeck
framework.server.hostname = rundeck
framework.server.port = 4440
framework.server.url = http://rundeck.oel7.local:4440

# ----------------------------------------------------------------
# Installation locations
# ----------------------------------------------------------------

rdeck.base=/var/lib/rundeck

framework.projects.dir=/var/rundeck/projects
framework.etc.dir=/etc/rundeck
framework.var.dir=/var/lib/rundeck/var
framework.tmp.dir=/var/lib/rundeck/var/tmp
framework.logs.dir=/var/lib/rundeck/logs
framework.libext.dir=/var/lib/rundeck/libext

Once login to the web interface we can see the above configuration under Gear Icon on the right side –> System Configuration.

If we required to set up the logs storage location it can be done from log4j.properties configuration file.

# vi /etc/rundeck/log4j.properties

Created users in Web Interface can be found under

# vi /etc/rundeck/realm.properties

To make any changes to more rundeck configurations by changing the log level or DB source URL.

# vi /etc/rundeck/rundeck-config.properties
#loglevel.default is the default log level for jobs: ERROR,WARN,INFO,VERBOSE,DEBUG
loglevel.default=INFO
rdeck.base=/var/lib/rundeck

#rss.enabled if set to true enables RSS feeds that are public (non-authenticated)
rss.enabled=false
# change hostname here
grails.serverURL=http://rundeck.oel7.local:4440
dataSource.dbCreate = update
dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true

Once done with any changes restart the “rundeck” service to take effect the changes.

# systemctl restart rundeckd

Accessing Rundeck Web Interface (UI)

Let us navigate to Web Interface.

Once we access the URL using the port number “4440” or “4443” we will get the sign in page using the default credentials username and password as “admin“.

http://rundeck.oel7.local:4440/
Run Deck Web Interface
RunDeck first login screen

After sing in, we will get the home page as shown in below picture.

Run Deck Web Interface after login
After the first login

We can create our required user account from Gear Icon –> profile

Run Deck Profile
User profile page

Gear Icon –> System Report to get the health report about the RunDeck server.

RunDeck Report
System Report

Gear Icon –> List Plugins to list all the existing installed plugins.

RunDeck Plugins
Installed plugins

That’s it we have done with setting up a RunDeck server for our IT environment automation tasks.

In the upcoming guide let us see how to add nodes, create projects etc.

Conclusion:

Run deck will help to automate our IT need, Have vast features for to manage our day to day operations. Will come-up with more Run deck topics in feature until then subscribe to our newsletter and stay with us. Your feedback’s are most welcome in below comment section.