[TOC]
¿Qué es Rundeck?
Rundeck es un software gratuito y de código abierto para administrar automáticamente servidores ( Linux , Windows y MacOS ) a través de trabajos programados .
Rundeck se basa en la idea de administrar todos los servidores en una red informática desde un servidor de administración. Rundeck proporciona una interfaz web para realizar estas tareas de gestión.
Rundeck está escrito en el lenguaje de programación Java y se distribuye bajo la licencia Apache Software 2.0 .
Rundeck proporciona edición empresarial (comercial) y edición comunitaria (gratuita) . En comparación con Rundeck Community Edition, Rundeck Enterprise proporciona más funciones, pero debe pagar por ello.
Características de Rundeck:
Las funciones principales de Rundeck son:
- API web
- Sistema de ejecución conectable (por defecto es SSH)
- Ejecución distribuida de comandos
- Flujo de trabajo de varios pasos
- Consola web gráfica para ejecutar comandos y trabajos
- Estrategia de control de acceso basada en roles
- Ejecute trabajos a pedido o según lo programado
- Herramienta de interfaz de línea de comandos
- Historial y registro de auditoría
Especificaciones ambientales:
- CPU : 3,4 GHz (2 núcleos)
- RAM : 2 GB
- Espacio de almacenamiento : 20 GB
- Sistema operativo : CentOS 8.2
- Nombre de host : rundeck.lianglab.cn
- Dirección IP : 192.168.6.200/24
Paso 1: instale la actualización de software en CentOS 8
Utilice la herramienta SSH para conectarse con rundeck.lianglab.cn como usuario root .
Utilice el comando dnf para actualizar todos los paquetes instalados en CentOS 8.
[root@mariadb ~]# hostnamectl set-hostname rundeck.lianglab.cn
[root@mariadb ~]# dnf update -y
Dependencies resolved.
Nothing to do.
Complete!
Nuestro servidor CentOS 8 ya está actualizado, por lo que no tiene nada que ver con el administrador de paquetes de Linux.
Paso 2: Instale Java en CentOS 8
Rundeck está escrito en lenguaje de programación Java , por lo que necesita JRE (Java Runtime Environment) para ejecutarse.
Por lo tanto, instalamos OpenJDK en CentOS 8 en nuestro repositorio yum estándar como se muestra a continuación.
[root@mariadb ~]# dnf install -y java-1.8.0-openjdk
...
Installed:
java-1.8.0-openjdk-1:1.8.0.252.b09-2.el8_1.x86_64
gtk2-2.24.32-4.el8.x86_64
alsa-lib-1.1.9-4.el8.x86_64
copy-jdk-configs-3.7-1.el8.noarch
fribidi-1.0.4-7.el8_1.x86_64
gdk-pixbuf2-modules-2.36.12-5.el8.x86_64
giflib-5.1.4-3.el8.x86_64
graphite2-1.3.10-10.el8.x86_64
gtk-update-icon-cache-3.22.30-4.el8.x86_64
harfbuzz-1.7.5-3.el8.x86_64
hicolor-icon-theme-0.17-2.el8.noarch
jasper-libs-2.0.14-4.el8.x86_64
java-1.8.0-openjdk-headless-1:1.8.0.252.b09-2.el8_1.x86_64
javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch
jbigkit-libs-2.1-14.el8.x86_64
libX11-1.6.7-1.el8.x86_64
libX11-common-1.6.7-1.el8.noarch
libXau-1.0.8-13.el8.x86_64
libXcomposite-0.4.4-14.el8.x86_64
libXcursor-1.1.15-3.el8.x86_64
libXdamage-1.1.4-14.el8.x86_64
libXext-1.3.3-9.el8.x86_64
libXfixes-5.0.3-7.el8.x86_64
libXft-2.3.2-10.el8.x86_64
libXi-1.7.9-7.el8.x86_64
libXinerama-1.1.4-1.el8.x86_64
libXrandr-1.5.1-7.el8.x86_64
libXrender-0.9.10-7.el8.x86_64
pixman-0.36.0-1.el8.x86_64
ttmkfdir-3.0.9-54.el8.x86_64
tzdata-java-2019c-1.el8.noarch
xorg-x11-font-utils-1:7.5-40.el8.x86_64
xorg-x11-fonts-Type1-7.5-19.el8.noarch
avahi-libs-0.7-19.el8.x86_64
cups-libs-1:2.2.6-28.el8.x86_64
dejavu-fonts-common-2.35-6.el8.noarch
dejavu-sans-fonts-2.35-6.el8.noarch
fontconfig-2.13.1-3.el8.x86_64
fontpackages-filesystem-1.44-22.el8.noarch
gdk-pixbuf2-2.36.12-5.el8.x86_64
lksctp-tools-1.0.18-3.el8.x86_64
Complete!
Para verificar la instalación de Java Runtime Environment , verifique la versión del comando java .
[root@rundeck ~]# java -version
openjdk version "11.0.9" 2020-10-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.9+11-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.9+11-LTS, mixed mode, sharing)
Paso 3: Instale el repositorio Rundeck Yum en CentOS 8
El software Rundeck se distribuye a través de su repositorio oficial de yum. Por lo tanto, necesitamos agregar el repositorio Rundeck yum en el servidor CentOS 8.
Rundeck proporciona un paquete RPM para instalar el repositorio de yum en CentOS 8. Por lo tanto, usamos el comando dnf para instalar.
[root@rundeck ~]# dnf install -y http://repo.rundeck.org/latest.rpm
Last metadata expiration check: 2:56:08 ago on Sun 27 Dec 2020 07:03:07 PM CST.
latest.rpm 1.8 kB/s | 3.0 kB 00:01
Dependencies resolved.
=====================================================================================================================
Package Architecture Version Repository Size
=====================================================================================================================
Installing:
rundeck-repo noarch 4-0 @commandline 3.0 k
Transaction Summary
=====================================================================================================================
Install 1 Package
Total size: 3.0 k
Installed size: 181
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : rundeck-repo-4-0.noarch 1/1
Verifying : rundeck-repo-4-0.noarch 1/1
Installed products updated.
Installed:
rundeck-repo-4-0.noarch
Complete!
Cree un caché para el repositorio de Rundeck .
[root@rundeck ~]# dnf makecache
CentOS-8 - Base - mirrors.tongdun.cn 1.7 MB/s | 3.9 kB 00:00
CentOS-8 - Extras - mirrors.tongdun.cn 772 kB/s | 1.5 kB 00:00
CentOS-8 - AppStream - mirrors.tongdun.c 2.5 MB/s | 4.3 kB 00:00
MariaDB 4.4 kB/s | 2.9 kB 00:00
bintray--apache-couchdb-rpm 4.2 kB/s | 1.3 kB 00:00
Extra Packages for Enterprise Linux 8 - 3.0 MB/s | 4.7 kB 00:00
Extra Packages for Enterprise Linux 8 - 1.5 MB/s | 3.0 kB 00:00
Extra Packages for Enterprise Linux 8 - 1.8 MB/s | 3.5 kB 00:00
Rundeck - Release 1.1 kB/s | 1.3 kB 00:01
Metadata cache created.
[root@rundeck ~]#
El repositorio Rundeck yum está instalado.
Siete
Paso 4: Instale RunDeck en CentOS 8
Ahora, podemos instalar el software Rundeck usando el comando dnf .
[root@rundeck ~]# dnf install -y rundeck
Last metadata expiration check: 0:00:53 ago on Sun 27 Dec 2020 10:00:45 PM CST.
Dependencies resolved.
=========================================================================
Package Arch Version Repository Size
=========================================================================
Installing:
rundeck noarch 3.3.7.20201208-1 rundeck-release-bintray 172 M
Transaction Summary
=========================================================================
Install 1 Package
Total download size: 172 M
Installed size: 185 M
Downloading Packages:
rundeck-3.3.7.20201208-1.noarch.rpm 10 MB/s | 172 MB 00:16
-------------------------------------------------------------------------
Total 10 MB/s | 172 MB 00:16
warning: /var/cache/dnf/rundeck-release-bintray-330204ab97cd1651/packages/rundeck-3.3.7.20201208-1.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID e2d1065b: NOKEY
Rundeck - Release 1.7 kB/s | 3.1 kB 00:01
Importing GPG key 0xE2D1065B:
Userid : "Rundeck Build (automated builds) <[email protected]>"
Fingerprint: 85E9 DBC7 4FCB 329E DEDA DD2E 9077 0E1B E2D1 065B
From : http://rundeck.org/keys/BUILD-GPG-KEY-Rundeck.org.key
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Running scriptlet: rundeck-3.3.7.20201208-1.noarch 1/1
Preparing : 1/1
Running scriptlet: rundeck-3.3.7.20201208-1.noarch 1/1
Installing : rundeck-3.3.7.20201208-1.noarch 1/1
Running scriptlet: rundeck-3.3.7.20201208-1.noarch 1/1
Verifying : rundeck-3.3.7.20201208-1.noarch 1/1
Installed products updated.
Installed:
rundeck-3.3.7.20201208-1.noarch
Complete!
Iniciar y configurar el servicio rundeckd de inicio automático
[root@rundeck ~]# systemctl enable --now rundeckd.service
rundeckd.service is not a native service, redirecting to systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable rundeckd
Ver el estado del servicio rundeckd y la información del puerto de escucha del servicio
[root@rundeck ~]# systemctl start rundeckd.service
[root@rundeck ~]# systemctl status rundeckd.service
● rundeckd.service - SYSV: rundeckd, providing rundeckd
Loaded: loaded (/etc/rc.d/init.d/rundeckd; generated)
Active: active (running) since Sun 2020-12-27 22:05:33 CST; 1s ago
Docs: man:systemd-sysv-generator(8)
Process: 140032 ExecStart=/etc/rc.d/init.d/rundeckd start (code=exited, status=0/SUCCESS)
Main PID: 140042 (runuser)
Tasks: 0 (limit: 49642)
Memory: 2.0M
CGroup: /system.slice/rundeckd.service
‣ 140042 runuser -s /bin/bash -l rundeck -c java -Drundeck.jaaslogin=true >
Dec 27 22:05:33 rundeck.lianglab.cn systemd[1]: Starting SYSV: rundeckd, providing rundeckd.>
Dec 27 22:05:33 rundeck.lianglab.cn rundeckd[140032]: Starting rundeckd: [ OK ]
Dec 27 22:05:33 rundeck.lianglab.cn systemd[1]: Started SYSV: rundeckd, providing rundeckd.
lines 1-14/14 (END)
[root@rundeck ~]# netstat -anptl | grep 4440
tcp 0 0 0.0.0.0:4440 0.0.0.0:* LISTEN 140074/java
Puerto de servicio Rundeck: 4440 está permitido en el firewall de CentOS .
[root@rundeck ~]# firewall-cmd --permanent --add-port=4440/tcp
success
[root@rundeck ~]# firewall-cmd --reload
success
Si accede a la interfaz web de Rundeck desde otra computadora, pueden ocurrir algunos errores. Para resolver este problema, necesitamos editar el archivo de configuración de Rundeck.
[root@rundeck-01 ~]# vi /etc/rundeck/rundeck-config.properties
Busque y actualice el parámetro grails.serverURL como se muestra a continuación.
修改之前
grails.serverURL=http://localhost:4440
修改之后
grails.serverURL=http://192.168.6.200:4440
Reinicie el servicio rundeckd para volver a cargar el proceso con la nueva configuración.
[root@rundeck ~]# systemctl restart rundeckd.service
[root@rundeck ~]# systemctl status rundeckd.service
● rundeckd.service - SYSV: rundeckd, providing rundeckd
Loaded: loaded (/etc/rc.d/init.d/rundeckd; generated)
Active: active (running) since Sun 2020-12-27 22:12:07 CST; 20s ago
Docs: man:systemd-sysv-generator(8)
Process: 140813 ExecStop=/etc/rc.d/init.d/rundeckd stop (code=exited, status=0/SUCCESS)
Process: 140848 ExecStart=/etc/rc.d/init.d/rundeckd start (code=exited, status=0/SUCCESS)
Main PID: 140858 (runuser)
Tasks: 0 (limit: 49642)
Memory: 1.9M
CGroup: /system.slice/rundeckd.service
‣ 140858 runuser -s /bin/bash -l rundeck -c java -Drundeck.jaaslogin=true >
Dec 27 22:12:07 rundeck.lianglab.cn systemd[1]: Starting SYSV: rundeckd, providing rundeckd.>
Dec 27 22:12:07 rundeck.lianglab.cn rundeckd[140848]: Starting rundeckd: [ OK ]
Paso 5: Rundeck configura el backend de la base de datos MySQL
Por defecto, Rundeck usa la base de datos H2 como su repositorio. Sin embargo, no se recomienda utilizar la base de datos H2 en un entorno de producción . Por lo tanto, configuramos MySQL como el backend de la base de datos de Rundeck .
[1] Conéctese al servidor de la base de datos MySQL. Si no tiene un servidor de base de datos MySQL en ejecución, necesita CentOS 8.2 para implementar el servicio de base de datos MariaDB 10.5.3 .
[root@rundeck ~]# mysql -u root -plianglab@123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.5.8-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
[2] Cree una base de datos para el servidor Rundeck.
MariaDB [(none)]> create database rundeck;
Query OK, 1 row affected (0.001 sec)
[3] Cree un usuario de base de datos y otorgue los privilegios requeridos por la base de datos Rundeck .
MariaDB [(none)]> grant ALL on rundeck.* to 'rundeckuser'@'localhost' identified by 'lianglab123';
Query OK, 0 rows affected (0.001 sec)
[4] Vuelva a cargar la tabla de privilegios.
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)
Salga de MySQL Shell.
MariaDB [(none)]> exit
Bye
[5] Ahora edite el archivo de configuración de Rundeck.
[root@rundeck-01 ~]# vi /etc/rundeck/rundeck-config.properties
[6] Busque y actualice los siguientes parámetros en este archivo. (Si no puede encontrar ningún parámetro, agréguelo)
修改前
# change hostname here
grails.serverURL=http://192.168.6.200:4440
dataSource.dbCreate = update
dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true
修改后
# change hostname here
grails.serverURL=http://192.168.6.200:4440
dataSource.dbCreate = update
#dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true
dataSource.url = jdbc:mysql://192.168.6.200/rundeck?autoReconnect=true
dataSource.username=rundeckuser
dataSource.password=lianglab123
dataSource.driverClassName=com.mysql.jdbc.Driver
[7] Reinicie el servicio rundeckd para aplicar los cambios.
[root@rundeck ~]# systemctl restart rundeckd.service
[root@rundeck ~]# systemctl status rundeckd.service
● rundeckd.service - SYSV: rundeckd, providing rundeckd
Loaded: loaded (/etc/rc.d/init.d/rundeckd; generated)
Active: active (running) since Sun 2020-12-27 22:22:50 CST; 9s ago
Docs: man:systemd-sysv-generator(8)
Process: 141411 ExecStop=/etc/rc.d/init.d/rundeckd stop (code=exited, status=0/SUCCESS)
Process: 141451 ExecStart=/etc/rc.d/init.d/rundeckd start (code=exited, status=0/SUCCESS)
Main PID: 141461 (runuser)
Tasks: 0 (limit: 49642)
Memory: 1.9M
CGroup: /system.slice/rundeckd.service
‣ 141461 runuser -s /bin/bash -l rundeck -c java -Drundeck.jaaslogin=true >
Dec 27 22:22:50 rundeck.lianglab.cn systemd[1]: Starting SYSV: rundeckd, providing rundeckd.>
Dec 27 22:22:50 rundeck.lianglab.cn rundeckd[141451]: Starting rundeckd: [ OK ]
[8] Si tiene problemas para iniciar el servicio rundeckd , debe buscar errores en el archivo de registro de Rundeck en el directorio / var / log / rundeck / .
[2020-12-27T22:54:48,841] ERROR pool.ConnectionPool [main] - Unable to create initial connections of pool.
java.sql.SQLException: Unable to load class: com.mysql.jdbc.Driver from ClassLoader:org.springframework.boot.loader.LaunchedURLClassLoader@7a07c5b4;ClassLoader:org.springframework.boot.loader.LaunchedURLClassLoader@7a07c5b4
配置rundeck配置文件使其连接数据库
vim /etc/rundeck/rundeck-config.properties
grails.serverURL=http://192.168.6.200:4440
dataSource.dbCreate = update
#dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true
dataSource.url = jdbc:mysql://192.168.6.200:3306/rundeck?autoReconnect=true&useSSL=false
dataSource.username=rundeckuser
dataSource.password=lianglab123
dataSource.driverClassName=com.mysql.jdbc.Driver
[root@rundeck ~]# systemctl restart rundeckd.service
查看rundeck日志
tailf /var/log/rundeck/service.log
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
解决:
vim /etc/my.cnf
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000
重启生效,需要同时修改这两个参数
【9】 Vista de registro
[root@rundeck ~]# ls -alt /var/log/rundeck/
total 3084
-rw-r--r--. 1 rundeck rundeck 1569895 Dec 27 22:23 rundeck.log
-rw-rw-r--. 1 root root 1573703 Dec 27 22:23 service.log
drwxrwxr-x. 2 rundeck rundeck 4096 Dec 27 22:05 .
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.executions.log
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.options.log
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.audit.log
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.jobs.log
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.cleanup.log
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.webhooks.log
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.api.log
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.storage.log
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.project.log
-rw-r--r--. 1 rundeck rundeck 0 Dec 27 22:05 rundeck.access.log
drwxr-xr-x. 21 root root 4096 Dec 27 22:02 ..
Paso 6: crea tu primer proyecto Rundeck
Explore la URL http://192.168.6.200:4440 en un navegador como [Google Chrome .
Utilice el nombre de usuario predeterminado : admin y contraseña: admin para iniciar sesión en la interfaz web de Rundeck .
Haga clic en el botón Nuevo proyecto + para crear un nuevo proyecto.
Complete los detalles necesarios sobre el proyecto y haga clic en Crear.
Nuestro proyecto ha sido creado y ahora está en la página " Editar nodo" .
Puede encontrar que se ha agregado un nodo "Local" a la lista de Rundeck . Esta es nuestra computadora servidor Rundeck, que se agregará automáticamente al crear este proyecto.
Paso 7: cree un nuevo trabajo
Mi propia ruta en linux: / opt / shell, crea un nuevo shell.sh y concede permisos de ejecución, contenido del script:
[root@rundeck shell]# vi shell.sh
[root@rundeck shell]# cat shell.sh
#!/bin/bash
date
uptime
[root@rundeck shell]# chmod 755 shell.sh
[1] Crea nuestra tarea
[2] Seleccione una ruta URL local, ingrese la ruta del archivo y haga clic para guardar
[3] Programación de tiempos de Rundeck
[4] Podemos ver la interfaz de ejecución de tareas en tiempo real en la ubicación de ACTIVIDAD:
Nuestro servidor Rundeck se ha instalado y configurado correctamente. Para obtener información sobre el uso de la interfaz web de Rundeck, consulte la documentación de Rundeck .