2017-06-21 1 views
0

J'ai remarqué que quelqu'un créait un tas de scripts pour fonctionner sur des clusters GemFire, où ils ont plusieurs copies du même script où la seule différence entre les scripts est le nom du serveur.Où puis-je retirer le nom d'hôte du serveur si nous ne pouvons pas le stocker dans ce script?

Voici une image du repo Github

screen shot of our GitHub repo for scripts

Qu'est-ce que le script ressemble:

#!/bin/bash 
source /sys_data/gemfire/scripts/gf-common.env 
#---------------------------------------------------------- 
# Start the servers 
#---------------------------------------------------------- 
(ssh -n <SERVER_HOST_NAME_HERE> ". ${GF_INST_HOME}/scripts/gfsh-server.sh gf_cache1 start") 

SERVER_HOST_NAME_HERE = le nom d'adresse IP ou serveur que le script a été conçu pour, retiré pour les besoins de ces questions.

Je voudrais créer un script avec un paramètre pour le nom du serveur. Le problème est: Je ne suis pas sûr exactement où le meilleur emplacement serait de stocker/récupérer le nom d'hôte/l'hôte du serveur, et laisser le script le référencer, des idées? Le nombre de serveurs de cache varie en fonction de l'environnement, de l'application et du cluster.

Notre pipeline de développement devrait fonctionner comme ceci idéalement:

  1. Les utilisateurs commettent un fichier à GitHub repo
  2. Déclencheurs Jenkins emploi
  3. fichier copies d'emploi Jenkins à chaque serveur de cache, arrête ce serveur en utilisant la stop_cache.sh, puis exécute le script start_cache.sh. Le nombre de serveurs de cache peut varier d'un cluster à l'autre.
  4. Les serveurs cache GemFire ​​sont mis à jour avec un nouveau fichier.
+0

Dns serait une solution classique pour ce problème. Vous demandez essentiellement comment faire pour la découverte de service. – raam86

+0

Maintenant, vous les avez codé en dur dans chaque fichier, il semble. Donc, les extraire dans un ou plusieurs fichiers séparés, faire une boucle sur les entrées de ce fichier et exécuter 'for host in $ (cat cache_hostnames.txt); ./stop_cache.sh $ host; fait »et quelque chose de similaire pour d'autres types de services? – nos

Répondre

0

J'y suis allé avec la méthode proposée par @nos

En ce moment, vous les avez définitivement dans chaque fichier il semble. Donc, les extraire dans un fichier séparé (s), faire défiler les entrées dans ce fichier et exécuter pour l'hôte dans $ (cat cache_hostnames.txt); ./stop_cache.sh $ host; fait et quelque chose de similaire pour d'autres types de services?

Placé les noms de serveur dans un fichier et bouclé dans le fichier.