domingo, 16 de septiembre de 2018

Publicar y Compartir un Box en Vagrant Cloud

Bueno, esta entrada súper rápida y es la explicación Paso a Paso para publicar los Base Box de Vagrant que nosotros creamos en el servicio en la nube de Vagrant Cloud donde podemos compartir de forma pública o privada y de forma colaborativa con nuestro equipo de trabajo los Boxes.

Antes que nada recomiendo leer mi anterior entrada al Blog donde se explica Paso a Paso la forma en que podemos construir nuestros propios Boxes de Vagrant usando VirtualBox.

Crear un Base Box de Vagrant Paso a Paso


Listo, primero lo primero, deben crear una cuenta en Vagrant Cloud y tener ya configurado un Boxes que deseen publicar.

Registrarse en Vagrant Cloud


Crear cuenta Vagrant Cloud
Crear cuenta Vagrant Cloud

Paso 1: Crear un Nuevo Vagrant Box

Suponiendo que ya tienen configurado un Box, es decir, ya tienen un archivo package.box, tiene sentido iniciar proceso del Paso 1.

Cuando ya iniciamos sesión en nuestra cuenta de Vagrant Cloud, desde el menú Dashboard existe un botón que nos permite crear un Nuevo Vagrant Box.

Dashboard Vagrant Cloud
Dashboard Vagrant Cloud

Seleccionamos el botón New Vagrant Box y nos despliega un panel desde el cual por medio de un formulario nos solicita información relacionada con la creación del nuevo Box. El nombre con el cual queremos identificar el Box, entre mas simple mejor, el tipo de visibilidad, es decir, si queremos que nuestro Box sea visible para todo el publico o solo para usuarios específicos, con una cuenta gratis podemos solo publicar Boxes publicos, si necesitamos que sean solo de acceso privado tenemos que pagar, también podemos agregar una breve descripción sobre el Box que vamos a crear.

Crear nuevo Vagrant Box
Crear nuevo Vagrant Box
Cuando ingresamos todos los datos que nos solicita, hacemos clic sobre el botón Create box, esto nos despliega un siguiente formulario donde debemos ingresar la versión del Box que vamos a crear, este sugiere usar la semántica de versiones de Ruby, adicionalmente una descripción sobre la versión del Box que vamos a crear, finalmente hacemos clic en Create version.

Versión del Box

Ya con los pasos anteriores solo hemos creado la definición del Box, para poder publicar y hacer un Release del Box tenemos que agregar un Provider al Box, es decir, el provider corresponde a la configuración de maquina virtual a la que está destinado a funcionar nuestro Box y hacer la carga de nuestro archivo package.box al correspondiente provider.

Nuevo Box
Nuevo Box

Paso 2: Agregar un Provider

Este paso consiste en definir el tipo de maquina virtual en donde puede ser ejecutado el Box y también debemos realizar la carga del archivo package.box que previamente hemos construido.

Agregar Provider
Agregar Provider
Este proceso puede tomar un largo tiempo, todo depende de nuestro ancho de banda de subida y del tamaño del archivo package.box que tenemos, al finalizar el proceso ya estamos cerca para hacer publico nuestro Box en Vagrant Cloud.


Paso 3: Publicar nuestro Box

Finalmente y después de asegurarnos que tenemos agregado a nuestro Box un Provider, podemos continuar con la liberación o publicación del Box, para esto solo tenemos que hacer clic en el botón Release ... y ya estará disponible una versión de nuestro Box en Vagrant Cloud.

Release de Box
Release de Box

Paso 4: Usar nuestro Box

Ahora ya solo es cuestión de compartir nuestro Box para que otras personas puedan hacer uso de el, incluso nosotros podemos usarlo, para eso vamos usar la CLI de Vagrant en nuestro equipo y vamos agregar el Box para poder crear todas las instancias que necesitemos a partir de el.

  • Listar los Boxes que tenemos agregados:
    • promt$ vagrant box list
  • Agregar el Box:
    • promt$ vagrant add sebaxtian/bionic64
  • Crear una instancia a partir del Box sebaxtian/bionic64
    • promt$ vagrant init sebaxtian/bionic64
  • Ejecutar la instancia
    • promt$ vagrant up
  • Iniciar sesión en la instancia ejecutada
    • promt$ vagrant ssh

Listo eso es todo, ya solo es cuestión de cachariar y aprender mas sobre la CLI de Vagrant y la configuración de las instancias a partir del archivo Vagrantfile.


Para más información leer la documentación oficial de Vagrant:


viernes, 14 de septiembre de 2018

Crear un Base Box de Vagrant Paso a Paso

