[Promox] Montar y Desmontar Unidades Físicas USB en Maquinas Virtuales Corriendo

Son unos sencillos comandos los que ayudan mucho cuando necesitas comunicar una Maquina Virtual de Promox con alguna unidad física para transferir datos.

### Montar un Disco USB2.0 a una MV que esta corriendo:
# qm monitor <vmid>
qm> device_add usb-host,vendorid=0x058f,productid=0x6387
qm> device_add usb-host,hostbus=2,hostport=1.2.2

Notas:

  • vmid, es el ID de la maquina virtual.
  • 0x058f, es el ID del fabricante (Este valor lo obtienes con el comando: lsusb) y deberías ver algo como esto: ID 058f:6387
  • 0x6387, es el ID del producto (Este valor lo obtienes con el comando: lsusb) y deberías ver algo como esto: ID 058f:6387

### Montar un Disco USB3.0
# qm monitor <vmid>
qm> device_add nec-usb-xhci,id=xhci,addr=0x5
qm> device_add usb-host,bus=xhci.0,vendorid=0x0480,productid=0xa007

### Desmontar el disco de la VM

qm monitor <vmid>
qm> device_del myusb

Nota: myusb, es el nombre que le asigna automáticamente el Promox cuando montas la unidad.

 

Obtener información de las unidades USB conectadas

qm> info usbhost

qm> usb-devices (Para obtener información detallada)

Nota:

  • 12 MB/s = USB 1.1
  • 480 Mb/s = USB 2.0
  • 5000 Mb/s = USB 3.0

Systemd: Cambiar el nombre a las Interfaces de Red

Los pasos son algo sencillos, y simplemente es algo que hago solo para manejar mas fácil mis interfaces de red.

1. Modificar el archivo:

# vim /etc/udev/rules.d/10-network.rules

Sino existe crearlo.

2. Agregar las interfaces de red a modificar, por ejemplo:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="44:8a:5b:f0:9a:cf", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="40:e2:30:d2:23:31", NAME="wlan0"

Lo único que debemos cambiar es la MAC de nuestro dispositivo y el nombre que le deseemos colocar.

En mi caso Systemd le había asignado los nombres: enp3s0 y wlp3s0 a las interfaces de red, lo cual se me hacía algo confuso a veces, entonces les cambie el nombre a los clásicos eth0 y wlan0.

Para ver los cambios debemos reiniciar el equipo.

Saludos.

Los alias que más uso en Manjaro GNU/Linux

Para Pacman:

alias pacact="sudo pacman -Syu" #Sincronizar con el repo y actualizar paquetes
alias pacin="sudo pacman -S" #Instalar paquetes
alias pacins="sudo pacma -U" #Instalar paquete desde un archivo
alias pacrem="sudo pacman -R" #Remover paquetes
alias pacruta="sudo pacman -Ql" #Buscar rutas de un paquete
alias pacborrar="sudo pacman -Rns" #Remover paquete, su configuracion y dependencias
alias pacinfo="pacman -Si" #Ver información de un paquete en el repo
alias pacbus="pacman -Ss" #Buscar paquete en los repos
alias pacinfol="pacman -Qi" #Ver información de paquete en db local
alias pacbusl="pacman -Qs" #Buscar paquete en db local
alias pacsy="sudo pacman -Sy" #Refrescar y actualizar db local de paquetes.
alias pacsyy="sudo pacman -Syy" #Refrescar y actualizar db local de paquetes y actualizar mirrorlist

Tmux

Para iniciar tmux con 3 ventanas. La primera con vim y dividida horizontalmente, la segunda con irssi para el IRC y la tercera con mocp para oir algo de música.

alias tmux="tmux new-session -d 'vim' \; split-window -d \; new-window -d 'irssi' \; new-window -d 'mocp' \; attach-session"

i3status con Dzen

Para iniciar una barra inferior para ver siempre un resumen del estatus de mi equipo con dzen y i3status

alias i3status-dzen="i3status | dzen2 -fg white -bg black -y 850 -fn 'Times New Roman' -p -dock &"

ej

Gitlab en Producción – Administrador de Repositorios Git

Qué es GitLab?

