En esta ocasión, voy a empezar a aprender sobre z/OS Container Extensions. Esto permite ejecutar aplicaciones Linux en z/OS (arquitectura s390x). Es una instancia de un sistema Linux configurado para ejecutar Docker. En z/OS lo veremos como una STC más, pero podremos instalar aplicaciones Docker a través de SSH.
Como es de las primeras veces que voy a probar esto, posiblemente, alguien con más conocimientos lo haría mejor, pero lo importante es aprender para ir haciéndolo mejor.
Además, es una buena forma de aprender a trabajar con Docker “sin salir” del mundo z/OS.
El proceso para crear y borrar una instancia de zCX se hace mediante Workflows de z/OSMF. Es un proceso bastante automático que, si lo hacemos bien desde el principio, no tendremos que intervenir. Debemos tener en cuenta el espacio necesario (según lo que vayamos a instalar en la instancia, pueden ser necesario 40GB o más), los recursos que asignaremos a esta instancia (CPU, memoria) y también hay que asignar una IP virtual a esta instancia (DVIPA para zCX).
Primero explicaré las acciones previas que realicé en el sistema.
En el fichero de configuración del emulador, definí 3 procesadores zIIP. Estos procesadores son gratuitos con la licencia.
Cuando arranquemos el sistema, veremos el mensaje “FREE-ZIIP”.
En el caso de mi sistema, también ajusté un poco las rutinas ACS (de forma simple) para la asignación las clases SMS correspondientes. Esto ya depende de cada sistema. Yo dejo los cambios que hecho por si yo mismo lo necesito cuando actualice el sistema a una nueva versión de ADCD.
La DATACLAS “CXDC” está definida con el tipo de data set “Extended”.
Ahora voy a mostrar la configuración de comunicaciones. Evidentemente, cada uno tendrá que ajustarla a su instalación. Esta configuración es válida para ZDT.
La IP que tendrá la instancia ZCX será 10.1.3.10.
También dejo cómo tengo definido el perfil de TCPIP.
Además, en mi router añadí una regla para poder conectar al sistema ZCX desde otro ordenador de mi red. La puerta de enlace es la IP que tiene el sistema Ubuntu en el que está instalado el emulador.
También en sistema en el que tengo instalado del emulador puse una ruta para llegar a las IPs 10.1.3.* usando el adaptador tap0 (que crea el emulador).
sudo ip route add 10.1.3.0/24 dev tap0
Estos son los pasos previos de configuración que hice. También añadí los discos correspondientes para tener el espacio necesario para crear la instancia.
Vamos a empezar a crear la instancia. Para ello, vamos a z/OSMF.
En Workflows, vamos al menú “Actions” y elegimos “Create Workflow…”
Elegimos el sistema y como fichero de Workflow y fichero de variables usaremos los siguientes:
/usr/lpp/zcx_zos/workflows/provision.xml
/usr/lpp/zcx_zos/properties/workflow_variables.properties
Para el fichero “workflow_variables.properties”, yo lo copiaré a otra ruta y utilizaré ese porque puede ser que en el otro fichero no nos deje modificar algunas variables:
/var/zcx_zos/workflow_variables.properties
En mi caso, me asigno todas las tareas a mi usuario, ya que yo haré todas. Pinchamos en Finish.
Entramos en la primera tarea.
Tenemos que ir rellenando los datos según lo que hayamos planificado. Pondré los que yo usaré.
En mi caso, usaré 8GB de memoria porque así lo requiere una aplicación que instalaré en entradas posteriores. Cada uno que lo ajuste según sus necesidades.
La IP que usaré es la que definí en pasos anteriores (10.1.3.10).
Voy a poner 8GB de espacio para el “ROOT” porque así lo requiere una aplicación que instalaré en entradas posteriores.
Indicaré la STORCLAS CXROOTSC
Aquí indicaré 40GB por requerimiento del software que instalaré más adelante.
En los siguientes parámetros necesitaremos indicar una “key” pública para acceder por SSH al sistema. Podemos generar una nueva en el sistema cliente con el comando:
ssh-keygen -t rsa -b 4096 -C "Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.“
Podemos descargar el fichero para facilitar la copia de la clave:
ftp 192.168.1.12
cd /u/ibmuser/.ssh/
get id_rsa.pub
Vamos a la siguiente parte de las variables.
Por último, salvamos y finalizamos.
Ya tenemos todos los parámetros definidos. En teoría, el resto de los pasos deberían ser automáticos, si no fallan.
Seleccionamos el segundo paso y vamos al menú Actions.
Elegimos la opción Perform.
Marcamos las siguientes opciones para que ejecute todos los pasos de forma automática y que use el fichero de variables de entrada.
Todo terminará correctamente. Tendremos que entrar en el último paso para ver el comando de arranque de la instancia.
Con el siguiente comando arrancaremos la instancia:
S GLZ,JOBNAME=ZCX001,CONF='/global/zcx/instances/ZCX001/start.json'
Pulsaremos en Finish.
Daremos el comando en SDSF o consola.
Empezará a arrancar, a formatear los ficheros, a hacer IPL de la instancia…
Cuando arranque la instancia, podremos conectar.
Vamos a OMVS (TSO OMVS) y pondremos el comando:
ssh Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. -p 8022
Ya hemos accedido. Ahora daré un comando para comprobar que funciona, por ejemplo, “docker ps” para ver lo que hay en ejecución.
Veremos que está en ejecución el proceso de ssh. Salimos con exit.
Hay que tener en cuenta que, durante el proceso de crear la instancia, se montó mediante el Workflow un ZFS. Debemos tenerlo en cuenta para añadirlo en la PARMLIB y que se monte después de los IPLs.
Ahora voy a mostrar cómo borraríamos la instancia.
Empezamos entrando de z/OSMF y entramos en la opción “Workflows”.
Desplegamos el menú “Actions” y elegimos “Create Workflow”.
Tendremos que elegir el sistema sobre el que aplicaremos el Workflow y elegir el workflow a aplicar.
Los workflows de zCX, por defecto, están en la ruta “/usr/lpp/zcx_zos/workflows/”. En este caso, usaré:
/usr/lpp/zcx_zos/workflows/deprovision.xml
En este caso, no es necesario indicar un fichero de variables de entrada (Workflow variable input file).
En mi caso, marco “Assign all steps to owner user ID” para no tener que asignármelos luego. Pulsamos “Finish”.
Veremos todos los pasos que tiene el workflow. Debemos entrar en el primero.
Vamos a la pestaña “Perform”.
Indicamos el nombre de la instancia y la ruta donde creamos las instancias. En mi caso:
ZCX001
/global/zcx/instances
Pulsamos en Save.
Pulsamos Finish.
El segundo paso es para parar la instancia, si ya está parada, lo podemos dar por completo. Entraré para mostrarlo.
En SDSF o consola, daríamos el comando de parada, en mi caso:
P ZCX001
Una vez parada, pulsamos en Finish.
Ahora vamos a ejecutar los pasos restantes de forma automática. Seleccionamos el checkbox del paso 3. Vamos al menú “Actions”.
Elegimos “Perform”.
En este caso, debemos elegir “Always keeps existing values” y pulsamos OK. Se empezarán a ejecutar todos los pasos restantes.
En mi caso, ya se ejecutó todo directamente. Todos los jobs terminaron bien y no tuve que hacer nada más.
Además, si miro en TSO, aparecerán los mensajes indicando que los jobs han ido bien.
En menos de 1 minuto se ha hecho todo.
Espero que os haya gustado esta entrada para crear y borrar una instancia zCX. En próximas entradas, veremos cómo utilizar Docker en zCX y arrancar productos.