Hola, seré breve en esta entrada del Blog, vamos a Crear un Base Box de Vagrant Paso a Paso, intentando explicar lo que se debe hacer para poder construir nuestros propios 'Boxes' a partir de una Imagen ISO de una distribución de Linux en una Máquina Virtual de VirtualBox.

Si encontraron de casualidad esta entrada al Blog y no tienen ni idea sobre que es Vagrant, Base Box o VirtualBox, creo que están en el lugar equivocado. O tal vez no ?

VirtualBox es un sistema de virtualización que nos permite crear maquinas a nivel de software que comparten los recursos de hardware de una maquina anfitriona. Esto nos permite crear varias maquinas virtuales en una misma maquina anfitriona compartiendo información entre ellas y el host.

Vagrant es una herramienta que nos permite administrar maquinas virtuales, básicamente es una interfaz que nos permite configurar y administrar maquinas virtuales sin importar el tipo de sistema de virtualización que estemos usando, es decir, podemos administrar y configurar maquinas virtuales de Amazon, VirtualBox, VMWare entre otros.

Un Base Box es una configuración de una maquina virtual previamente construida y desde la cual podemos crear nuestras múltiples instancias de maquinas virtuales a partir de la configuración del Base Box, cada una de las instancias que creamos tendrá sus propios programas y configuraciones que nosotros decidamos. Se puede generalizar el concepto de Base Box como una Clase en Programación Orientada a Objetos, donde la Clase provee la definición de atributos y configuraciones generales, así cuando hacemos una Instancia de la Clase estamos creando un Objeto y cada uno tiene su propio estado, atributos y configuraciones.


Bueno, ahora en esta entrada no quiero entrar en detalles sobre cada uno de esos temas, tal vez mas adelante escribo algo sobre cada cosa, por ahora vamos al grano.


REQUERIMIENTOS:
  1. Instalar VirtualBox -> https://www.virtualbox.org/
  2. Instalar Vagrant -> https://www.vagrantup.com/downloads.html
  3. Descargar un ISO de Ubuntu Server -> https://www.ubuntu.com/download/server
  4. Comprar una cerveza bien helada

Después de cumplir los requerimientos necesarios para poder lograr nuestro objetivo, lo primero que debemos hacer para crear nuestro Base Box, es tener una maquina virtual creada y configurada a partir de la cual vamos a construir nuestro Base Box.



Paso 1: Crear y Configurar Maquina en VirtualBox

Vamos a crear una máquina con una configuración básica usando una distribución de Ubuntu Linux Server, como requerimientos mínimos para instalar Ubuntu Linux Server vamos a usar los siguientes:

Nombre de la maquina: ubuntu-server
Memoria RAM: 512MB
Virtual Disk: 10GB tipo VDI
Adaptador de red: NAT
Instalar OpenSSH Server

Con la configuración anterior se realiza la instalación de ubuntu server en la maquina virtual que vamos a crear, tener en cuenta que durante la instalación de Ubuntu Server, se debe instalar como software adicional el OpenSSH Server.

Mi objetivo es crear un Base Box que pueda compartir con mi equipo de trabajo o la comunidad, por lo tanto hay que configurar un usuario vagrant como usuario root de nuestra maquina virtual, el password es el mismo nombre de usuario vagrant, este usuario ademas será configurado para que no se le solicite el password para realizar tareas de root, igualmente el root del sistema debe tener el mismo password que el usuario vagrant.


Configurar Password de Root:

promt$ sudo passwd root

El sistema nos va permitir modificar el password del usuario root, debemos asignar el mismo password del usuario vagrant, para comprobar que modificamos el password del root correctamente nos logueamos así:

promt$ su -

Con el anterior comando nos identificamos como usuario root en ubuntu server de nuestra maquina virtual.


Configurar Usuario vagrant como usuario Root:

promt$ sudo visudo -f /etc/sudoers.d/vagrant

Se debe guardar el archivo con la siguiente configuración para que así el usuario vagrant puede ejecutar comando que requieren autenticación de root sin que se le pregunte cada vez por el password del usuario.


# add vagrant user
vagrant ALL=(ALL) NOPASSWD:ALL

Podemos comprobar que la configuración se aplicó correctamente ejecutando un comando como sudo:

promt$ sudo pwd

Ya no debería preguntar la linea de comando por el password del usuario, esto debería permitir la ejecución directa del comando como usuario con privilegios de root.


Instalar Actualizaciones y Reiniciar la Maquina Virtual:

Es recomendable instalar actualizaciones disponibles de Ubuntu Server y reiniciar la maquina.

