Instalando RancherOS en un VPS de Scaleway

  • #linux
  • #docker

Instala RancherOS en Scaleway y gestiona, de manera fácil y barata, infrastructuras robustas y auto-escalables.

En el artículo anterior vimos como hacer frente al monopolio de AWS en servidores utilizando Linode. En este artículo buscaremos la misma meta, instalar RancherOS, pero haciendo uso de la plataforma de Scaleway, una plataforma que llevo utilizando unos cuantos meses y me parece genial, tanto por el soporte que tienen (incluído canal de IRC) como por la estabilidad de los servidores. Por supuesto, no hay que olvidar el principal motivo por el que Scaleway es el rey en su rango: el imbatible precio. Una máquina con 2 núcleos, 2 GB de RAM, disco SSD y transferencia de datos ilimitada... ¿por 2.99€ al mes? Parece un chiste. Además, Scaleway ofrece flexibilidad por doquier en todos los aspectos, tanto técnico como el de facturación.

Tras este pequeño marketing no remunerado vamos al lío.

Scaleway + Rancher = Infrastructura flexible a un precio ridículo

Voy a saltarme la introducción a Rancher y RancherOS puesto que puedes consultarla en "Instalando RancherOS en un VPS de Linode".

Este artículo hace referencia al artículo de Linode, tener ambos abiertos no viene mal.

La aplicación CLI

Antes de nada quiero aclarar que todo esto se puede hacer desde el dashboard de Scaleway pero en este artículo voy a explicar como utilizar la aplicación CLI para que podamos automatizar la creación de servidores lo máximo posible.

Esta aplicación se puede encontrar en el repositorio oficial de scaleway-cli y funciona en todas las plataformas, además de poder utilizarse a través de Docker. En mi caso, como utilizo Arch Linux, hago uso del paquete scaleway-cli que se encuentra en los repositorios de usuario de Arch (AUR).

Sigue las instrucciones de instalación de tu plataforma así como la identificación dentro de la herramienta mediante el comando scw login.

Preparación del VPS

Para crear un servidor lo único que hay que hacer es ejecutar el siguiente comando:

scw create --bootscript="x86_64 rescue" --ip-address="x.x.x.x" --commercial-type="VC1S" --name="nombre-del-host" --ipv6=true 50G

Lo único importante es el primer parametro, bootscript, en el que indicaremos a Scaleway que nuestro servidor iniciará en modo rescate.

En cuanto a la IP, podemos crear una desde el dashboard o dejar que nos asigne una aleatoria.

El parámetro commercial-type corresponde al tipo de servidor que queremos contratar. Podemos ver las distintas opciones ejecutando el comando scw products servers.

Asignamos un nombre a nuestro servidor y eligimos otras opciones como por ejemplo obtener una dirección IPv6 o la región en la que queremos nuestro servidor. Consulta la documentación de scaleway-cli para ver todas las opciones disponibles.

Por último, el valor final de 50G indica que nuestro servidor tendrá un volumen SSD de 50 GB (el mínimo).

Como destacaba arriba, lo único importante es elegir "x86_64 rescue" como sistema de arranque.

La respuesta del comando será el ID de nuestro servidor recién creado.

Iniciar en modo rescate

Para iniciar el servidor solo tenemos que ejecutar el siguiente comando:

scw start <ID>

Una vez esté encendido entramos por SSH mediante el usuario root y la IP de nuestro servidor. Para consultar cual es la IP, ejecuta scw ps.

Instalación de RancherOS

A partir de aquí, el método de instalación es muy parecido a como lo haríamos en Linode, con un par de cambios imprescindibles.

Al final de esta sección encontrarás el comando completo para copiar y pegar sin necesidad de ir uno por uno.

El primer paso es actualizar el sistema.

export DEBIAN_FRONTEND=noninteractive
apt-get -qq update
apt-get -qq install --no-install-recommends ca-certificates git grub2

Ya podemos crear nuestro fichero cloud-config.yml con la configuración a nuestro gusto. Para este artículo vamos a utilizar una configuración mínima. Tan mínima que ni siquiera vamos a instalar Rancher. Únicamente instalaremos RancherOS sobre Scaleway, tal como reza el título del artículo. Aún así, más abajo encontrarás lo necesario para utilizar Rancher. Puedes saltar y después volver a este punto.

A nuestra instancia le asignaremos un hostname y una clave SSH pública para poder iniciar sesión mediante SSH tras la instalación, ya que el acceso mediante contraseña está desactivado y desaconsejado.

#cloud-config
hostname: par1-rancher
ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2E...

Y por último, descargamos todo lo necesario y ejecutamos los comandos que instalarán RancherOS en el disco.

export VERSION=v0.7.1
git clone --branch "${VERSION}" https://github.com/rancher/os.git rancheros
ln -fs ../../build.conf rancheros/scripts/installer/build.conf
ln -fs `pwd`/rancheros/scripts/installer /scripts
mkdir dist
wget -q -P dist "https://github.com/rancher/os/releases/download/${VERSION}/initrd"
wget -q -P dist "https://github.com/rancher/os/releases/download/${VERSION}/vmlinuz"
sed -i 's/^partprobe/#partprobe/' rancheros/scripts/installer/set-disk-partitions
rancheros/scripts/installer/set-disk-partitions /dev/vda
rancheros/scripts/installer/lay-down-os -c cloud-config.yml -d /dev/vda -i dist -t generic
mount /dev/vda1 /mnt/new_img/
sed -i 's/console=tty0/console=ttyS0,115200/' /mnt/new_img/boot/grub/grub.cfg
umount /mnt/new_img

