Installation serveur Rundeck et Nginx |
Article original Publié le : 11 avril 2021 Mise a jour le : 20 avril 2021 |
Rundeck est un outil d’orchestration et d’automatisation
I. Préparation de l’environnement
- Mise a jour du système
1 |
$ sudo yum update |
- Installation de paquet utile
1 |
$ sudo yum install vim mlocate |
- Pour Nginx, installer le paquet Epel
1 |
$ sudo yum install epel-release |
1 |
$ sudo yum install nginx |
- Certificat ssl avec Let’s Encrypt
1 |
$ sudo yum install certbot |
- Installation de Rundeck
1 |
$ sudo yum install java-1.8.0 |
1 |
$ sudo rpm -Uvh https://repo.rundeck.org/latest.rpm |
1 |
$ sudo yum install rundeck |
II. Ajout des règles sur firewalld
- Ouvrir les ports pour Nginx et Rundeck
1 |
$ sudo firewall-cmd --add-service=http --add-service=https --permanent |
1 |
$ sudo firewall-cmd --add-port={80/tcp,443/tcp,4440/tcp,4443/tcp,53/tcp,53/udp} --permanent |
1 |
$ sudo firewall-cmd --reload |
III. Création du certificat
- Pour afficher un joli certificat
1 |
$ sudo certbot certonly --standalone -d rundeck.izero.fr |
IV. SeLinux
- Vérifier la présence de selinux
1 |
$ sudo sestatus |
1 2 3 4 5 6 7 8 9 |
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31 |
- Autoriser la valeur booléenne SELinux pour http
1 |
$ sudo setsebool httpd_can_network_connect 1 -P |
V. Virtualhost
- Création du vhost
1 |
$ sudo vim /etc/nginx/conf.d/vhost_rundeck.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
server { listen 443 ssl; server_name rundeck.izero.fr; access_log /var/log/nginx/rundeck.izero.fr.access.log; ssl_certificate /etc/letsencrypt/live/rundeck.izero.fr/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/rundeck.izero.fr/privkey.pem; ssl_session_cache builtin:1000 shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; location / { add_header Front-End-Https on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://localhost:4440; proxy_read_timeout 90; proxy_redirect http://localhost:4440 https://rundeck.izero.fr; } } server { listen 80; server_name rundeck.izero.fr; return 301 https://$host$request_uri; } |
- Vérifier la configuration d’Nginx
1 |
$ sudo nginx -t |
1 2 |
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
- Redémarrer le service
1 |
$ sudo systemctl restart nginx |
- Vérifier le status
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<span style="color: #00ff00;">●</span> nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: <span style="color: #00ff00;">active (running)</span> since dim. 2021-04-11 01:20:55 CEST; 11s ago Process: 20646 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 20642 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 20640 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 20647 (nginx) CGroup: /system.slice/nginx.service ├─20647 nginx: master process /usr/sbin/nginx ├─20648 nginx: worker process └─20649 nginx: worker process avril 11 01:20:55 rundeck.izero.fr systemd[1]: Starting The nginx HTTP and reverse proxy server... avril 11 01:20:55 rundeck.izero.fr nginx[20642]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok avril 11 01:20:55 rundeck.izero.fr nginx[20642]: nginx: configuration file /etc/nginx/nginx.conf test is successful avril 11 01:20:55 rundeck.izero.fr systemd[1]: Started The nginx HTTP and reverse proxy server. |
VI. Configuration base de données
- Configuration de Postgresql
- Crée une db avec l’utilisateur et mot de passe
1 |
create database db_rundeck; |
1 |
create user user_rundeck with password 'mot_de_passe'; |
1 |
grant ALL privileges on database db_rundeck to user_rundeck; |
- Renseigner pg-hba
1 |
$ sudo vim /var/lib/pgsql/data/pg_hba.conf |
1 |
host db_rundeck user_rundeck 192.168.50.15/24 trust |
- Recharger pg-hba
1 |
$ sudo /usr/bin/pg_ctl -D data/ reload |
Sur Rundeck, éditer le fichier rundeck-config.properties et remplacer les valeurs
1 |
$ sudo vim /etc/rundeck/rundeck-config.properties |
1 2 3 4 |
dataSource.driverClassName = org.postgresql.Driver dataSource.url = jdbc:postgresql://srv-postgres.izero.lan/db_rundeck dataSource.username=user_rundeck dataSource.password=mot_de_passe |
VII. Configuration de Rundeck
- Éditer la properties rundeck-config.properties et fixer le grails.serverURL
1 |
$ sudo vim /etc/rundeck/rundeck-config.properties |
1 2 |
# change hostname here grails.serverURL=https://rundeck.izero.fr |
- Éditer et modifier le fichier framework.properties
1 |
$ sudo vim /etc/rundeck/framework.properties |
1 2 3 4 5 6 7 8 |
# ---------------------------------------------------------------- # Rundeck server connection information # ---------------------------------------------------------------- framework.server.name = rundeck.izero.fr framework.server.hostname = rundeck.izero.fr framework.server.port = 4440 framework.server.url = https://rundeck.izero.fr |
- Démarrer Rundeck
1 |
$ sudo systemctl start rundeckd |
- Vérifier le status
1 |
$ sudo systemctl status rundeckd |
1 2 3 4 5 6 7 8 9 10 11 12 |
● rundeckd.service - SYSV: rundeckd, providing rundeckd Loaded: loaded (/etc/rc.d/init.d/rundeckd; bad; vendor preset: disabled) Active: active (running) since dim. 2021-04-11 01:37:32 CEST; 8s ago Docs: man:systemd-sysv-generator(8) Process: 20664 ExecStart=/etc/rc.d/init.d/rundeckd start (code=exited, status=0/SUCCESS) Main PID: 20672 (runuser) CGroup: /system.slice/rundeckd.service ‣ 20672 runuser -s /bin/bash -l rundeck -c java -Drundeck.jaaslogin=true -Djava.security.auth.login.config=/etc/rundeck/jaas... avril 11 01:37:32 rundeck.izero.fr systemd[1]: Starting SYSV: rundeckd, providing rundeckd... avril 11 01:37:32 rundeck.izero.fr rundeckd[20664]: Starting rundeckd: [ OK ] avril 11 01:37:32 rundeck.izero.fr systemd[1]: Started SYSV: rundeckd, providing rundeckd. |
- Vérifier les logs
1 |
$ sudo tail -f /var/log/rundeck/service.log /var/log/rundeck/rundeck.log |
VIII. Première connexion a l’interface Rundeck
- Les crédentials par défaut sont admin/asmin
- La première action sera de changer le mot de passe par défaut et de le chiffrer, il est stocké dans /etc/rundeck/realm.properties et celui-ci est en clair
- Depuis l’interface graphique, il y a un utilitaire CRYPT qui permet de chiffrer le mdp
Changer le dans le fichier realm.properties puis redémarrer Rundeck
Le serveur est opérationnel, prochaine étape l’authentification avec un annuaire FreeIpa puis la création de projet/job
FAQ:
Si la db est local
1 |
dataSource.url = jdbc:postgresql://localhost:5432/db_rundeck |