miércoles, 3 de agosto de 2016

Instalación de Redmine con multiples instancias /Install Redmine multi-instance en CentOS 7

El día es corto y el trabajo no cesa, así que esta ves con mas prisas que otra cosa vengo a comentar como instalar redmine con multiples instancias bajo apache y su modulo passenger.

El propósito de dichos proyectos los pueden encontrar en los siguientes enlaces:

http://www.redmine.org/
https://projects.apache.org/project.html?httpd-http_server


Antes de iniciar es necesario mencionar que gran parte de las instrucciones fueron extraídas de este post lo cual merece todo el reconocimiento al autor, así que básicamente es una traducción con unos pocos agregados..
http://www.informaddict.net/installer-redmine-sur-centos-7/


1 .Descargamos las herramientas de desarrollo de la distribución:

yum groupinstall "Development Tools"

2. Se instala el revidor mysql/mariadb ruby y algunas herramientas adicionales de desarrollo para las anteriores herramientas.

yum install mariadb-server mariadb-devel ruby ruby-devel ImageMagick ImageMagick-devel rubygem-rake rubygem-bundler

3. Habilitamos el servidor de mariadb y se inicia.

systemctl enable mariadb && systemctl start mariadb

4 .Ahora vamos a configurar mariadb y a crear las bases de datos correspondientes:

mysql_secure_installation

5. Ingresamos como usuario root al motor de la bd:

mysql -p

6. Creamos la base de datos de redmine:

CREATE DATABASE redmine CHARACTER SET utf8;

7. Creamos el usuario de redmine dentro de la base de datos.

CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';


8. Se conceden todos los permisos para el usuario redmine sobre la base de datos redmine.

GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';



9. Instalamos el servidor apache y sus librerías de desarrollo.

yum install libcurl-devel httpd-devel apr-devel apr-util-devel httpd -y


10. Habilitamos y iniciamos el servidor apache.

systemctl enable httpd && systemctl start httpd

11. Descargamos la ultima versión de redmine desde la pagina oficial (el enlace esta al inicio del post) y lo dejamos sobre el directorio "/var/www/html/"

12. Se descomprime el empaquetado.

cd /var/www/html
tar xvzf redmine-3.3.x.tar.gz


13. Se cambia el nombre al directorio recién creado se deja como gusten, en mi caso se queda como redmine.

mv redmine-3.3.x redmine


14. Se cambia el dueño y el grupo del directorio para el directorio redmine:

chown -R apache:apache redmine


15. Ahora vamos a hacer unos pequeños ajustes para que redmine se conecta a su base de datos, primero accedemos al directorio "config".

cd redmine/config

Ahora se cambia el nombre al archivo por defecto.

mv database.yml.example database.yml



Una vez cambiado el nombre del archivo vamos a editar su contenido con vi, buscaremos la sección de producción dicha sección debe lucir algo similar a lo siguiente:


production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
password: "my_password"
encoding: utf8


Con esto ya le indicamos que base de datos va a utilizar ... continuamos..

16 . Ahora vamos a ubicarnos sobre el directorio base de redmine es decir sobre "/var/www/html/redmine", esto es muy importante ya que vamos a comenzar el despliegue de los plugings de ruby si no lo hacemos sobre este directorio nuestra instalación va a fallar.

cd /var/www/html/redmine


17. Hora de instalar el gem de bundler con el siguiente comando.


gem install bundler --no-rdoc --no-ri

Nos debe mostrar algo como lo siguiente.


Successfully installed bundler-1.12.5
1 gem installed

Ahora instalamos bundler con el siguiente comando.

bundle install --without development test postgresql sqlite


