For LINUX platformsFor Windows platforms[16.0.0.3 and later]

Despliegue de servidores Liberty utilizando API REST de despliegue

Puede desplegar servidores Liberty como miembros de un colectivo utilizando las API REST DeployService.

Antes de empezar

Cree y empaquete un servidor Liberty para desplegar.
  1. Si no dispone de ningún servidor existente para empaquetarlo, ejecute el mandato create para crear un servidor nuevo.
    ./server create member1
  2. Si dispone de un servidor existente para empaquetarlo, asegúrese de que el servidor que desea empaquetar se haya detenido.
  3. Ejecute el mandato package para crear el paquete de servidor.
    ./server package member1

    El mandato crea un paquete de servidor denominado, por ejemplo, member1.zip.

Asegúrese de que el host de destino está configurado para Remote Execution Agent (RXA). Consulte Configuración de RXA para operaciones de colectivo de Liberty.

Asimismo, asegúrese de que el host de destino tenga el programa de utilidad cURL, un programa de utilidad unzip y soporte Java para el programa de utilidad jar en el entorno (vía de acceso) de un usuario con derechos de sistema operativo a la ubicación de despliegue de destino. Este usuario debe ser el mismo usuario especificado para --rpcUser, un usuario de llamada a procedimiento remoto (RPC), durante el registro del host. Puede registrar un host en el paso 3.