Ahora es cuando os cuento las buenas y las malas noticias.

La mala noticia es que Scaleway es, de momento, incapaz de iniciar por si mismo nuestro sistema operativo RancherOS, por lo que, tras cada reinicio o apagado, tendremos que ser nosotros los que manualmente lo hagamos. Las buena noticia es que mis servidores llevan meses online sin reiniciarse ni caerse, por lo que no considero que esto sea un problema.

Nuestra máquina siempre intentará iniciar en modo rescate. Para evitarlo e iniciar manualmente en RancherOS, primero accedemos a la consola serie de nuestra máquina mediante el comando:

scw attach <ID>

Esta consola nos permite visualizar todo lo que ocurre desde que se enciende la máquina, por lo que podremos acceder al menu iPXE y a todo el sistema de arranque.

Para salir del modo attach pulsamos Ctrl+Q.

Reiniciamos utilizando el comando reboot desde la terminal que esté conectada por SSH (donde hicimos la instalación). Apenas 2 segundos después empezaremos a ver algo tal que así en la pantalla:

SeaBIOS (version Ubuntu-1.8.2-1ubuntu1)


iPXE (http://ipxe.org) 00:02.0 C100 PCI2.10 PnP PMM+7FF92380+7FED2380 C100



Booting from ROM...
iPXE (PCI 00:02.0) starting execution...ok
iPXE initialising devices...ok



iPXE 1.0.0+git-20150424.a25a16d-1ubuntu1 -- Open Source Network Boot Firmware -- http://ipxe.org
Features: DNS HTTP HTTPS iSCSI NFS TFTP AoE ELF MBOOT PXE bzImage Menu PXEXT

Press Ctrl-B for the iPXE command line...

Lo que hay que hacer es, evidentemente, pulsar Ctrl+B para acceder al menú iPXE. Si quieres, puedes pulsarlo repetidas veces hasta que acceda.

Esto es bastante fugaz y las primeras veces nos costará un poco enterarnos. No te preocupes, vuelve a entrar por SSH, reinicia y prueba de nuevo. Después de un par de veces ya no se te resistirá.

Una vez dentro de este menú lo unico que tenemos que poner es exit y dar al Enter. El sistema saldrá del menú iPXE y reiniciará RancherOS a través del gestor de arranque GRUB. Puede parecer raro pero así es como conseguí que funcionase.

Recuerda, cada vez que quieras reiniciar el servidor tienes que conectarte mediante scw attach, pulsar Ctrl+B rápidamente y después escribir exit. ¡Eso es todo!

Tras unos segundos estaremos en RancherOS. Accedemos mediante SSH con el usuario rancher y la IP de nuestra instancia.

ssh rancher@IP

Comando completo

Lo prometido es deuda, crea el fichero cloud-config.yml y copia y pega el siguiente comando para ejecutar todas las acciones a la vez.

export DEBIAN_FRONTEND=noninteractive && apt-get -qq update && apt-get -qq install --no-install-recommends ca-certificates git grub2 && export VERSION=v0.7.1 && git clone --branch "${VERSION}" https://github.com/rancher/os.git rancheros && ln -fs ../../build.conf rancheros/scripts/installer/build.conf && ln -fs `pwd`/rancheros/scripts/installer /scripts && mkdir dist && wget -q -P dist "https://github.com/rancher/os/releases/download/${VERSION}/initrd" && wget -q -P dist "https://github.com/rancher/os/releases/download/${VERSION}/vmlinuz" && sed -i 's/^partprobe/#partprobe/' rancheros/scripts/installer/set-disk-partitions && rancheros/scripts/installer/set-disk-partitions /dev/vda && rancheros/scripts/installer/lay-down-os -c cloud-config.yml -d /dev/vda -i dist -t generic && mount /dev/vda1 /mnt/new_img/ && sed -i 's/console=tty0/console=ttyS0,115200/' /mnt/new_img/boot/grub/grub.cfg && umount /mnt/new_img

Actualización de RancherOS

Como indicamos arriba, RancherOS se encuentra instalado en su versión 0.7.1, la cual se puede comprobar mediante el comando sudo ros os version.

Para actualizar el sistema basta con ejecutar sudo ros os upgrade, un comando que ejecutaremos cada vez que queramos actualizar el sistema operativo de nuestras instancias.

sudo ros os upgrade
Upgrading to rancher/os:v1.0.2
Continue [y/N]: y

Tras el reinicio, (acuérdate del scw attach) el sistema operativo estará en la versión más reciente.

Instalación de Rancher

La instalación de Rancher es exactamente igual a la que comenté en el artículo de la instalación de RancherOS en Linode. Puedes consultar el texto aquí.

Conclusión

Tras estos pasos ya tenemos lo necesario para ejecutar nuestros contenedores de Docker en una infrastructura sólida y super barata, haciendo uso de Scaleway, RancherOS y Rancher.

Si te ha gustado el artículo compártelo y comenta, así sabré que este área es de interés y escribiré nuevos artículos sobre este tema, como por ejemplo cómo crear un clúster de Kubernetes en Rancher.

Compartir en