Nos debe mostrar algo similar a lo siguiente:

Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root users on this
machine.
Rubygems 2.0.14 is not threadsafe, so your gems will be installed one at a time. Upgrade to Rubygems 2.1.0 or higher to enable parallel gem installation.
Using rake 11.2.2
Using i18n 0.7.0
Using json 1.8.3
Using minitest 5.9.0
Using thread_safe 0.3.5
Using builder 3.2.2
Using erubis 2.7.0
Using mini_portile2 2.1.0
Using pkg-config 1.1.7
Using rack 1.6.4
Using mime-types-data 3.2016.0521
Using arel 6.0.3
Using addressable 2.4.0
Using coderay 1.1.1
Using concurrent-ruby 1.0.2
Using htmlentities 4.3.1
Using thor 0.19.1
Using mimemagic 0.3.2
Using mysql2 0.3.21
Using net-ldap 0.12.1
Using ruby-openid 2.3.0
Using bundler 1.12.5
Using rbpdf-font 1.19.0
Using redcarpet 3.3.4
Using request_store 1.0.5
Using rmagick 2.15.4
Using tzinfo 1.2.2
Using nokogiri 1.6.8
Using rack-test 0.6.3
Using mime-types 3.1
Using css_parser 1.3.7
Using sprockets 3.7.0
Using rack-openid 1.4.2
Using rbpdf 1.19.0
Using activesupport 4.2.6
Using loofah 2.0.3
Using mail 2.6.4
Using roadie 3.1.1
Using rails-deprecated_sanitizer 1.0.3
Using globalid 0.3.7
Using activemodel 4.2.6
Using rails-html-sanitizer 1.0.3
Using rails-dom-testing 1.0.7
Using activejob 4.2.6
Using activerecord 4.2.6
Using protected_attributes 1.1.3
Using actionview 4.2.6
Using actionpack 4.2.6
Using actionmailer 4.2.6
Using actionpack-action_caching 1.1.1
Using actionpack-xml_parser 1.0.2
Using railties 4.2.6
Using sprockets-rails 3.1.1
Using jquery-rails 3.1.4
Using roadie-rails 1.1.1
Using rails 4.2.6
Bundle complete! 31 Gemfile dependencies, 56 gems now installed.
Gems in the groups development, test, postgresql and sqlite were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.




18. Generamos los tokens de seguridad.


bundle exec rake generate_secret_token



19. Poblamos la base de datos con los datos.

bundle exec rake db:migrate RAILS_ENV=production


20. Instalamos el gem de passenger.

gem install passenger --no-rdoc --no-ri


21. Antes de hacer el despliegue del gem vamos a ir a "/etc/httpd/conf.d" y crearemos un archivo llamado passenger.conf con el siguiente contenido.

LoadModule passenger_module /usr/local/share/gems/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so 

<IfModule mod_passenger.c >

PassengerRoot /usr/local/share/gems/gems/passenger-5.0.30/ 
PassengerDefaultRuby /usr/bin/ruby 
</IfModule >

NameVirtualHost *:80 
<VirtualHost *:80>
ServerName redmine 
DocumentRoot /var/www/html/redmine/public 
</VirtualHost>

Este paso es para que no falle la validación del despliegue del modulo de esta forma ya estamos desplegando el virtualhost de apache para redmine.

22. Bien hora de desplegar el gem de passenger, aquí va a preguntar algunas cosas, lo cual solo daremos enter hasta que comience el proceso de compilación, este demora un rato.


passenger-install-apache2-module

23. Establecer security tokens, error "utils.rb:87 ]: *** Exception RuntimeError in Rack application object (Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`)", un error por cuestiones de retrocompatibilidad esto lo solucionamos de la siguiente forma.

a - vamos a ubicarnos sobre el directorio de configuración de redmine.

cd /var/www/html/redmine/config

b - Luego ejecutamos el comando, este nos debe arrojar una cadena.

rake secret
(in /var/www/html/redmine)
cce23d6e14210e56b349303de9423dc14b77f59f1f07b960168883b7a07e7dce847fae8023f006ad8e357d4385a11eb2e73f2604c02d64d7fa70c17747d

c - luego creamos el archivo secrets.yml con el siguiente contenido (el hash es el del resultaod del paso anterior):


secret_key_base: cce23d6e14210e56b349303de9423dc14b77f59f1f07b960168883b7a07e7dce847fae8023f006ad8e357d4385a11eb2e73f2604c02d64d7fa70c17747d


24. Reiniciar apache y verificar el correcto acceso a la herramienta.

systemctl restart httpd

25. Multiples instancias de redmine, básicamente lo que tenemos que hacer es crear una nueva base de datos, la cual la podemos hacer siguiendo los pasos del punto 6,7 y 8, lo siguiente es desempaquetar o copiar el directorio redmain (si son instancias en blando desde cero, las podemos copiar con rsync) si son instancias nuevas y las actuales ya están pobladas será descomprimir el tar.gz en el directorio "/var/www/html" (cuidado que no borre o reemplace la instalación ya existente), una ves creado el comprimido configuramos el redmine para el acceso a la base de datos como se hizo en el punto 15, seguidamente repoblamos la base de datos con el paso en el punto 19, creamos un nuevo secret lo cual especificamos en el punto 23, lo siguiente es agregar un puerto de escucha al apache y agregar el virtualhost adicional al passenger.conf, el contenido del nuevo passenger sería algo similar a lo siguiente.