Es un aplicación para administrar proyectos con el control de versiones Git, basada en Ruby on Rails es software libre. Tiene un gran parecido tanto visual como funcionalmente a lo que es GitHub. En la página oficial del proyecto hay un demo que podemos probar.
En el podemos observar algunas de sus fucniones como manejar distintos proyectos, manejar usuarios, ver commits, ver archivos, ver ramas, ver gráficos, asignar tareas, ver meger, editar archivos, Wiki, entre otras.gitlab

Instlación (Debian Squeeze & ArchLinux)

1. Instalar las dependencias.

Como usuario root:
###Nota: los comandos con ‘#’ es como root y con ‘$’ como usuario git.
Debian:

# aptitude install build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev 

Archlinux:

# pacman -Sy --noconfirm --needed base-devel zlib libyaml openssl gdbm readline ncurses libffi curl git openssh redis libxml2 libxslt icu 

1.1. Instalar Python de no tenerlo:

Debian:

# aptitude install python2.6

Nota: La versión de python debe ser mayor 2.5 y menor a 3.x. Instalo la 2.6 porque es la que esta en los repositorios oficiales de Debian 6. Si quieren instalar la 2.7 deben agregar los repos de Debian 7. Para comprobar la version que tenemos instalada usamos python –version

ArchLinux:

# pacman -S python2

Gitlab busca por defecto un binario llamado python2 en /usr/bin/ sino lo tenemos debemos crearlo como un enlace simbolico de la siguiente forma:

# ln -s /usr/bin/python /usr/bin/python2

1.2. Instalar servidor de correo (Opcional)

Instala el servidor de correo si deseas recibir notificación por Correo.
El recomendado por Gitlab es Postfix, pero igual puedes instlar msmtp, sendmail, etc.
Debian:

# aptitude install postfix

Arch:

# pacman -S postfix

1.3. Instalar Ruby

Gitlab soporta Ruby mayor o igual a 1.9.3 y 2.0.0
Si tenemos instalada la versión 1.8 o menor debemos removerla
Debian:

# aptitude purge ruby1.8

Arch:

# pacma -R ruby1.8

La instalción en Debian 6:

$ mkdir /tmp/ruby && cd /tmp/ruby
$ curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz | tar xz
$ cd ruby-2.0.0-p247
$ ./configure
$ make
$ su -c "make install"
###Instalar el gems bundler usado para instalar Gitlab
gem install bundler --no-ri --no-rdoc

En Debian 7:

Se puede instalar la versión 2.0.0 de igual forma que en debian 6, o tambien se puede instalar la version 1.9.3 desde los repositorios:

# aptitude install ruby1.9.3

En Arch:

# pacman -S ruby

Eso te instalara la versión 2.0.0 de Ruby si quieres las versiones anteriores debes instalarlas desde los repos AUR con(si usas yaourt):

$ yaourt -S ruby1.9

1.4. Crear usuario para Gitlab

Debian:

# adduser --disabled-login --gecos 'GitLab' git

Arch:

# useradd -U -m -d /home/git git

1.5. Instalar Gitlab-Shell

GitLab Shell se encarga del acceso ssh y de gestión de almacenamiento, desarrollado especialmente para GitLab.

-Lo primero estar logueados como usuario git y cambiarnos al directorio /home/git

# su - git
$ cd
##Verificamos que estamos en el directorio con el comando pwd

-Clonar el repositorio:

$ git clone https://github.com/gitlabhq/gitlab-shell.git
$ cd gitlab-shell

-Copiar el config.yml.example a config.yml y editamos gitlab_url:

$ cp config.yml.example config.yml
$ vim/nano config.yml

En el gitlab_url colocamos el dominio que vallamos a utilizar para el Gitlab. Guardamos el archivo y salimos.
-Ejecutamos el instalador:

$ ./bin/install

1.6. Instalación de Gestor de Base de Datos.

– En este tutorial voy a utilizar PostgreSQL, de igual forma pueden usar MySQL, SQLite, MariaDB, etc.
En Debian 6:

# aptitude install postgresql-8.4 libpq-dev

Para utilizar la versión 9.1 deben instalarlos desde los repos de Wheezy

En Arch:

# pacman -S postgresql libpqxx

Ver aquí para mayor información de instalar postgresql en Arch

– Crear usuario git en Postgresql
Primero nos logueamos a la consola de postgres con el usuario postgres

