In my previous post I explained the VMs installation and network configuration needed for installing Chef. In this second part, I’ll show how to install and configure the Chef Server, the two Nodes and the Chef Workstation. An overview and an explanation of these components can be seen here.

In order to get the DEB packages for Ubuntu, it’s needed to register and you’ll get an e-mail with the links to download them. Once all the packages are in the Chef Server, the installation can start.

Chef Server

My Chef Server is an Ubuntu Server. It has installed an Apache server using the port 80. Chef uses Nginx in the ports 80 and 443 so I need to stop the apache server before configuring Chef:
sudo /etc/init.d/apache2 stop
sudo update-rc.d apache2 disable

Now I can proceed with the installation and configuration of Chef:

sudo dpkg -i private-chef_11.2.2-1_amd64.deb
sudo private-chef-ctl reconfigure
sudo private-chef-ctl test

sudo dpkg -i opscode-reporting_1.1.6-1_amd64.deb
sudo opscode-reporting-ctl reconfigure
sudo private-chef-ctl restart opscode-reporting
sudo opscode-reporting-ctl test

sudo dpkg -i opscode-push-jobs-server_1.1.3-1_amd64.deb
sudo opscode-push-jobs-server-ctl reconfigure
opscode-push-jobs-server-ctl test

Don’t use root for running the previous commands or there will be an error. I got rid of the error just by using sudo as it’s explained in the documentation.


User and Organization

The user and organization can be created through the Chef Server Web interface. In my case, I can go to and sign up for a new user. The key for that user is needed for the Workstation configuration.

chef server create userThe user key can be generated and downloaded from the User section:
 chef server user key
The organization can be created as well from the web interface. The validation key for the organization is needed as well.
chef server create organization

Chef Workstation

As the Chef Workstation is an Ubuntu Desktop, I can use “sudo apt-get install chef” for installing the chef client. In my example, I’m using again as the Chef Server URL. Remember that I have added all the IPs and names in the /etc/hosts file.

The Chef Development Kit is also needed in the Worksation:

sudo dpkg -i chefdk_0.2.2-1_amd64.deb

I need to copy the user key file, the organization validation file and the initial knife configuration file to the Chef Workstation. I have copied them into /home/abian/.chef as it can be seen in the following screenshot:

chef worksation knife configuration

The content of the knife.rb should be something like this

