J'ai installé PostgreSQL, Atlassian JIRA, Stash, Confluence et Crowd sur un seul serveur Ubuntu 12.04. Ils sont intégrés et fonctionnent conformément à la documentation Atlassian.
Une chose que j'ai remarquée, c'est que la suite de produits ne tolère pas la panne de composants dépendants. Par exemple, si Crowd est arrêté, les utilisateurs ne peuvent plus se connecter. Si PostgreSQL est arrêté pour des raisons de maintenance, les applications dépendantes risquent de ne jamais être récupérées.
Chaque nuit, le système passe par une fenêtre de maintenance au cours de laquelle le système d'exploitation et les logiciels peuvent être corrigés. Le DNS externe est configuré pour afficher gracieusement une page de maintenance en cas d'erreur dans les applications.
De temps en temps, PostgreSQL peut être arrêté, corrigé et ensuite démarré. Comment configurer mes scripts Upstart pour prendre en compte les dépendances? J'ai configuré le "démarrer le", mais cela n'a aucun effet.
Je suis à l'aise pour écrire des services Windows et configurer leurs dépendances lors de l'installation (par exemple, un programme d'installation Windows ou PowerShell).
Testcases:
J'ai arrêté tous les services. J'ai ensuite démarré Confluence en espérant qu'il échouerait (PostgreSQL et Crowd étant arrêtés) ou qu'il tenterait automatiquement de démarrer PostgreSQL et Crowd. Ni arrivé.
J'ai commencé tous les services. J'ai alors arrêté Crowd, m'attendant à ce que Confluence, JIRA et Stash soient arrêtés. Il a seulement arrêté Crowd et tous les autres services ont continué à fonctionner, mais n'ont pas fonctionné correctement.
Dépendances:
Confluence
# confluence
description "Atlassian Confluence"
start on (net-device-up and local-filesystems and postgresql and runlevel [2345] and crowd)
stop on runlevel [!2345]
respawn
kill timeout 30
env RUN_AS_USER=confluence
env BASEDIR=/usr/local/bin/confluence
script
LOGFILE=/var/log/confluence/confluence.`date +%Y-%m-%d`.log
exec su - $RUN_AS_USER -c "$BASEDIR/bin/catalina.sh run" >> $LOGFILE 2>&1
end script
JIRA
description "Atlassian JIRA"
start on (net-device-up and local-filesystems and postgresql and runlevel [2345] and crowd)
stop on runlevel [!2345]
respawn
kill timeout 30
env RUN_AS_USER=jira
env BASEDIR=/usr/local/bin/jira
script
LOGFILE=/var/log/jira/jira.`date +%Y-%m-%d`.log
exec su - $RUN_AS_USER -c "$BASEDIR/bin/catalina.sh run" >> $LOGFILE 2>&1
end script
Stash
description "Atlassian Stash"
start on (net-device-up and local-filesystems and postgresql and runlevel [2345] and crowd)
stop on runlevel [!2345]
respawn
kill timeout 30
env RUN_AS_USER=stash
env BASEDIR=/usr/local/bin/stash
env STASH_HOME="/var/local/lib/stash"
script
LOGFILE=/var/log/stash/stash.`date +%Y-%m-%d`.log
exec su - $RUN_AS_USER -c "$BASEDIR/bin/start-stash.sh -fg" >> $LOGFILE 2>&1
end script
foule
# crowd
description "Atlassian Crowd - Single Sign-On (SSO) and Identity Management"
start on (net-device-up and local-filesystems and postgresql and runlevel [2345])
stop on runlevel [!2345]
respawn
kill timeout 30
env RUN_AS_USER=crowd
env BASEDIR=/usr/local/bin/crowd/Apache-Tomcat
script
LOGFILE=/var/log/crowd/crowd.`date +%Y-%m-%d`.log
exec su - $RUN_AS_USER -c "$BASEDIR/bin/catalina.sh run" >> $LOGFILE 2>&1
end script
PostgreSQL a été installé via APT et démarre automatiquement au démarrage.
Essayer:
Foule
start on (net-device-up and started postgresql)
stop on stopping postgresql
Confluence
start on started crowd
stop on stopping crowd
Stash
start on started crowd
stop on stopping crowd
JIRA
start on started crowd
stop on stopping crowd
Référence: http://upstart.ubuntu.com/cookbook/
Cela va être un peu difficile, parce que postgresql n'est pas un job parvenu natif. Vous devez faire ce qui suit:
initctl emit -n started JOB=postgresql
à la fin de la partie de départ de /etc/init.d/postgresqlinitctl emit stopping JOB=postgresql
au début de la partie stop de /etc/init.d/postgresqlChanger la foule en:
start on started postgresql
stop on stopping postgresql
Cela devrait être ça. Si vous avez besoin d'aide pour les étapes 1 et 2, il suffit de demander.