promt$ sudo apt-get update
promt$ sudo apt-get upgrade
promt$ sudo shutdown -r now


Instalar el Authorized Key SSH de Vagrant:

Como mi objetivo es compartir el Base Box con mi equipo de trabajo y la comunidad debemos usar la configuración de llave publica de autorización SSH generada por Vagrant con el propósito de poder validar la autenticación mediante SSH con nuestra maquina virtual de forma genérica.
Claro esta que si el objetivo no es compartir el Base Box, deberíamos generar nuestras propias llaves de autorización SSH.

Desde el Ubuntu Server de nuestra maquina virtual realizar las siguientes tareas:

promt$ mkdir -p /home/vagrant/.ssh
promt$ chmod 0700 /home/vagrant/.ssh
promt$ wget --no-check-certificate https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys
promt$ chmod 0600 /home/vagrant/.ssh/authorized_keys
promt$ chown -R vagrant /home/vagrant/.ssh

Debemos configurar el OpenSSH Server para que cargue la configuración de la llave de autorización de Vagrant, para esto se debe modificar el archivo de configuración y agregar o descomentar como se detalla a continuación:

promt$ sudo nano /etc/ssh/sshd_config

En el archivo, sshd_config agregar o descomentar:

AuthorizedKeysFile %h/.ssh/authorized_keys

Finalmente debemos reiniciar el servicio de OpenSSH:

promt$ sudo service ssh restart


Instalar VirtualBox Guest Additions:

Se debe montar en la maquina virtual el ISO donde están los instadores de VirtualBox Guest Additions desde la unidad de CD de la maquina virtual, también se debe instalar ciertas dependencias para poder realizar la instalación del VirtualBox Guest Additions.

promt$ sudo apt-get install linux-headers-$(uname -r) build-essential dkms
promt$ sudo mount /dev/cdrom /media/cdrom
promt$ cd /media/cdrom
promt$ sudo ./VBoxLinuxAdditions.run

Listo, con esto finalmente terminamos de Instalar y Configurar la Maquina Virtual con Ubuntu Server la cual vamos a usar para Generar un Base Box usando las herramientas de Vagrant.



Paso 2: Empaquetar el Base Box

Usamos la herramienta de Vagrant que nos permite generar o empaquetar un Base Box a partir de una maquina virtual creada y configurada en VirtualBox.

Desde la maquina anfitriona y en un directorio destinado para guardar los Base Box generados ejecutamos:

promt$ vagrant package --base my-virtual-machine

La herramienta se encarga de compilar y empaquetar toda la configuración de nuestra maquina virtual en un solo archivo de nombre package.box, este archivo tiene una estructura interna de archivos como se muestra la imagen:

Estructura de un Base Box
Estructura de un Base Box

Finalmente el archivo package.box es nuestra definición de Clase a partir de la maquina virtual que nosotros construimos.



Paso 3: Probar nuestro Base Box

Debemos agregar el Box a nuestro vagrant en la maquina anfitriona para que posteriormente podamos generar o construir todas las instancias necesarias de nuestro Box.

promt$ vagrant box add --name my-box /path/to/the/package.box

Creamos o inicializamos el Vagrantfile tomando como base el Box que creamos.

promt$ vagrant init my-box

Ejecutamos o desplegamos la instancia del Box.

promt$ vagrant up

Para iniciar sesión o identificarnos en la instancia de Box que tenemos ejecutado, usamos el mecanismo de conexión SSH que provee vagrant.

promt$ vagrant ssh



Paso 4: Compartir nuestro Base Box

Como mi objetivo es compartir y distribuir el Base Box con mi equipo de trabajo o la comunidad, debemos usar mecanismos para compartir nuestro archivo package.box, ya sea usando alguna herramienta de compartir recursos en la nube o usando los servicios dedicados para esto que ofrece Vagrant Cloud, desde el cual podemos compartir de forma gratuita nuestros Boxes con la comunidad.


En una próxima entrada escribiré sobre el paso a paso para compartir el archivo package.box en el servicio que ofrece Vagrant Cloud.


Chao.




lunes, 12 de febrero de 2018

Reparar IMEI Lenovo ZUK Z2 Snapdragon Qualcomm

Buenas, Buenas !!

Aquí regreso en esta entrada, muchos días, meses y cuasi años después de mi ultima entrada al Blog.

Quiero compartir mi experiencia después de indagar en muchos y muchos y muchos foros y también gracias a la ayuda de un compañero de trabajo de nombre Francisco, encontré la forma de "Reparar" o lo que es básicamente cambiar el IMEI de mi celular Lenovo Zuk Z2.

