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.
- Si no dispone de ningún servidor existente para empaquetarlo, ejecute el mandato create para crear un servidor nuevo.
./server create member1
- Si dispone de un servidor existente para empaquetarlo, asegúrese de que el servidor que desea empaquetar se haya detenido.
- 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
- 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" />
- Revise las reglas de despliegue disponibles.
- 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"}
- Si es necesario, cree sus propias reglas de despliegue añadiendo
DeployRules a la configuración de controlador. Consulte Regla de despliegue (deployRule).
- Haga que el paquete de servidor esté disponible para el controlador.
Complete una de las dos acciones siguientes:
- 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.
- 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.