Estuve hablando con Javier Vidal sobre el tema y al día siguiente me comento en twitter
Y en lugar de compartirselo sólo a Javi, he creado esta entrada en el blog :)
Para ello, he separado el role de bootstraping de nuestra instalación de Teowaki en un proyecto independiente y lo he configurado con Vagrant, para poder probarlo en local sin problemas.
El proyecto está disponible en github.
Los pasos para probarlo son:
Instalar Vagrant en local (previamente debe estar instalado VirtualBox). He optado por instalarlo a partir del .deb en lugar de a partir de apt porque la opción apt me instalaba los paquetes de ruby 1.9, y ruby ya lo tengo instalado en local con RVM.
$ wget https://dl.bintray.com/mitchellh/vagrant/vagrant_1.6.2_x86_64.deb
$ sudo dpkg -i vagrant_1.6.2_x86_64.deb
$ vagrant -v
Vagrant 1.6.2
$ vagrant init ubuntu/trusty64
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Una vez instalado, simplemente con vagrant up levantamos el servidor, que escucha por defecto por ssh en el puerto 2222 en localhost
El siguiente paso es configurar el servidor en Ansible, que es tan simple como definir en un fichero hosts los datos de conexión al servidor. En mi caso he definido un grupo de servidores 'development' que incluye al servidor dev
[development]
dev ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
Por otra parte configuro la conexión a vagrant en ansible.cfg, de forma que no hay que escribirla en cada conexión desde ansible
[defaults]
hostfile = hosts
private_key_file=~/.vagrant.d/insecure_private_key
remote_user = vagrant
Y probamos que la conexión al servidor desde ansible funciona
$ ansible dev -m ping
dev | success >> {
"changed": false,
"ping": "pong"
}
Sin el fichero de configuración la instrucción habría sido:
$
ansible dev -i hosts --private-key=~/.vagrant.d/insecure_private_key -u vagrant -m ping
Una vez comprobado que conectamos, cambiamos el fichero development.yml con la configuración local y ya podemos instalar el servidor
$ ansible-playbook bootstrap.yml
Por último, las tareas incluídas en el role son:
Para que funcione correctamente la instalación se debe actualizar el fichero development.yml con la configuración local (usuarios y sus claves públicas, emails, dominio, claves de acceso a Mandrill y NewRelic, ...) tal y como cuento en el README del proyecto.
No hay comentarios:
Publicar un comentario