miércoles, 24 de junio de 2009

Alternativa a lomount

Parece que lomount no está en Ubuntu (al menos Ubuntu 9.04 p/AMD64), pero existe un truco para montar particiones "internas" de una imagen de un disco.

Yo necesité montar la 1er partición de la imagen de un disco de un dominio virtualizado. Aunque el disco (para el dominio virtualizado) en realidad estaba provisto por un volumen lógico (LVM) todo funcionó perfectamente.

Pasos a seguir (en ingles): http://community.livejournal.com/debian/340887.html

Migrar repositorio "privado" de git a repositorio público

Necesité crear repositorios "públicos" (donde se puedan hacer pull/push desde distintas PCs) tomando los datos de repositorios locales/privados (donde realizo el desarrollo diario) y resultó ser bastante fácil:

1. Crear repositorio "publico"
a) crear un directorio - mkdir /var/git/proyecto.git
b) posicionarse en ese directorio - cd /var/git/proyecto.git
c) inicializar el directorio - git init --bare

2. Hacer push de repositorio local/privado a público
a) nos posicionamos en directorio - cd /path/a/repo/privado
b) creamos "remote" - git remote add origin ssh://pc/var/git/proyecto.git
c) configuramos repositorio - git config --bool remote.origin.mirror true
d) hacemos push - git push origin

El paso 2.c es opcional, pero a mí me resultó muy útil. Al ajustar la variable "remote.origin.mirror" a true, git subirá todos los branches y tags automáticamente cuando ejecutemos el push. Si no se realiza esta configuración, el en paso 2.d hará falta especificar los branches a subir.

sábado, 20 de junio de 2009

Tig: text-mode interface for git

Estaba disponible al menos desde Ubuntu 8.10 pero recién lo descubro! Es una interface en modo texto para git, con varias funciones. Home. Screenshots.

#~ sudo aptitude install tig

sábado, 13 de junio de 2009

Ubuntu 9.04 como dominio virtual usando virt-install + kvm

Se puede instalar Ubuntu 9.04 usando virt-install con un comando como el siguiente:
virt-install -d --connect qemu:///system \
-n ubuntu904virtual -r 1024 --vcpus=4 \
-f /dev/vg_virt/root \
-f /dev/vg_virt/tmp \
-f /dev/vg_virt/pv0 \
-c /tmp/ubuntu-9.04-server-amd64.iso \
--accelerate --vnc -v \
--os-type=linux --os-variant=generic26


-d para que muestre por consola información adicional mientras se crea la maquina virtual
-n es el nombre del dominio virtual
-f es para especificar discos, en este caso el dominio virtual vera 3 discos, el 1ro lo usaré para /, el segudo para /tmp y el 3ro como un "volumen fisico" para configurar LVM.
-c para especificar el path al iso

En el caso de usar LVM hay que tener cuidado porque en el servidor host se verán todos los "volume groups" y los "logical volumes" del dominio virtual. Para evitar esto se puede configurar LVM para que IGNORE totalmente ciertos "physical volumes" editando el archivo /etc/lvm/lvm.conf, y agregando:

filter = [ "r|^/dev/vg_virt/pv.*|" ]

Esto le dice a LVM que ignore cualquier "physical volume" que esté referenciado por algún dispositivo cuyo nombre comience con "/dev/vg_virt/pv". Para chequear que esto haya funcionado correctamente, ejecutamos:

pvscan -v

Los siguientes pasos a seguir podrían ser:
- instalar git y crear repo en /etc para tener historial de modificaciones
- configurar approx
- configurar serial console
- configurar virtio para discos/red
- configurar red usando bridge
- configurar autostart de dominios

jueves, 11 de junio de 2009

Configurando approx para cachear paquetes

En /etc/approx/approx.conf definir 2 servidores:

ubuntu-jaunty            http://ar.archive.ubuntu.com/ubuntu/
ubuntu-jaunty-security   http://security.ubuntu.com/ubuntu

Y luego, hay que cambiar /etc/apt/sources.list de manera que quede:

deb http://localhost:9999/ubuntu-jaunty jaunty main restricted
deb http://localhost:9999/ubuntu-jaunty jaunty-updates main restricted
deb http://localhost:9999/ubuntu-jaunty jaunty universe
deb http://localhost:9999/ubuntu-jaunty jaunty-updates universe
deb http://localhost:9999/ubuntu-jaunty jaunty multiverse
deb http://localhost:9999/ubuntu-jaunty jaunty-updates multiverse
deb http://localhost:9999/ubuntu-jaunty-security jaunty-security main restricted
deb http://localhost:9999/ubuntu-jaunty-security jaunty-security universe
deb http://localhost:9999/ubuntu-jaunty-security jaunty-security multiverse

Esta configuración es la que usé para un servidor Ubuntu 9.04

miércoles, 3 de junio de 2009

Virtualización con KVM

Investigando para implementar KVM encontré varios artículos interesantes:

Guías
- Virtualization With KVM On Ubuntu 9.04
- Virtualization With KVM On Ubuntu 8.10
- Installing KVM Guests With virt-install On Ubuntu 8.10 Server (agregado el 5 de jun)

En sitio de KVM
- Setting guest network
- Setting up NAT with KVM in Ubuntu

En sitio de Ubuntu (administrada a través de libvirt)
- Installation
- Networking
- CreateGuests
- Managing

Y para gestionar el tráfico de red, además del clásico iptables, es interesante tener en cuenta ebtables.

equivs

Con equivs se pueden crear muy facilmente paquetes "vacíos" para Debian/Ubuntu/etc. Estos paquetes aunque no contengan ningún programa pueden ser de gran utilidad, al menos en 2 casos:
  • para crear un paquete que dependa en otros paquetes: esto me es de gran ayuda para crear un paquete que dependa de todos los paquetes que generalmente instalo en los servidores Linux que administro (por ejemlpo, tcpdump, hdparm, smartctl, etc.)
  • para crear un paquete que "provea" software que hemos instalado manualmente. Por ejemplo, si instalamos manualmente Java, pero queremos instalar Tomcat usando los paquetes que de nuestra distribución en uso, como Tomcat depende de Java, se intentará instalar un JRE o JDK de Java. Con equiv podemos crear un paquete que diga que provee Java, y así podremos instalar Tomcat sin instalar nuevamente otro JDK/JRE.
Links:
- How to install locally compiled packages: equivs
- Howto: create "configuration packages" with equivs