• EMUFRAME

    EMUFRAME

    Desde 2015, enseñando sobre el sistema operativo z/OS de IBM en esta web.

    z/OS se utiliza en máquinas llamadas Mainframe y es utilizado por grandes empresas (bancos, aseguradoras, hoteles, etc.).

    Aquí aprenderás a instalar y configurar productos relacionados con z/OS.

     

  • Emulación de Mainframe y z/OS

    Emulación de Mainframe y z/OS

    Para realizar el contenido, utilizo el producto de IBM llamado z/Development and Test Environtment Personal Edition.

    Este software permite emular un Mainframe y así poder utilizar z/OS para aprender.

     

  • z/OS - ADCD

    z/OS - ADCD

    ADCD es una distribución de z/OS que contiene productos de IBM como IMS, DB2, CICS, ZOWE, TWS, NetView, System Automation, etc.

    Así tenemos un entorno de desarrollo o de aprendizaje, como es mi caso, muy completo.

     

Model9 - Instalación del servidor en zCX

Model9 - Instalación del servidor en zCX

Lo primero agradecer a Model9 que me permita probar este software, con una licencia temporal, en mi entorno ZDT para poder escribir sobre el producto.  

Model9 es un software que permite transferir datos que tengamos en Mainframe (por ejemplo, ficheros migrados o backups que estén en cintas) a la nube (AWS, Google Cloud, IBM Cloud…). Podéis conocer más sobre Model9 en su web: https://model9.io/

En el momento que escribo esto dispongo de dos versiones: la v2.3.5 y v2.4.0 (que salió hace unos días). Al principio sólo tenía la v2.3.5 y sólo podía hacer una instalación, pero ahora mi idea es instalar la v2.3.5 y, en una entrada posterior, actualizar a la v2.4.0.

La documentación que seguiré se encuentra en: https://docs.model9.io/

Dispongo de los siguientes ficheros:

Agente de z/OS

model9-v2.3.5_build_eee8cba0-agent.tar

Imagen Docker para arquitectura s390x (Linux en Mainframe o zCX en z/OS)

model9-v2.3.5_build_eee8cba0-server-s390x.zip

Imagen Docker para el resto de sistemas

model9-v2.3.5_build_eee8cba0-server.zip

Scripts de comprobación de los prerrequisitos

VerificationScripts.zip

001 watermark

 

Antes de empezar, podemos ver si nuestra instancia cumple con los requerimientos mínimos de espacio. En mi caso, ya preparé esta instancia en una entrada anterior.

Comando:

MODIFY ZCX001,DISPLAY,DISK

002 watermark

 

Ahora voy a conectar a mi instancia zCX desde OMVS:

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

Voy a aprovechar para enseñar a crear un usuario y así poder conectar desde otro equipo.

Con los siguientes comandos crearé el usuario “javzcx” y lo añadiré a los grupos “docker” y “sudo”.

sudo adduser --ingroup docker javzcx

sudo adduser javzcx sudo

003 watermark

 

Podremos acceder con el nuevo usuario desde otro pc:

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

004 watermark

 

Siguiendo el manual, tendremos que crear dos volúmenes para el servidor y la base de datos:

docker volume create model9

docker volume create model9db

Podemos verlos con:

docker volume ls

005 watermark

 

Ahora hay que cargar una imagen de Linux Alpine. En el caso de no poder acceder a internet desde zCX, podemos descargarlo desde otro sistema, empaquetarlo en “tar” y enviarlo.

Comandos:

docker pull s390x/alpine

docker save s390x/apine > alpine.tar

006 watermark

 

Ahora tenemos que transferir el fichero “alpine.tar” a la instancia zCX. En mi caso, usando el siguiente método la velocidad de transferencia es lenta, pero, como este fichero es pequeño, lo haré de esta manera.

sftp -P 8022 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

put alpine.tar /tmp

Si las transferencias de ficheros por “sftp” va lenta (unos 50-100KB), hay que comprobar que hayamos incluido la ruta en Ubuntu.

007 watermark

008 watermark

 

Ahora tenemos que cargar la imagen:

docker load --input /tmp/alpine.tar

Podemos ver las imágenes cargadas con:

docker image ls

009 watermark

 

Ejecutamos la imagen:

docker run -d --rm --name dummy -v model9:/root s390x/alpine \

tail -f /dev/null

Con el siguiente comando podemos ver los procesos que se ejecutan:

docker ps

010 watermark

 

Volvemos a conectarnos por sftp para subir el archivo “model9-v2.3.5_build_eee8cba0-server-s390x.zip”

sftp -P 8022 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

put model9-v2.3.5_build_eee8cba0-server-s390x.zip /tmp

011 watermark

 

Desde el terminal SSH, copiamos el fichero al contenedor “alpine”.

cd /tmp

docker cp model9-v2.3.5_build_eee8cba0-server-s390x.zip dummy:/root/model9-2.3.5_build_eee8cba0-server-s390x.zip

012 watermark

 

Ejecutaremos los siguientes comandos para acceder al contenedor “Alpine” y descomprimir el archivo. Hay que tener cuidado porque en la documentación el nombre del archivo en el comando “unzip” es incorrecto:

docker exec -it dummy sh

cd /root

unzip /root/model9-2.3.5_build_eee8cba0-server-s390x.zip

Pulsamos Control+D para salir del contenedor.

013 watermark

 

Ahora copiamos los siguientes paquetes a la instancia zCX. Recordamos que estos paquetes han sido extraídos en el paso anterior pero dentro del contendor “Alpine”.

docker cp dummy:/root/model9-v2.3.5_build_eee8cba0-s390x.docker ./