abian@chefws:~/.chef$ cat knife.rb
current_dir = File.dirname(__FILE__)
log_level                :info
log_location           STDOUT
node_name           “abian”
client_key               “#{current_dir}/abian.pem”
validation_client_name   “albertoorg-validator”
validation_key           “#{current_dir}/albertoorg-validator.pem”
chef_server_url          ‘’
cache_type               ‘BasicFile’
cache_options( :path => “#{ENV[‘HOME’]}/.chef/checksums” )
cookbook_path            [“#{current_dir}/../cookbooks”]

Chef Nodes

I needed to install libc >= 2.14 in the two Debian servers to use the chef client. If you have installed Debian 7.6 in the nodes you’ll need to do the next three steps:

– Add sources.list: sudo echo ‘deb testing non-free contrib main’ >> /etc/apt/sources.list
– Check that it doesn’t break anything: sudo apt-get -t testing install libc6-dev –dry-run
– Install the new version: sudo apt-get -t testing install libc6-dev

The Chef Nodes are ready to be added to the chef environment. From the Chef Workstation run the following commands:

knife bootstrap -x root -P password -N debian1
knife bootstrap -x root -P password -N debian2

The new nodes appear now in the Chef web interface:
chef server with two nodesThe environment is ready for the addition of cookbooks and recipes.

I has been a good while since I don’t update my blog. The first change you’ll notice is that I’m writing in English now. After nearly three years living in Ireland I somehow got used to it :-) Apologies for my Spanish speaking readers and welcome to the English speaking readers!

I’ve been reading lately a lot of documentation about Chef. It’s really easy getting started with it just by copying and pasting the examples given in the documentation page. I’ll write in this post what I’ve done to play a little bit with Chef with my laptop.

I’m using VirtualBox for the virtual machines but another solution can be used. My host machine is a Dell XPS 13 Developer Edition with Ubuntu Desktop 12.04. VirtualBox can be downloaded from here.

Step 1: Virtual Machines

The first step is creating 4 new virtual machines:

  1. Chef Server:
    • OS: Ubuntu Server 64 bits
    • Memory: 3GB RAM
    • HD: 30 GB of HD
    • Network: Adapter 1 Bridged Adapter, Adapter 2:  Internal Network “chefnet”
  2. Chef Workstation:
    • OS: Ubuntu Desktop 64 bits
    • Memory: 1GB RAM
    • HD: 20 GB of HD
    • Network: Adapter 1 NAT, Adapter 2:  Internal Network “chefnet”
  3. Chef Node 1:
    • OS: Debian 7.6 (wheezy) 64 bits
    • Memory: 1GB RAM
    • HD: 20 GB of HD
    • Network: Adapter 1 NAT, Adapter 2:  Internal Network “chefnet”
  4. Chef Node 2:
    • OS: Debian 7.6 (wheezy) 64 bits
    • Memory: 1GB RAM
    • HD: 20 GB of HD
    • Network: Adapter 1 NAT, Adapter 2:  Internal Network “chefnet”

I’m using different Linux versions for adding a little bit of variety to the testing environment.

It’s needed that all the virtual machines can communicate between each other. Each virtual machine has two network adapters. Adapter 1 is used to give Internet connection to the virtual machine. It’s handy for downloading and installing new packages using APT.

First network adapter

The second network interface is present to have all the virtual machines in the same subnet. VirtualBox gives the option of having an internal network for the virtual machines:

VirtualBox internal network adapterThe second network adapter creates the following internal network:

chef eth1I’m using “Bridged Adapter” to allow me to do SSH and SCP from my host laptop into the Chef Server. I could use the shared folders functionality that VirtualBox offers but I prefer the old fashion ssh way.

The final configuration of the network looks like this

chef_networkStep 2: Install the OS in each machine.

Step 3: Root user and SSH server

After installing the OS in the four virtual machines, I have installed as well the VirtualBox additions in the two Ubuntu VMs. I have installed Gnome in the Chef Server and Unity in the Chef Workstation. The graphical interface is not needed at all in the Chef Server but I added it anyway just in case I needed it later on.

The root account is needed in the four VMs. In Ubuntu Desktop, you’ll need to do “sudo bash” put the password of your user and then “passwd” to create the password for the root user.

The SSH server is needed as well. As all the VMs have connection to internet, I can use the command: apt-get install openssh-server
The root user should be able to be used in a SSH connection. Modify the /etc/ssh/sshd_config file to include this line: PermitRootLogin yes

Step 4: Network

The Chef Server needs to have a Fully Qualified Domain Name. In the Chef Server, use as root: hostname

As I don’t have a DNS server in this environment. The content of the /etc/hosts should be the same for the four VMs:

The content of the file /etc/network/interfaces should be:

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
     # Change the las digit in the other machines

In the Ubuntu Desktop machine, probably you’ll need to remove the network manager because it overrides the content of the /etc/network/interfaces file. Try something like: apt-get remove network-manager network-manager-gnome

Final step: Review

The final step is reviewing that the communications are possible between the VMs. This is the summary of my VirtualBox VMs and the four of them running at the same time.
VirtualBox summaryVMs final setup

Hace exactamente dos años escribí un post explicando cómo configurar un servidor NFS. Hoy voy a completar ese post explicando cómo configurar ese servicio para funcionar con IPv6.

1- Configuración del escenario:

He creado dos máquinas virtuales de Ubuntu con Virtualbox, una de ellas hará de servidor y la otra será el cliente. El servidor tiene la IPv4 y la IPv6 2001::1:1/64 mientras que el cliente tiene la IPv4 y la IPv6 2001::1:2/64.

Servidor y cliente NFS

Servidor y cliente NFS

Para que haya un enlace entre ellas he configurado una red interna en VirtualBox entre ellos. Para crear dicha conexión hay que ir a las propiedades de la máquina virtual y, en la sección de red, cambiar de NAT a Red Interna. Se le puede dar un nombre para distinguirla de otras redes, en mi caso la he llamado nfsIPv6, como muestro en la siguiente captura de pantalla:

Configuración de red interna

Configuración de red interna

2- Configuración del servidor

En la máquina virtual del servidor tengo dos interfaces de red: eth0 en modo NAT para conectarme a internet y poder instalar software o consultar manuales y eth1 para realizar la comunicación con el cliente en IPv6. Para asignar una dirección IPv6 al interfaz de red eth1 he utilizado el siguiente comando:

root@server:~# ifconfig eth1 inet6 add 2001::1:1/64

Instalación del servidor NFS:

root@server:~# apt-get install nfs-kernel-server nfs-common portmap

creación de las carpetas que voy a exportar:

root@server:~# mkdir /home/abian/test
root@server:~#mkdir /home/abian/test2
root@server:~#chown -R abian.abian /home/abian/test*

Edición del archivo /etc/exports:

/home/abian/test       2001::1:2(rw,sync,no_subtree_check)
/home/abian/test2    *(ro,root_squash,no_subtree_check)

Edición del archivo /etc/hosts.allow:


Edición del archivo /etc/hosts.deny:


Reinicio de los servicios con las nuevas configuraciones:

root@server:~# /etc/init.d/portmap restart
root@server:~# /etc/init.d/nfs-kernel-server restart

3- Configuración del cliente

En el cliente solo hay una interfaz de red. Para añadir una dirección de IPv6 utilizo el mismo comando que para el servidor:

root@linux:~# ifconfig eth1 inet6 add 2001::1:2/64

Montar la partición NFS con IPv6

root@linux:~# mount -t nfs [2001::1:1]:/home/abian/test /home/abian/nfs_folder

4- Consideraciones adicionales

En el archivo /etc/exports puse dos líneas. Eso quiere decir que estoy exportando dos directorios del servidor. El directorio /home/abian/test solo puede ser accedido desde la dirección IPv6 2001::1:2 pero el directorio /home/abian/test2 puede ser accedido desde cualquier dirección IP porque puse un “*”.

Lo bueno de esta configuración es que puedo utilizar el protocolo IPv4 para acceder a un directorio y el protocolo IPv6 para conectarme a otro como muestro en la siguiente captura de pantalla:

IPv4 e IPv6 son buenos amiguitos

IPv4 e IPv6 son buenos amiguitos

Espero que este post os haya gustado. Se lo dedico especialmente al Maño y a su asignatura de sistemas operativos. ¡Ya me invitarás a una cerveza cuando nos veamos! :-)