LoadModule passenger_module /usr/local/share/gems/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so 

<IfModule mod_passenger.c >

PassengerRoot /usr/local/share/gems/gems/passenger-5.0.30/ 
PassengerDefaultRuby /usr/bin/ruby 
</IfModule >

NameVirtualHost *:80 
<VirtualHost *:80>
ServerName redmine 
DocumentRoot /var/www/html/redmine/public 
</VirtualHost> 

NameVirtualHost *:8090 
<VirtualHost *:8090>
ServerName redmine-ins1 
DocumentRoot /var/www/html/redmine-ins1/public 
</VirtualHost>

Si bien en este ejemplo se están utilizando puertos diferentes, también es funcional por el mismo puerto de apache, pero utilizando nombres DNS diferentes con el fin que los capture el virtualhost correspondiente.

Se recarga apache y con eso se tendría redmine en diferentes instancias.

Como siempre los comentarios y criticas son bienvenidos, espero sea de utilidad para alguien.


martes, 19 de julio de 2016

Centos 7 enable Smart Array E200i

Esta ves se me presento que tengo a disponibilidad un blade que tiene la controladora Smart Array E200i la cual ya no esta soportada pero necesito utilizarla para unas pruebas.

Bien, para hacerla funcionar se le tuvo que enviar el siguiente parámetro al kernel para reactivar la detección de dicha controladora.

hpsa.hpsa_simple_mode=1 hpsa.hpsa_allow_any=1
Esto lo extraje del siguiente vinculo.

http://serverfault.com/questions/611182/centos-7-x64-and-hp-proliant-dl360-g5-scsi-controller-compatibility/611210#611210?newreg=943fbdd1313641fc9680cef2ec089feb

lunes, 4 de abril de 2016

OVirt ovirt-engine-extension-aaa-ldap Active Directory mini how to

En esta ocasión me a tocado revisar algunos detalles de ovirt y dentro de los multiples problemas que han surgido, se hace necesario integrar la autenticación al Active Directory a claro pero con los nuevos plugings aaa de ldap "ovirt-engine-extension-aaa-ldap" el procedimiento que elegiremos será utilizar una herramienta que nos facilita enormemente la tarea de configurar los archivos.

1) instalar la herramienta de configuración.

#yum install ovirt-engine-extension-aaa-ldap-setup.noarch

2) Ejecutar la herramienta de configuración


#ovirt-engine-extension-aaa-ldap-setup

Esto nos mostrará lo siguiente:

[ INFO ] Stage: Initializing
[ INFO ] Stage: Environment setup
Configuration files: ['/etc/ovirt-engine-extension-aaa-ldap-setup.conf.d/10-packaging.conf']
Log file: /tmp/ovirt-engine-extension-aaa-ldap-setup-20160404183136-6n77oi.log
Version: otopi-1.4.1 (otopi-1.4.1-1.el6)
[ INFO ] Stage: Environment packages setup
[ INFO ] Stage: Programs detection
[ INFO ] Stage: Environment customization
Welcome to LDAP extension configuration program
Please specify profile name that will be visible to users: example.com

Lo cual tecleamos un nombre que nos identifique el dominio que queremos agregar a continuación la tecla Enter y nos muestra esto:

Available LDAP implementations:
1 - 389ds
2 - 389ds RFC-2307 Schema
3 - Active Directory
4 - IPA
5 - Novell eDirectory RFC-2307 Schema
6 - OpenLDAP RFC-2307 Schema
7 - OpenLDAP Standard Schema
8 - Oracle Unified Directory RFC-2307 Schema
9 - RFC-2307 Schema (Generic)
10 - RHDS
11 - RHDS RFC-2307 Schema
12 - iPlanet
Please select: 3

Basicamente nos solicita el tipo de directorio que queremos configurar, elejimos la opción 3 para Active Directory y nos solicita el forest name.

Please enter Active Directory Forest name: example.com

Con esto buscará en los servidores DNS registros de tipo SRV que hagan match con el dominio y con ellos intentará configurarse (ya lo veremos), presionamos Enter.

[ INFO ] Resolving Global Catalog SRV record for example.com
[ INFO ] Resolving LDAP SRV record for example.com
NOTE:
It is highly recommended to use secure protocol to access the LDAP server.
Protocol startTLS is the standard recommended method to do so.
Only in cases in which the startTLS is not supported, fallback to non standard ldaps protocol.
Use plain for test environments only.
Please select protocol to use (startTLS, ldaps, plain) [startTLS]:

Nos pregunta el tipo de Encriptación que usaremos para comunicarnos con el dominio, presionamos Enter para seleccionar startTLS.


Please select method to obtain PEM encoded CA certificate (File, URL, Inline, System, Insecure): Insecure

Ahora nos pregunta como obtendremos el certificado, por comodidad mas no por seguridad elegiremos Insecure:

[ INFO ] Resolving SRV record 'example.com'
[ INFO ] Connecting to LDAP using 'ldap://test01.example.com:389'
[ INFO ] Executing startTLS
[ INFO ] Connection succeeded
Enter search user DN (empty for anonymous): example\userauth

Ingresamos el usuario con que nos autenticaremos contra el dominio, es muy importante colocar el dominio y el usuario de lo contrario tendremos errores.

Enter search user password:
[ INFO ] Attempting to bind using 'example\userauth'
[ INFO ] Stage: Setup validation
The following files are about to be overwritten:
/etc/ovirt-engine/extensions.d/example-authn.properties
/etc/ovirt-engine/extensions.d/example-authz.properties
/etc/ovirt-engine/aaa/example.properties
Continue and overwrite? (Yes, No) [No]: Yes
NOTE:
It is highly recommended to test drive the configuration before applying it into engine.
Perform at least one Login sequence and one Search sequence.
Select test sequence to execute (Done, Abort, Login, Search) [Abort]:


Muy importante los archivos que genera, puuesto que son las configuraciones y podemos modificarlas manualmente, a continuación hacemos pruebas de Login y Search las cuales deben traernos información a cerca del usuario, Tecleamos Done y Enter y eso sería todo.


jueves, 25 de febrero de 2016

e1000e 0000:00:19.0 eno1: Detected Hardware Unit Hang

Este post no es mas que una recopilación de foros y un hilo de discusión de intel así que bueno al grano.

Me encuentro haciendo unas pruebas en mi maquina y me vi forzado a utilizar tageo de vlans sobre la nic de mi maquina, la sorpresa llego cuando quise transmitir a través de mi maquina un archivo de mas de 10G lo cual comenzó a arrojar el siguiente error en el kernel y claro los respectivos errores en el switch.


[31050.081316] e1000e 0000:00:19.0 eno1: Detected Hardware Unit Hang:

                TDH                  
                 TDT                  
                 next_to_use          
                 next_to_clean        
               buffer_info[next_to_clean]:
                 time_stamp           <101d4e366>
                 next_to_watch        
                 jiffies              <101d4edb8>
                 next_to_watch.status <0>
               MAC Status             <80083>
               PHY Status             <796d>
               PHY 1000BASE-T Status  <3800>
               PHY Extended Status    <3000>
               PCI Status             <10>

Después de investigar con mi compañero de switching no logramos encontrar una evidencia solida que le atribuyera el problema al switch o relacionado, así que pasamos por comenzar a investigar por el lado de la NIC del linux, encontrando el siguiente post:

http://serverfault.com/questions/616485/e1000e-reset-adapter-unexpectedly-detected-hardware-unit-hang

y

https://ehc.ac/p/e1000/bugs/378/


En donde básicamente nos recomiendan ejecutar el siguiente comando:

ethtool -K eth0 gso off gro off tso off


Pero que demonios es eso?, pues nada mas y nada menos que mejoras del kernel para la transmisión de paquetes grandes y división de los mismos para que se ajusten al MTU, cosa que al parecer no funciona del todo bien en algunas situaciones, por lo que se procedió a desactivar dichas optimizaciones del driver, eso si aclarando que se puede perder rendimiento en la trasmisión de datos cosa que en mi caso no ocurrió.

Espero que sea de ayuda a alguien tanto como me fue a mi.

lunes, 18 de enero de 2016

Template zabbix Cisco Nexus 9000 y Nexus 7000

Moviendo un poco el tema de monitoreo y esta vez haciendo las cosas bien he creado un template para monitorear Nexus desde zabbix, he probado este template en nexus 9000 y 7000.

Si se encuentra alguna anomalia dentro del template les agradezco si lo informan.

Para la instalación del template es necesario crear las expresiones regulares y mapeo de valores los cuales vienen dentro de cada directorio; si hay dudas no duden en preguntar.

A continuación el enlace

https://drive.google.com/file/d/0B5zfHb1AuwVRT2J3OFFoV3NEeHM/view?usp=sharing