# su - postgres -c 'psql -d template1'

Crear usuario y base de datos para el proyecto:

template1=# CREATE USER git WITH PASSWORD 'clave';
template1=# CREATE DATABASE gitlab OWNER git;
template1=# \q

-Probamos la conexión a la base de datos:

# su - git -c 'psql -d gitlab'
### Colocamos la contraseña si nos la pide

1.7. Clonar y Configurar el GitLab

-Cambiamos al usuario git y vamos al directorio de trabajo.

# su - git && cd /home/git

-Clonamos el proyecto

$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab

-Entramos y cambiamos a la rama estable del proyecto:

$ cd gitlab
$ git checkout 5-4-stable
###Si queremos asegurarnos cual es la ultima versión estable ejecutamos:
# git branch -r

Si vemos algo como esto: Switched to branch ‘5-4-stable’ ya estamos en la rama.
-Ahora vamos a copiar el archivo ejemplo de configuración

$ cp config/gitlab.yml.example config/gitlab.yml
$ vim config/gitlab.yml

Abrimos el archivo y cambiamos el ‘localhost’ por el nombre del dominio y cambiamos el puerto sino estamos o no vamos a usar el puerto por defecto de nuestro servidor web.

-Damos permisos al usuario git para escribir el /log y /tmp

$ chown -R git log/
$ chown -R git tmp/
$ chmod -R 744  log/
$ chmod -R 744  tmp/

-Creamos algunos directorios necesarios.

###Satellites
$ mkdir ../gitlab-satellites
###Creamos carpetas de /tmp y le damos permisos
$ mkdir tmp/{pids,sockets}
$ chmod -R 744 tmp/{pids,sockets}
###Carpeta uploads
$ mkdir public/uploads
$ chmod -R 744 public/uploads

-Copiamos archivos de configuración de Unicorn.

$ cp config/unicorn.rb.example config/unicorn.rb

-Configuramos los datos del servidor Git al usuario git de acuerdo a lo que hemos colocado en config/gitlab.yml

$ git config --global user.name "GitLab"
$ git config --global user.email "gitlab@localhost"

-Configurar conexión a la base de datos.

$ cp config/database.yml.postgresql config/database.yml
$ vim config/database.yml

Cambiamos los parametros, database: gitlab, username: git y password: laClave. Si la base de datos la tenemos en otro servidor cambiamos host y port.

-Cambiamos a solo lectura el archivo.

$ chmod 640 config/database.yml

1.8. Instalar librerías necesarias con el gestor de paquetes de Ruby(gem).

# gem install charlock_holmes --version '0.6.9.4'
Para el siguiente paso debe tener instalado bundle
# gem install bundler --no-ri --no-rdoc

NOTA: Puede que no se instale el paquete modernizr porque le cambiaron el nombre a modernizr-rails, entonces pueden instalarlo manualmente o cambiando el nombre en el archivo Gemfile.

-Librerías para Postgres
Entramos en el proyecto sino no estamos en el.

$ cd /home/git/gitlab
$ bundle install --deployment --without development test mysql

1.9. Iniciar base de datos y activar funciones de Postgres (Como usuario git)

$ bundle exec rake gitlab:setup RAILS_ENV=production
Respondemos yes a la pregunta que nos hace. 

Con esto creara las tablas en la base de datos y creara un usuario administrador del cual nos mostrara los datos por pantalla.

2.0. Copiar script de incio.

Copiamos el script al directorio /etc/init.d/ y le damos permisos de ejecución

###Como usuario root
# cd /home/git/gitlab
# cp lib/support/init.d/gitlab /etc/init.d/gitlab
# chmod +x /etc/init.d/gitlab

Luego editamos el script /etc/init.d/gitlab
Buscamos la palabra “sudo” dentro del script y las borramos las 2 líneas que la contienen dejandolas así:

bash -l -c “$1”

echo “Usage: service gitlab {start|stop|restart|reload}” >&2

La otra opción es instalar sudo, pero yo no estoy trabajando con sudo en este tutorial.

3.0. Comprobar el estado de la aplicación

$ su - git -c "bundle exec rake gitlab:env:info RAILS_ENV=production"

– Iniciamos el script de inicio como root:

# /etc/init.d/gitlab start