Últimamente se está hablando muchísimo de piratería, derechos de autor, libertad de expresión, control de Internet. Todos son temas muy interesantes con discusiones realmente apasionadas. Sin embargo, como los más catastrofistas dirían, es posible que Internet tal y como la conocemos en la actualidad cambie si se aprueban determinadas leyes.

Por ahora os dejo la captura de pantalla de Wikipedia del día 18 de enero. No se si este “blackout” dará resultado pero al menos es una forma de protesta sin precedentes. ¿Realmente los internautas podemos hacer algo para parar a los grandes gobiernos y corporaciones?

wikipedia el 18 de enero de 2012

wikipedia el 18 de enero de 2012

El otro día me tuve que enfrentar de nuevo a la pregunta de qué sistema de ficheros utilizar en un disco duro externo. Me encantaría utilizar ext4 por su robustez, el journaling, etc. Sin embargo, seguro que tendré problemas cuando intente acceder a información de este disco duro externo desde un ordenador que no sea el mío. Tampoco quería caer en la tentación de utilizar VFAT por sus conocidos problemas y limitaciones. A sí que al final opté por NTFS que me permite utilizar archivos de más de 4GB, tiene journaling, metadatos de archivos, etc. Muchas de las ventajas que me ofrece ext4 pero sabiendo que funcionará en casi todos los ordenas donde lo utilice.

No tuve ningún problema para crear la partición utilizando gparted y funciona perfectamente en ubuntu. Sin embargo, me sorprendió que no hubiera soporte nativo de escritura para NFTS en Mac Os X 10.6.8. Tras alguna búsqueda en google parece que muchos usuarios de Mac se decantan por utilizar: paragon software o NTFS-3G. Ambos tienen una licencia que ronda los $20.