Mi vi en la necesidad de realizar este proceso ya que gracias a las leyes absurdas de Colombia, el IMEI de mi dispositivo había sido puesto en las listas negras de IMEI de mi país.

Leyes absurdas que solo buscan la conveniencia del monopolio de las grandes compañías de telecomunicaciones y que a pesar de que mi equipo lo he comprado legalmente en el exterior no era posible homologar en mi país.

Leyes absurdas creadas con bajo la ilógica idea de disminuir el hurto y venta de dispositivos móviles robados (las partes de los dispositivos se pueden vender como repuestos).

Una millonaria inversión que ha hecho el gobierno de Colombia cerca de 20 MILLONES de DÓLARES que No Han Servido para Absolutamente NADA, lea y escuche la siguiente entrevista donde la presidenta de Asomovil manifesta:

"Así lo reconoció la presidente de Asomovil, Nancy Patricia Gutiérrez, en diálogo con 6 AM Hoy por Hoy de Caracol Radio quien manifestó que las medidas que se han adoptado por parte del Gobierno nacional no han servido."



Bueno, ahora si expongo el paso a paso para llevar a cabo el Proceso de Cambiar el IMEI de mi dispositivo.


Requisitos:

- Drivers Qualcomm Diag Port
- ADB Fastboot Tool
- Qualcomm Snapdragon IMEI


Descargar los programas necesarios desde el siguiente link que les comparto:

Programas Requeridos IMEI REPAIR LENOVO ZUK Z2


Una vez descargado se descomprime el archivo y debe contener los programas requeridos como se muestra en la siguiente imagen.

Programas Requeridos
Programas Requeridos


Paso 1: Instalar Drivers Qualcomm Diag Port

Este paso es necesario para poder instalar los drivers de Qualcomm para posteriormente habilitar el Diag Port de nuestro dispositivo, entonces se debe ejecutar el instalador QUD.WIN.1.1 Installer-10037.3 Setup y solo seguir y dar siguiente.



Paso 2: Habilitar Diag Port

Para poder que nuestro dispositivo sea reconocido como en un puerto COM del sistema, debemos habilitar esta opción usando ADB Fastboot Tool.

Tenemos que abrir una terminal CMD de Windows y ubicarnos en el directorio de adb-fastboot-tool-2016 como se ve en la siguiente imagen:

ADB Fastboot Tool
ADB Fastboot Tool

Ahora, tenemos que conectar nuestro Lenovo Zuk Z2 al sistema con el cable USB y ejecutar los siguientes comandos en el siguiente orden:

adb shell

su

setprop sys.usb.config diag,adb

Listo, ahora nuestro dispositivo debe ser reconocido como un puerto COM desde el Administrador de Dispositivos de Windows.

Administrador de Dispositivos
Administrador de Dispositivos


Paso 3: Instalar Driver Qualcomm HS-USB Android DIAG

Este paso es importante para poder que nuestro dispositivo sea reconocido como un puerto COM conectado al sistema, es posible que en el Paso 2 el dispositivo sea reconocido pero falte instalar el Driver Qualcomm HS-USB Android DIAG manualmente.

Para esto, debemos instalar el Driver Qualcomm HS-USB manualmente como se muestra en la siguiente imagen:

Driver Qualcomm HS-USB
Driver Qualcomm HS-USB


Paso 4: Cambiar IMEI con Qualcomm Snapdragon IMEI

Este paso es sencillo, ya que el programa Qualcomm Snapdragon IMEI nos facilita la tarea, su interfaz es muy sencilla, al lado izquierdo están las opciones donde mediante un check seleccionamos el IMEI que queremos cambiar, y en el lado derecho de la interfaz seleccionamos el IMEI que queremos leer.

Es recomendable primero leer los IMEI que tiene nuestro dispositivo y guardarlos en un lugar donde los podamos consultar en algún momento antes de aplicar el proceso de cambiar el IMEI por otro que queramos.

Qualcomm Snapdragon IMEI
Qualcomm Snapdragon IMEI


Paso Final: Reiniciar el Lenovo Zuk Z2

Si todos los pasos anteriores se realizaron con éxito para poder ver reflejado el cambio en nuestro dispositivo debemos reiniciar y luego ya podemos consultar nuestro nuevo IMEI marcando el famoso código *#06# y tendremos nuevamente conectado nuestro dispositivo a las redes celulares.


Finalmente dejo las referencias de los dos Blogs que me permitieron realizar todo este proceso y dejo los agradecimientos a Francisco que me compartió un blog donde explican el uso de la herramienta Qualcomm Snapdragon IMEI.