Procedimiento

  1. Añada una declaración collectiveController al archivo server.xml del controlador. Establezca los valores de user y password en el ID y contraseña de usuario administrativo del controlador. Por ejemplo, utilice los valores que están en la sentencia <quickStartSecurity userName="admin" userPassword="adminpwd" /> en el archivo server.xml del controlador.
    <collectiveController user="admin" password="adminpwd" />
  2. Revise las reglas de despliegue disponibles.
    1. Invoque una API REST que devuelva las reglas de despliegue disponibles en la estructura JSON. Utilice una herramienta que pueda invocar las API REST para obtener las reglas de despliegue disponibles.
      GET
      https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/rule 

      La invocación devuelve las reglas de despliegue en la estructura JSON:

      {
      -"id": "Liberty Server Rule",
      -"description": "Regla de despliegue para servidores Liberty.",
      -"type": "Liberty",
      -"deployCommands": "curl -X GET https://${wlp.admin.host}:${wlp.admin.port}/IBMJMXConnectorREST/file/${serverPackageDir}%2F${serverPackage} --user ${wlp.admin.user}:${wlp.admin.password} -k --create-dirs -o ${targetDir}/${serverPackage}.tmp --verbose && unzip ${targetDir}/${serverPackage}.tmp -d ${targetDir}/${serverPackage} && ${targetDir}/${serverPackage}/${binDir}/collective join ${serverName} --host=${wlp.admin.host} --port=${wlp.admin.port} --user=${wlp.admin.user} --password=${wlp.admin.password} --keystorePassword=${keystorePassword} --hostName=${wlp.deploy.host} --useHostCredentials --createConfigFile=${targetDir}/${serverPackage}/wlp/usr/servers/${serverName}/configDropins/defaults/additionalConfig.xml --autoAcceptCertificates",
      -"undeployCommands": "${targetDir}/${serverPackage}/${binDir}/server stop ${serverName}; ${targetDir}/${serverPackage}/${binDir}/collective remove ${serverName} --host=${wlp.admin.host} --port=${wlp.admin.port} --user=${wlp.admin.user} --password=${wlp.admin.password} --autoAcceptCertificates --hostName=${wlp.deploy.host}",
      -"startCommands": "${targetDir}/${serverPackage}/${binDir}/server start ${serverName}",
      -"stopCommands": "${targetDir}/${serverPackage}/${binDir}/server stop ${serverName}",
      -"restartCommands": "${targetDir}/${serverPackage}/${binDir}/server stop ${serverName} && ${targetDir}/${serverPackage}/${binDir}/server start ${serverName}",
      -"inputVariables": [
      -{
      -"name": "targetDir",
      -"type": "filePath",
      -"description": "El directorio de destino del paquete de servidor Liberty que se instalará.",
      -"displayName": "Directorio de destino"},
      -{
      -"name": "keystorePassword",
      -"type": "password",
      -"description": "Contraseña de los almacenes de claves del servidor desplegado",
      -"displayName": "Contraseña del almacén de claves"},
      -{
      -"name": "serverPackage",
      -"type": "file",
      -"description": "Nombre del paquete de servidor Liberty que se instalará.",
      -"displayName": "Archivo del paquete de servidor"},
      -{
      -"name": "serverPackageDir",
      -"type": "filePath",
      -"description": "Ubicación del directorio en el controlador que contiene el paquete de servidor que se desplegará.",
      -"displayName": "Directorio del paquete"}],
      -"name": "Servidor Liberty",
      -"default": true,
      -"runtimeTypes": [
      -{
      -"displayName": "Liberty"}],
      -"packageType": "Paquete de servidor"}
    2. Si es necesario, cree sus propias reglas de despliegue añadiendo DeployRules a la configuración de controlador. Consulte Regla de despliegue (deployRule).
    3. Haga que el paquete de servidor esté disponible para el controlador.

      Complete una de las dos acciones siguientes:

      • Coloque el paquete de servidor en uno de los directorios readDir predeterminados, que incluyen ${wlp.install.dir}, ${wlp.user.dir} y ${server.output.dir}, o en un subdirectorio del directorio readDir predeterminado.
      • Añada al archivo server.xml del controlador una sentencia remoteFileAccess que apunte a la ubicación del paquete de servidor. La primera sentencia readDir proporciona la ubicación del paquete de servidor. Este directorio es la variable de entrada serverPackageDir que se especifica para el despliegue de deployService en el paso 4. El directorio serverPackageDir está en el host del controlador. Las siguientes tres sentencias readDir vuelven a habilitar los directorios readDir predeterminados; por ejemplo:
        <remoteFileAccess>
           <readDir>/tmp/serverPackageDir</readDir>
           <!-- Se requieren las sentencias siguientes para volver a habilitar los directorios readDir predeterminados. -->
           <readDir>${wlp.install.dir</readDir>
           <readDir>${wlp.user.dir}</readDir>
           <readDir>${server.output.dir}</readDir>
        </remoteFileAccess>
  3. Registre el host en el que desea instalar un servidor Liberty con el controlador colectivo.

    El registro de un host permite al controlador colectivo acceder a archivos, mandatos y otros recursos en el host. Utilice el mandato registerHost para registrar el host de destino. Si un host ya está registrado, puede utilizar el mandato updateHost para restablecer la información de registro.

    Importante: Asegúrese de que ejecuta el mandato registerHost o updateHost de colectivo con el usuario que utilizará posteriormente para desplegar el servidor miembro. Por ejemplo, si ejecuta el mandato como el usuario root y a continuación despliega después un miembro con otro usuario, el despliegue falla porque DeployService no tiene los derechos para colocar un archivo en el directorio /root/wlp.
    collective registerHost host_destino --host=host_controlador --port=puerto_HTTPS_controlador 
    --user=admin_controlador --password=contraseña_admin_controlador --rpcUser=usuario_so --rpcUserPassword=osUserPassword --autoAcceptCertificates --hostWritePath=dir_destino
    • Se requiere --host, --port, --user y --password. Para buscar los valores para estos parámetros, compruebe el archivo server.xml del controlador.
    • Si el host de destino remoto no da soporte a SSH o no desea utilizar claves SSH, por ejemplo, para hosts de destino en los sistemas operativos Linux o Windows, se requiere --rpcUser y --rpcUserPassword. Establezca --rpcUser en un usuario de inicio de sesión del sistema operativo y establezca --rpcUserPassword en la contraseña. El usuario especificado por --rpcUser debe tener derechos de sistema operativo sobre la ubicación de despliegue de destino.
    • Se requiere --autoAcceptCertificates.
    • Se requiere --hostWritePath=directorio. El valor de directory para --hostWritePath debe ser el dir_destino especificado en las reglas de despliegue, o un directorio padre del dir_destino del host en el que desea instalar un servidor Liberty. Puede especificar más de un parámetro --hostWritePath; por ejemplo: --hostWritePath=/dir1 --hostWritePath=/dir2

    Para obtener más información sobre los mandatos registerHost y updateHost, consulte Registro de sistemas principales con un colectivo de Liberty.

  4. Despliegue el servidor Liberty.

    Utilice una herramienta que pueda invocar las API REST para desplegar el servidor Liberty. La regla de despliegue contiene variables que pueden especificar valores de entrada para la invocación, por ejemplo, el servidor Liberty que se utilizará. El cuerpo de retorno contiene una señal que puede utilizar para solicitar el estado y los resultados.

    POST
    https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/deploy
    
    {
       "rule":"Regla de servidor Liberty",
       "hosts":["nombre_host_destino"],
       "variables": [
          { "name":"serverPackage","value":"member.zip" },
          { "name":"targetDir","value":"%2Fhome%2Fszhou%2Fdeploy" },
          { "name":"keystorePassword","value":"contraseña" },
          { "name":"serverPackageDir","value":"%2Fusr%2Ftest%2Fsource" }
       ]
    }
    Atención: Las variables targetDir y serverPackageDir son vías de acceso de directorio codificadas en UTF-8. La variable serverPackageDir es la ubicación del archivo ZIP del paquete de servidor Liberty en el controlador colectivo.

    Utilice la señal de retorno, que podría parecerse a {"id":3}, para obtener el estado y los resultados. Puede obtener el resultado en formato JSON.

Qué hacer a continuación

Solicite y revise el estado y los resultados del despliegue.

  • Obtenga una lista de señales de despliegue para operaciones de despliegue solicitadas.
    GET
    https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/deploy
  • Obtenga un estado abreviado de las operaciones de despliegue. Utilice la señal del paso 6 para {token}. De esta forma, para una señal de retorno {"id":3} del paso 6, utilice 3 para {token}.
    GET
    https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/{token}/status 
    Durante el despliegue, la API devuelve IN_PROGRESS:
    {"status":{"host_destino":"IN_PROGRESS"}}
    Tras el despliegue, la API devuelve FINISHED:
    {"status":{"host_destino":"FINISHED"}}

    También puede obtener un estado final de ERROR si el despliegue tiene problemas. Utilice la información siguiente para obtener información para obtener los resultados completos. La información de stdout y stderr que se devuelve puede ayudarle a diagnosticar problemas.

  • Obtenga los resultados completos de una operación de despliegue. Utilice la señal del paso 6 para {token}. De esta forma, para una señal de retorno {"id":3} del paso 6, utilice 3 para {token}.
    GET
    https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/{token}/results
    Una vez completado el despliegue, los resultados contienen información sobre la operación. El ejemplo siguiente muestra resultados para FINISHED:
    {"results":[{"nombre_host":"host_destino","status":"FINISHED","result":0,"stdout":"salida_estándar_despliegue",
    "stderr":"err_estándar_despliegue",
    "deployedArtifactName":"nombre_servidor_de_vars_entrada",
    "deployedUserDir":"directorio_host_destino_para_servidor_desplegado"}]}
Anule el despliegue en el servidor Liberty. No tendrá que especificar una regla de despliegue. La regla utilizada para el despliegue se ha almacenado durante el despliegue. Puede utilizar la regla para la anulación del despliegue. Se utiliza la tupla de nombre de host, directorio de usuario y nombre de servidor para anular el despliegue del servidor. Esta tupla se muestra en las páginas de servidor en la herramienta Explorar de Centro de administración.
  • Anule el despliegue de un servidor Liberty.
    POST
    https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/undeploy
    {     
       "host": "myHostName",
       "userDir":"myUserDir",     
       "serverName":"myServerName"
    }
  • Obtenga una lista de señales para operaciones de anulación de despliegue.
    GET
    https://host_controlador:puerto_controlador/ibm/api/collective/v1/deployment/undeploy
    Para obtener el estado y los resultados, siga pasos similares a despliegues.

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_deployservice_liberty.html