Vous pouvez déployer les serveurs Liberty comme membres d'une collectivité à l'aide des API REST DeployService.
Avant de commencer
Créez et
empaquetez un serveur
Liberty à déployer.
- Si vous ne disposez pas d'un serveur existant pour lequel créer un package, exécutez la commande create pour créer un nouveau serveur.
./server create member1
- Si vous disposez déjà d'un serveur existant pour lequel créer un package, vérifiez que ce serveur est bien arrêté.
- Exécutez la commande package pour créer le package serveur.
./server package member1
Cette
commande crée un package de serveur nommé, par exemple,
member1.zip.
Assurez-vous que l'hôte cible est configuré pour Remote Execution and Access (RXA). Voir Configuration de RXA pour les opérations de collectivité Liberty.
Veillez aussi à ce que l'hôte cible ait l'utilitaire cURL, un utilitaire
unzip et le support Java pour l'utilitaire
jar dans l'environnement (path) d'un utilisateur ayant des droits
de système d'exploitation sur l'emplacement de déploiement cible.
Cet utilisateur doit être le même que celui qui sera spécifié
pour --rpcUser (utilisateur RPC) lors
de l'enregistremenet de l'hôte à l'étape 3 ci-après.
Procédure
- Ajoutez une instruction collectiveController au fichier server.xml du contrôleur. Réglez
les attributs user et
password avec l'ID utilisateur et le mot de passe de l'administrateur du contrôleur. Par exemple, utilisez les valeurs contenues dans l'instruction
<quickStartSecurity userName="admin" userPassword="adminpwd" /> dans le fichier server.xml du contrôleur.
<collectiveController user="admin" password="adminpwd" />
- Examinez les règles de déploiement disponibles.
- Appelez une API REST renvoyant les règles de déploiement disponibles dans la structure JSON. Utiliser un outil capable d'appeler les API REST pour obtenir les règles de déploiement disponibles.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/rule
L'appel renvoie les règles de déploiement dans la structure JSON :
{
-"id": "Liberty Server Rule",
-"description": "Deploy rule for Liberty servers.",
-"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": "The target directory for the Liberty server package to be installed.",
-"displayName": "Target Directory"},
-{
-"name": "keystorePassword",
-"type": "password",
-"description": "Password for keystores of the deployed server",
-"displayName": "Keystore Password"},
-{
-"name": "serverPackage",
-"type": "file",
-"description": "Name of the Liberty server package to install.",
-"displayName": "Server Package File"},
-{
-"name": "serverPackageDir",
-"type": "filePath",
-"description": "Location of directory on the controller containing the server package to deploy.",
-"displayName": "Package directory"}],
-"name": "Liberty Server",
-"default": true,
-"runtimeTypes": [
-{
-"displayName": "Liberty"}],
-"packageType": "Server Package"}
- Si nécessaire, créez vos propres règles de déploiement en ajoutant DeployRules à votre configuration de contrôleur. Consultez Règle de déploiement (deployRule).
- Mettez le package du serveur à la disposition du contrôleur.
Effectuez l'une des actions suivantes :
- Enregistrez auprès du contrôleur de collectivité l'hôte sur lequel vous désirez installer un serveur
Liberty.
L'enregistrement d'un hôte permet au contrôleur de collectivité d'accéder aux
fichiers, aux commandes et aux autres ressources de cet hôte. Utilisez la commande registerHost pour enregistrer l'hôte cible.
Si un hôte est déjà enregistré, vous pouvez utiliser la commande updateHost
pour réinitialiser les informations d'enregistrement.
Important : Veillez à exécuter la commande collective registerHost ou collective updateHost
avec le nom d'utilisateur que vous utiliserez plus tard pour déployer le serveur membre. Par exemple, si vous exécutez la commande avec le nom d'utilisateur root
et déployer ensuite un membre avec un nom d'utilisateur différent, le déploiement
échouera, car DeployService n'aura pas les droits nécessaires pour placer un fichier dans
le répertoire /root/wlp.
collective registerHost targetHost --host=controllerHost --port=controllerHTTPSPort
--user=controllerAdmin --password=controllerAdminPassword --rpcUser=osUser --rpcUserPassword=osUserPassword --autoAcceptCertificates --hostWritePath=targetDir
- Les paramètres --host, --port, --user et
--password sont obligatoires. Pour trouver leurs valeurs, examinez le fichier
server.xml du contrôleur.
- Si l'hôte cible distant ne prend pas en charge SSH ou vous ne souhaitez pas utiliser de clés SSH
(cas d'un hôte cible sur système Linux ou Windows), les paramètres --rpcUser et --rpcUserPassword sont
obligatoires. Pour --rpcUser, spécifiez un identifiant de connexion du système d'exploitation et
pour --rpcUserPassword, spécifiez le motde passe
correspondant. L'utilisateur spécifié par --rpcUser doit disposer de droits de système d'exploitation
sur l'emplacement de déploiement cible.
- --autoAcceptCertificates est requis.
- --hostWritePath=directory est requis. La valeur
directory pour --hostWritePath doit être le
targetDir spécifié dans les règles de déploiement, ou un répertoire
parent du
targetDir sur l'hôte où vous voulez
installer un serveur Liberty. Vous pouvez spécifier plusieurs paramètres
--hostWritePath ; par exemple : --hostWritePath=/dir1
--hostWritePath=/dir2
Pour plus d'informations sur les commandes
registerHost et updateHost,
voir Enregistrement des ordinateurs hôte auprès d'une collectivité Liberty.
- Déployez le serveur Liberty.
Utiliser un outil capable d'appeler les API REST pour déployer le serveur Liberty. La règle de déploiement contient des variables qui peuvent spécifier les valeurs d'entrée
de l'appel, par exemple le serveur Liberty
à utiliser. Le corps du retour contient un jeton que vous pouvez utiliser pour les demandes d'état et de résultats.
POST https://controller_host:controller_port/ibm/api/collective/v1/deployment/deploy
{
"rule":"Liberty Server Rule",
"hosts":["target_host_name"],
"variables": [
{ "name":"serverPackage","value":"member.zip" },
{ "name":"targetDir","value":"%2Fhome%2Fszhou%2Fdeploy" },
{ "name":"keystorePassword","value":"password" },
{ "name":"serverPackageDir","value":"%2Fusr%2Ftest%2Fsource" }
]
}
Avertissement : Les variables targetDir et serverPackageDir
sont des chemins de répertoire encodés en
UTF-8. La variable serverPackageDir est l'emplacement du
fichier zip du package du serveur Liberty
sur le contrôleur de collectivité.
Utilisez le jeton de retour, par exemple {"id":3}, pour obtenir l'état et les résultats.
La sortie peut être obtenue au format JSON.
Que faire ensuite
Demande et révision de l'état et des résultats du déploiement.
- Obtenez une liste des jetons de déploiement pour les opérations de déploiement sollicitées.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/deploy
- Obtenez un état abrégé des opérations de déploiement. Utilisez le jeton de l'étape 6
pour {token}. Par conséquent, pour un jeton de retour
{"id":3} obtenu à l'étape 6, utilisez 3 pour {token}.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/{token}/status
Durant le déploiement, l'API renvoie
IN_PROGRESS:{"status":{"target_host":"IN_PROGRESS"}}
Après le déploiement, l'API renvoie FINISHED:{"status":{"target_host":"FINISHED"}}
Vous
pouvez également obtenir un état final de ERROR si le déploiement présente des problèmes. Utilisez les informations suivantes pour obtenir des résultats complets. Les
informations stdout et stderr qui sont renvoyées peuvent vous aider à diagnostiquer les problèmes.
- Obtenez les résultats complets d'une opération de déploiement. Utilisez le jeton de l'étape 6
pour {token}. Par conséquent, pour un jeton de retour
{"id":3} obtenu à l'étape 6, utilisez 3 pour {token}.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/{token}/results
Une fois le déploiement terminé, les
résultats contiennent des informations sur l'opération. L'exemple suivant affiche les résultats de FINISHED :{"results":[{"host_name":"target_host","status":"FINISHED","result":0,"stdout":"deployment_stdout", "stderr":"deployment_stderr", "deployedArtifactName":"serverName_from_inputVars", "deployedUserDir":"target_host_directory_for_deployed_server"}]}
Retirez le serveur
Liberty du
déploiement. Vous n'avez pas besoin de spécifier une règle de déploiement. La règle utilisée pour le déploiement a été enregistrée lors du déploiement. Vous
pouvez utiliser la règle pour l'annulation du déploiement. Le tuple serveur du nom d'hôte, du répertoire utilisateur et du nom de serveur est utilisé pour annuler le déploiement du serveur. Ce tuple
s'affiche sur les pages serveur de l'outil Explore de
Centre d'administration.
- Retirez le serveur Liberty du
déploiement.
POST https://controller_host:controller_port/ibm/api/collective/v1/deployment/undeploy
{
"host": "myHostName",
"userDir":"myUserDir",
"serverName":"myServerName"
}
- Obtenez la liste des jetons pour les opérations de retrait du déploiement.
GET https://controller_host:controller_port/ibm/api/collective/v1/deployment/undeploy
Pour
obtenir le statut et les résultats, les étapes à suivre sont similaires à celles des déploiements.