docker cp dummy:/root/postgres-s390x-12.3.docker.gz ./

014 watermark

 

Ahora cargamos las dos imágenes.

docker load -i model9-v2.3.5_build_eee8cba0-s390x.docker

docker load -i postgres-s390x-12.3.docker.gz

015 watermark

 

Ahora arrancaremos la base de datos:

docker run -p 127.0.0.1:5432:5432 \

-v model9db:/var/lib/postgresql/data:z \

--name model9db --restart unless-stopped \

-e POSTGRES_PASSWORD=model9 -e POSTGRES_DB=model9 -d s390x/postgres

Comprobaremos que está en ejecución con el comando “docker ps”.

016 watermark

 

También podemos comprobar el estado con el comando:

docker logs model9db

017 watermark

 

Ahora hay que adaptar el fichero de configuración del servidor. Usaremos los siguientes comandos:

docker exec -it dummy sh

cd /root

vi conf/model9-local.yml

Tenemos que actualizar la licencia, los datos del agente (IP y puerto) e indicar los datos para conectar con el almacenamiento (Azure, en mi caso).

Al final de la entrada explico los pasos que seguí para crear el almacenamiento.

En mi caso, el puerto del agente será el 9999 y la IP es la de mi z/OS.

Para utilizar el editor “vi”, pulsaremos la letra “i” para entrar en modo inserción y pegaremos la clave en el campo correspondiente. Después pulsaremos la tecla “ESC” para volver al modo comando y escribiremos “:wq” para guardar y salir.

Parámetros necesarios para Azure:

model9.objstore.endpoint.api.id: azureblob-oauth2

model9.objstore.jclouds-config.jclouds.oauth.audience: https://storage.azure.com/

model9.objstore.jclouds-config.jclouds.oauth.credential-type: clientCredentialsSecret

model9.objstore.endpoint.url: https://testmodel9.blob.core.windows.net

model9.objstore.resources.container.name: testmodel-container

model9.objstore.jclouds-config.jclouds.azureblob-oauth2.storageaccount: testmodel9

model9.objstore.jclouds-config.oauth.endpoint: https://login.microsoftonline.com/tenan-id/oauth2/token

model9.objstore.endpoint.userid: application_id (client_id)

model9.objstore.endpoint.password: application_secret (client_secret)

018 watermark

 

Cuando hayamos terminado, salimos del contenedor pulsando “Control+D”.

Ejecutamos el siguiente comando para arrancar el servidor. Es diferente al mostrado en la documentación porque yo no he configurado “MinIO”. También he puesto los puerto 8443 y 8080 para que escuche la aplicación.

docker run -d -p 0.0.0.0:8443:443 -p 0.0.0.0:8080:80 \

-v model9:/model9:z -h EMUFRAMEzCX --restart unless-stopped \

-e "TZ=Europe/Madrid" \

-e "CATALINA_OPTS=-Xmx2048m -Djdk.nativeCBC=false -Xjit:maxOnsiteCacheSlotForInstanceOf=0" \

--link model9db:model9db \

--name model9-v2.3.5 model9:v2.3.5.eee8cba0

019 watermark

 

Podemos ver el arranque con el comando:

docker logs model9-v2.3.5

Veremos los mensajes indicando que se ha conectado correctamente al almacenamiento y el tiempo que ha tardado en arrancar.

Este tiempo es elevado en ZDT porque el rendimiento de java en este sistema emulado es bastante malo (no es culpa de Model9). En un entorno real, esto debería funcionar correctamente. De hecho, probando el arranque del servidor en Docker en un sistema Windows, el arranque tardó menos de un minuto.

020 watermark

 

Podremos acceder a la web usando la IP del sistema zCX y el puerto 8443. En mi caso:

https://10.1.3.10:8443/login/show

Si no hemos arrancado el agente en z/OS, no podremos logarnos porque la seguridad se controla mediante el producto que usemos en z/OS (RACF, por ejemplo).

021 watermark

 

Ahora voy a enseñar los pasos que seguí en Azure para poder configurar el almacenamiento.

Yo seguí los siguientes pasos:

https://docs.model9.io/cloud-and-storage-integration/microsoft-azure-configuration

Primero creé una cuenta de almacenamiento.

022 watermark

 

Elegí las opciones más básicas porque no necesito más.

023 watermark

 

Entré en la cuenta de almacenamiento y fui al apartado Contenedores y creé uno.

024 watermark

 

Entramos en Propiedades del contenedor para conocer la URL del almacenamiento, ya que la necesitaremos.

025 watermark026 watermark

 

Después registré la aplicación necesaria para poder acceder al contenedor.

027 watermark

 

Creé una aplicación nueva con las siguientes opciones.

028 watermark

 

Entramos en la aplicación y apuntamos el id de aplicación (client id) y el id de directorio (tenant id).

029 watermark

 

Vamos a Certificados y secretos para generar la clave de acceso.

Generamos una nueva clave y la apuntaremos para usarla.

030 watermark

 

Ahora tenemos que asociar la aplicación con la cuenta de almacenamiento.

Volvemos a la cuenta de almacenamiento y entramos en Control de acceso (IAM).

031 watermark

 

Hay que elegir lo siguiente:

Role - “Storage Blob Data Contributor”

Assign access to - “User, Group, or service principal”

Select - The Model9 registered application you created in the previous step

032 watermark

 

En Seleccionar miembros, buscamos la aplicación creada y la incluimos.

033 watermark

 

Por último, revisamos y asignamos.

034 watermark

 

Comprobamos que se ha añadido correctamente.

035 watermark

 

 

Espero que os haya gustado esta primera parte de Model9.

 

 

 

Publish modules to the "offcanvs" position.