Quantcast
Channel: NSFAQ (Not So Frequently Asked Questions)
Viewing all articles
Browse latest Browse all 10

Instal·lació bàsica de rundeck a RedHat, amb apache com a proxy i mysql com a base de dades

$
0
0
Català

Quan tenim moltes màquines i necessitem executar tasques periòdiques, el cron se'ns queda petit, perquè està repartit per tots els servidors i no hi ha manera senzilla de, per exemple, comprovar quin ha estat el resultat de l'execució d'una tasca a tots els servidors, o quines tasques s'estaven executant entre les 16:33 i les 16:36, o per calcular a quina hora hi ha programades menys coses a l'arquitectura per posar una tasca nova. O milers de coses.

Per centralitzar aquesta informació hi ha algunes alternatives. Fa poc que ha aparegut chronos i té bona pinta, però jo fa un temps que estic fent servir rundeck i estic força content.

Funciona d'una manera molt senzilla: té un servidor programat en java amb una interface grails per l'acces web i un programador quartz per la programació dels esdeveniments. Aquest servidor es connecta via ssh a les màquines per executar-hi les tasques configurades. Això ens permet tenir un cron centralitzat (el que buscàvem originàriament en aquest article), però també podriem fer-lo servir com un sudo centralitzat (podem decidir quin usuari pot executar quina comanda a quins servidors, tot des de la consola web, sense donar-li acces ssh), i també ens permet tenir una consola shell centralitzada per executar una comanda a molts servidors alhora, a l'estil del terminator o més aviat del fabric .

Un cop fetes les presentacions, passem a l'acció i comencem a instal·lar-lo a la nostra RedHat. Per començar hem de tenir en compte que el rundeck s'executa amb l'usuari rundeck, per tant no té privilegis, i per tant no pot funcionar al port 80. Per tal de que funcioni de manera ràpida per aquest exemple, farem un proxypass amb apache. Comencem instal·lant l'apache:

# yum install httpd

Editarem el fitxer /etc/httpd/conf/httpd.conf i afegirem dues línies:

ProxyPass / http://localhost:4440/
ProxyPassReverse / http://localhost:4440/

Així l'apache reenviarà tot el trànsit que rebi al port 80 al port 4440, on el tractarà el rundeck.
Ara les dades. Per defecte el rundeck fa servir un fitxer de text com a base de dades (antigament feia servir hsql, ara fa servir h2). Això està bé, però a partir de cert punt se'ns quedarà petit. Per evitar-ho, voldrem fer servir una base de dades mysql. Primer l'haurem d'instal·lar

yum install mysql mysqld
chkconfig mysqld on

El podem tunejar al gust tocant el my.cnf amb les tipiques default-storage-engine=innodb, innodb_file_per_table, etc, etc. Després hem de crear una base de dades pel rundeck i un usuari amb permisos

[root@server rundeck]# mysql -p
Enter password: <password>
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18536
Server version: 5.5.30 MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database rundeck;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on rundeck.* to 'rundeck'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

Ara instal·lem el rundeck, instal·lant primer el repositori oficial del programa, i després el programa en si:

wget  http://repo.rundeck.org/latest.rpm
rpm -Uvh latest.rpm
yum install rundeck

I configurem la base de dades al fitxer /etc/rundeck/rundeck-config.properties, comentant la linia existent i afegint-ne unes altres:

#dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb
dataSource.url = jdbc:mysql://localhost/rundeck
dataSource.username = rundeck
dataSource.password = password

I ara l'engegem

/etc/init.d/rundeck start

Podem comprovar que està fent servir la base de dades perque hi haurà creat les seves taules:

[root@server rundeck]# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 31
Server version: 5.5.30 MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use rundeck
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------------+
| Tables_in_rundeck          |
+----------------------------+
| auth_token                 |
| base_report                |
| execution                  |
| node_filter                |
| notification               |
| rdoption                   |
| rdoption_values            |
| rduser                     |
| report_filter              |
| scheduled_execution        |
| scheduled_execution_filter |
| workflow                   |
| workflow_step              |
| workflow_workflow_step     |
+----------------------------+
14 rows in set (0.00 sec)

Ja tenim el servidor en marxa. Ara haurem d'exportar la clau publica ssh per poder executar comandes a les maquines desti:

[root@server .ssh]# su - rundeck
[rundeck@server ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/rundeck/.ssh/id_rsa): project1_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in project1_rsa.
Your public key has been saved in project1_rsa.pub.
The key fingerprint is:
f6:be:e5:0r:b2:zd:9b:89:1e:2c:6f:fc:od:e5:a5:00 rundeck@server
[rundeck@server ~]$ ssh-copy-id -i /var/lib/rundeck/.ssh/project1_rsa user@server2
user@server2's password:
0
The authenticity of host 'server2 (222.333.444.555)' can't be established.
RSA key fingerprint is b6:6z:34:2o:04:2f:j1:71:1e:12:b3:fd:e2:f2:79:cf.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server2-es,222.333.444.555' (RSA) to the list of known hosts.
Now try logging into the machine, with "ssh 'user@server2'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

[rundeck@server ~]$ ssh user@server2 whoami
user

Continueu amb mi, que ja gairebé estem. Ara podem entrar a la web amb l'usuari admin i password admin:
rundeck login

I el primer que farà serà demanar-nos que creem un projecte, i aquí posem les dades que hem generat abans

rundeck create project

Quan generem el projecte, apareixerem a la pàgina del mateix, on podrem executar comandes en local:
rundeck home

Ara falta l'últim pas: donar d'alta els servidors remots on executar les comandes. Tal i com hem configurat en la creació del projecte, ho posarem en el fitxer /etc/rundeck/servers/project1 en el següent format:

<?xml version="1.0" encoding="UTF-8"?>

<project>
  <node name="server2" description="Rundeck test server node" tags="test, http, mysql" hostname="server2" osArch="amd64" osFamily="unix" osName="Linux" osVersion="2.6.18-238.5.1.el5" username="user"/>
</project>

I un cop ho tinguem ja podrem fer-ho servir sense reiniciar. Nomes cal que apretem el boto "show all nodes"

rundeck home with new server

I amb això ja ho tenim. A partir d'aquí es molt senzill. Des d'aquesta consola podrem executar comandes remotament, i des de la pestanya "jobs" podrem començar a crear jobs.

Hi ha més coses que es poden configurar. Per exemple, per canviar el logo de rundeck pel de la nostra empresa, ho podem posar al fitxer /etc/rundeck/rundeck-config.properties

rundeck.gui.title = Programador de tareas de la nostra empresa
rundeck.gui.logo = logo.jpg
rundeck.gui.logo-width = 68
rundeck.gui.logo-heigh = 31

O si volem crear més usuaris, els haurem d'afegir al fitxer /etc/rundeck/realm.properties

admin: MD5:5a527f8fegf916h8485dj6681ff8d7a6a,user,admin,architect,deploy,build
newuser: MD5:0cddh73e3g6108a7fh5f3716a9jf97and4e56ff,user

I els permisos d'accés es gestionen al fitxer /etc/rundeck/admin.aclpolicy.

I amb això ja tenim la base per poder començar a jugar amb el rundeck.


Viewing all articles
Browse latest Browse all 10

Trending Articles