3.1. Asegurarnos que todo esta corriendo bien, ejecutamos:

$ su - git -c "bundle exec rake gitlab:check RAILS_ENV=production"

3.2. Instalar y configurar el servidor web Nginx para correr la aplicación.

En Debian:

# aptitude install nginx

En Arch:

# pacman -S nginx

-Copiamos el archivo de configuración de Nginx al sites-available como root:

# cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab

Editamos en el archivo el parametro “server_name” por el dominio que vamos a utilizar y puerto si es necesario.

-Creamos enlace simbólico en el sites-enabled para activar el servicio:

# ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

-Reiniciamos el servicio:

Debian:

# /etc/init.d/nginx start

Arch:

# systemctl restart nginx
# systemctl enable nginx

Y iniciamos el servidor Redis

# systemctl enable redis
# systemctl start redis

Con esto ya debería estar corriendo la aplicación en el servidor con el dominio que le hayan configurado. Si lo están haciendo localmente debería estar corriendo el http://127.0.0.1/ de estar configurado en el puerto por defecto.

Suerte.

Cualquier duda o comentario no duden en hacerlo. Saludos! o/

Fuentes:

Documentación Wiki ArchLinux – https://wiki.archlinux.org/index.php/Gitlab
Documentación oficial – https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md
Instalar Postgres en Archlinux – https://wiki.archlinux.org/index.php/PostgreSQL#Installing_PostgreSQL
Archivos .service para Archlinux – https://gist.github.com/axilleas/3305554

(Git) Herramientas gráficas y de Texto para GNU/Linux

  A veces resulta tedioso y poco vistoso usar la línea de comandos para revisar los logs de un proyecto desarrollado con GIT, hacer un diff, hacer un ‘commit‘, hacer un add, hacer push, entre muchas cosas que se pueden hacer con el versionador de código Git….

Es por ello que voy a listar algunas herramientas o aplicaciones útiles que he usado para esto:

  1. Gitg

Una Aplicación con una interfaz gráfica muy intuitiva, puedes hacer muchas cosas en ella como hacer commits, pushear, cambiar de rama, buscar ramas locales o remotas, revisar los logs súper detallados con gráfica de cambios de cada archivo, foto de la persona que hizo el commit, revisar el código del archivo con línea exacta, colores y símbolos, lo que ayuda bastante a la hora de detectar lo que buscas, revisas o quieres depurar.

Instalación: Debian/Mint/Ubuntu. Se puede hacer fácilmente con un:

# aptitude install gitg

Clonando el proyecto de aquí: http://git.gnome.org/browse/gitg/

o también descargandolo vía ftp desde: http://ftp.gnome.org/pub/GNOME/sources/gitg/

Interfaz de Gitg

2. Gitk

Una herramienta gráfica liviana hecha en C++ y GTK, con un poco menos de funciones que gitg pero también es muy útil para hacer una revisión rápida del log del proyecto, revisar ramas, commits, etc… Y puedes cambiar la interfaz de la app a tu gusto.

Instalación: Debian/Mint/Ubuntu desde la consola:

# aptitude install gitk

Descargar código fuente dese su sitio oficial en SourceForge:  http://sourceforge.net/projects/gitk/files/gitk-core/gitk-core-0.2.0/

gitk

3.  Git-cola

Es una app muy buena, liviana y con muchas funciones para manejar tus repositorios Git’s. La interfaz es intuitiva y fácil de usar.

Instalación: Debian/Mint/ubuntu:

# aptitude install git-cola

Enlace a su sitio oficial donde explica la instalación en distintos SO: http://git-cola.github.com/downloads.html

4. Tig

Herramienta desarrollada por los desarrolladores de ‘Gitk’, con una interfaz de terminal/consola es una app muy buena, rápida por supuesto para realizar muchas funciones en tus repositorios Git. Unas de sus funciones son: ver, revisar o buscar commits, hacer checkout a Ramas, hacer commits…

Instalción: Debian/Mint/Ubuntu:

# aptitude install tig

Clonar o descargar el proyecto: https://github.com/jonas/tig

Bueno existen muchas aplicaciones para esto pero para mí las mas destacadas son las antes mencionadas y a demás son las que me más me han gustado. 🙂

Saludos! Happy hacking.