For LINUX platformsFor Windows platforms[16.0.0.3 and later]

Déploiement des serveurs Liberty à l'aide des API REST de déploiement

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.
  1. 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
  2. Si vous disposez déjà d'un serveur existant pour lequel créer un package, vérifiez que ce serveur est bien arrêté.
  3. 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

  1. 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" />
  2. Examinez les règles de déploiement disponibles.
    1. 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"}
    2. 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).
    3. Mettez le package du serveur à la disposition du contrôleur.

      Effectuez l'une des actions suivantes :

      • Placez le package du serveur dans l'un des répertoires readDir par défaut (${wlp.install.dir}, ${wlp.user.dir} ou ${server.output.dir}) ou dans l'un de leurs sous-répertoires.
      • Ajoutez au fichier server.xml du contrôleur une instruction remoteFileAccess pointant vers l'endroit où vous avez placé le package du serveur. La première instruction readDir fournit cet emplacement. Ce répertoire est la variable d'entrée serverPackageDir qui est spécifiée pour le déploiement deployService à l'étape 4. Le répertoire serverPackageDir se trouve sur le contrôleur. Les trois instructions readDir suivantes réactivent les répertoires readDir par défaut ; par exemple :
        <remoteFileAccess>
           <readDir>/tmp/serverPackageDir</readDir>
           <!-- The following statements are required to re-enable the default readDir directories. -->
           <readDir>${wlp.install.dir</readDir>
           <readDir>${wlp.user.dir}</readDir>
           <readDir>${server.output.dir}</readDir>
        </remoteFileAccess>
  3. 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.

  4. 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.

Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_deployservice_liberty.html