Tenía más sentido que, ya que existe soporte de escritura para en NTFS para GNU/Linux, los chicos de Apple hubieran implementado un soporte nativo de escritura en NTFS para Mac, a sí que al final encontré una solución más barata sencilla en este blog.

La idea es que por defecto se montará la partición como solo lectura pero utilizando la consola se puede forzar a que la partición se monte también como lectrua/escritura. Solo hay que saber el nombre del volumen y la ruta de la partición (algo del estilo /dev/disk?s?).

Para averiguar esas dos cosas se puede utilizar los comandos:

ls /Volumes/

diskutil info /Volumes/Abian/ | grep “Device Node”

Luego solo hay que crear una carpeta donde se montará el dispositivo y ejecutar el comando para montar la partición. Para que no se me olvide me he hecho un pequeño script:

#desmontar el volumen
hdiutil eject /Volumes/Abian/
#crear la carpeta donde se montará la partición
sudo mkdir /Volumes/Abian/
#montar la partición con la opción de escritura
sudo mount_ntfs -o rw /dev/disk1s1 /Volumes/Abian/
#mostrar que se ha montado bien
mount | grep Abian

No hay que olvidar darle privilegios de ejecución con chmod +x

Tras ejecutar el script debería aparecer la línea:

/dev/disk1s1 on /Volumes/Abian (ntfs, local, noowners)

en lugar de:

/dev/disk1s1 on /Volumes/Abian (ntfs, local, nodev, nosuid, read-only, noowners)

Un saludo

El momento de publicar una aplicación (o hacer una release) siempre es de los más agradables en la vida de un programador, o al menos, debería serlo. Ayer se produjo uno de estos momentos agradables al publicar la aplicación Tiras Cómicas. Esta aplicación es el primer resultado del grupo DevNullSoft (en el que estoy participando junto con un par de amigos) y, seguro, que no será la última. Básicamente se ha llevado por delante muchos de mis fines de semana y alguna que otra incursión al supermercado a por combustible.

Tiras Cómicas es una aplicación gratuita para Android que permite seguir algunas de las tiras cómicas en castellano más de moda. Para más información se puede acceder a su página en el Android Market o a la web del grupo.

A modo de anticipo os dejo un vídeo mostrando algunas de sus funcionalidades:


Desde aquí agradezco a nuestros sufridos usuarios de pruebas como Laura, Necorawoman o Iván que nos han ayudado a pulir la aplicación y que nos han aportado comentarios muy interesantes para las siguientes versiones.

Por supuesto, hay muchas cosas que nos gustaría mejorar y en las que empezaremos a trabajar en breve. Espero que os guste.

Un saludo

Cuando estaba estudiando la carrera de informática, el mundo del desarrollo web no me atraía demasiado. Sin embargo, después de llevar unos años programando portales web comprendo mejor sus posibilidades. Las herramientas de desarrollo web son cada vez más numerosas y tienen un sin fin de utilidades.

Hoy estaba leyendo Genbeta cuando me he topado con la noticia del complemento para firefox Tilt 3D que permite visualizar cualquier página web en tres dimensiones.

Igual que el otro día no me pude resistir a probar JoomlaScan, hoy no me he podido resistir a probar esta extensión. Tras instalarla, solo hay que reiniciar firefox y pulsar la combinación de teclas “Ctrl + Shift + M” o ir al menu “Herramientas -> Desarrollo Web -> Tilt”.

El resultado es impresionante como se puede ver en las dos capturas de pantalla que muestro a continuación:

Portal de Organic.Edunet en 3D

Portal de Organic.Edunet en 3D

Portal de VOA3R en 3D

Portal de VOA3R en 3D

Además de visualizar páginas web en 3D también se puede utilizar los controles de la parte izquierda de la pantalla para modificar en vivo el resultado obtenido. Por ejemplo, se puede aplicar transparencias, inspeccionar elementos HTML, cambiar CSS…

Sin duda una herramienta que merece la pena probar.

Un saludo