7
votes

Remplacez le déploiement sur Wildfly via HTTP API

Nous souhaitons remplacer un déploiement existant de notre application avec CURL. Le poste ci-dessous donne une bonne façon de déployer un fichier de guerre. Cela fonctionne bien tant qu'il n'y a pas de fichier de guerre déployé avec le même nom. Il échoue, cependant, s'il existe déjà un déploiement présent. Y a-t-il un moyen de remplacer le déploiement existant via CURL?

http: // blog .Arungupta.me / 2014/01 / Déployez-en-wildfly-utilisant-Curl-Tech-Tip-10 /

existe-t-il un moyen d'obtenir la documentation d'interface complète de l'API HTTP de WILDFLY


0 commentaires

3 Réponses :


3
votes

Regardez la documentation de modèle de gestion entier à

http://wildscribe.github.io/

Il n'y a pas d'opération directe qui remplacerait le déploiement.

Voir Attribut possible / Opérations pour la ressource de déploiement

Alors, ce que vous pouviez faire est de supprimer le déploiement s'il y en a une nouvelle. Ou vous pouvez ajouter de nouveaux déploiements sous le nouveau nom, désactivez l'ancien et en activer le nouveau.

Il y a beaucoup d'options que vous pourriez faire. Pour commencer, je vous recommanderais de jeter un coup d'oeil à jboss-cli En vous connectant simplement à l'instance par défaut sur le serveur en commençant jboss-cli.sh | bat -c dans dossier bin.

En navigant sur CLI, vous trouverez également un ensemble complet d'attributs / opérations / ressources que vous pouvez manipuler

Certains documents sur ce sujet

https://docs.jboss.org/author/display/wfly8/ CLI + Recettes

https://docs.jboss.org/author/display/ WFLY8 / Gestion + API + Référence


1 commentaires

Bonne documentation de référence (: Thumbsup: Merci) mais aucun exemple concret d'utilisation.



15
votes

Nous avons écrit un petit script shell pour y parvenir:

#!/bin/bash
echo "Undeploy old war"
curl -S -H "content-Type: application/json" -d '{"operation":"undeploy", "address":[{"deployment":"old.war"}]}' --digest http://user:password@hostname:9990/management
echo ""

echo "Remove old war"
curl -S -H "content-Type: application/json" -d '{"operation":"remove", "address":[{"deployment":"old.war"}]}' --digest http://user:password@hostname:9990/management
echo ""

echo "Upload new war"
bytes_value=`curl -F "file=@/path/to/new.war" --digest http://user:password@$hostname:9990/management/add-content | perl -pe 's/^.*"BYTES_VALUE"\s*:\s*"(.*)".*$/$1/'`
echo $bytes_value

json_string_start='{"content":[{"hash": {"BYTES_VALUE" : "'
json_string_end='"}}], "address": [{"deployment":"new.war"}], "operation":"add", "enabled":"true"}'
json_string="$json_string_start$bytes_value$json_string_end"

echo "Deploy new war"
result=`curl -S -H "Content-Type: application/json" -d "$json_string" --digest http://user:password@hostname:9990/management | perl -pe 's/^.*"outcome"\s*:\s*"(.*)".*$/$1/'`
echo $result

if [ "$result" != "success" ]; then
  exit -1
fi


1 commentaires

Pensez-vous que l'utilisation de ce script serait plus rapide que d'utiliser .CLI? Pensez-vous qu'il est préférable de redémarrer le serveur sauvage avant chaque déploiier pour vous assurer que le redéployeur se produit correctement?



5
votes

Merci beaucoup à @nioe pour le script! Voici une version configurable avec le silence CURL code> mieux adapté aux scripts CI:

#!/bin/bash

# Deploys given WAR to WildFly server, pass full path to WAR as argument

set -e
set -u

[[ -f "$1" ]] || { >&2 echo "Usage: $0 WAR-filename ('$1' is not a file)"; exit 1; }

WILDFLY_MANAGEMENT_URL=http://username:password@hostname:9990
WAR_NAME=`basename $1`
WAR_PATH=`dirname $1`

echo "Deploying '$WAR_NAME' from '$WAR_PATH' to '$WILDFLY_MANAGEMENT_URL'"
echo '-------------------'

echo "-> Undeploy old war"
curl -sS -H "content-Type: application/json" -d '{"operation":"undeploy", "address":[{"deployment":"'"${WAR_NAME}"'"}]}' --digest ${WILDFLY_MANAGEMENT_URL}/management
echo ""

echo "-> Remove old war"
curl -sS -H "content-Type: application/json" -d '{"operation":"remove", "address":[{"deployment":"'"${WAR_NAME}"'"}]}' --digest ${WILDFLY_MANAGEMENT_URL}/management
echo ""

echo "-> Upload new war"
bytes_value=`curl -sF "file=@${WAR_PATH}/${WAR_NAME}" --digest ${WILDFLY_MANAGEMENT_URL}/management/add-content | perl -pe 's/^.*"BYTES_VALUE"\s*:\s*"(.*)".*$/$1/'`
echo $bytes_value

json_string_start='{"content":[{"hash": {"BYTES_VALUE" : "'
json_string_end='"}}], "address": [{"deployment":"'"${WAR_NAME}"'"}], "operation":"add", "enabled":"true"}'
json_string="$json_string_start$bytes_value$json_string_end"

echo "-> Deploy new war"
result=`curl -sS -H "Content-Type: application/json" -d "$json_string" --digest ${WILDFLY_MANAGEMENT_URL}/management | perl -pe 's/^.*"outcome"\s*:\s*"(.*)".*$/$1/'`
echo $result

if [ "$result" != "success" ]; then
  exit -1
fi


0 commentaires