Instalei o PostgreSQL, o Atlassian JIRA, o Stash, o Confluence e o Crowd em um único servidor Ubuntu 12.04. Eles estão integrados e funcionando de acordo com a documentação da Atlassian.
Uma coisa que notei é que o pacote de produtos não tolera que os componentes dependentes estejam inativos. Por exemplo, se o Crowd for interrompido, os usuários não poderão mais efetuar login. Se o PostgreSQL estiver sendo interrompido por motivos de manutenção, os aplicativos dependentes talvez nunca se recuperem.
Todas as noites, o sistema passa por uma janela de manutenção, durante a qual o sistema operacional e o software podem ser corrigidos. O DNS externo está configurado para exibir uma página de manutenção se houver um erro com os aplicativos.
De vez em quando, o PostgreSQL pode ser parado, corrigido e iniciado. Como eu configuro meus scripts Upstart para ter dependências em conta? Eu configurei o "start on", mas não tem efeito.
Sinto-me à vontade para escrever serviços do Windows e configurar suas dependências durante a instalação (por exemplo, o instalador do Windows ou o PowerShell).
Testcases:
-
Parei todos os serviços. Eu então comecei o Confluence, esperando que
falha (já que o PostgreSQL e o Crowd são interrompidos) ou
automaticamente tenta iniciar o PostgreSQL e o Crowd. Nem
aconteceu.
-
Eu iniciei todos os serviços. Então eu parei Crowd, esperando que
Confluence, JIRA e Stash serão parados. Só parou Crowd e
todos os outros serviços continuaram funcionando, mas não funcionaram
corretamente.
Dependências:
-
Multidão : PostgreSQL, Rede
-
Confluence : PostgreSQL, Rede, Multidão
-
JIRA : PostgreSQL, Rede, Multidão
-
Stash : PostgreSQL, Rede, Multidão
Confluência
# 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
Multidão
# 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
O PostgreSQL foi instalado via APT e inicializa automaticamente durante a inicialização.