Gerenciamento de configuração para suporte à computação científica

3
Nos últimos anos tenho estado envolvido no desenvolvimento e manutenção de um sistema para previsão de ondas próximas à costa. Nossa equipe acaba de receber uma doação significativa para desenvolvimento futuro e, como resultado, estamos aproveitando a oportunidade para refatorar muitos componentes do sistema antigo.

Também receberemos um novo servidor para executar o modelo e aproveito a oportunidade para considerar como configuramos o sistema. Basicamente, os passos que precisam acontecer são:

  1. Alguns pacotes e bibliotecas padrão, como compiladores e bancos de dados, precisam ser baixados e instalados.

  2. Alguns modelos científicos personalizados precisam ser baixados e compilados da fonte, pois normalmente não são fornecidos como pacotes.

  3. Novos usuários precisam ser criados para gerenciar os bancos de dados e executar os modelos.

  4. Um conjunto de scripts que gerencia a interação modelo-banco de dados precisa ser verificado no controle de código-fonte e instalado.

  5. O Crontabs precisa ser configurado para executar os scripts em intervalos regulares para gerar previsões.

Eu tenho pensado em aplicar ferramentas como Puppet, Capistrano ou Fabric para automatizar as etapas acima. Parece perfeitamente possível implementar a maioria das funcionalidades acima, exceto que há alguns casos de uso que eu estou querendo saber:

  • Durante minha pesquisa preliminar, descobri poucos exemplos e pouca discussão sobre como usar esses sistemas para abstrair e automatizar o processo de criação de componentes personalizados a partir do código-fonte.

  • Talvez tenhamos que implantar em máquinas isoladas da Internet - ou seja, todos os arquivos de configuração e configuração precisarão ser inseridos em uma chave USB que possa ser inserida em um terminal que possa se conectar ao servidor que irá executar os modelos.

Vejo isso como uma oportunidade para aprender uma nova ferramenta que me ajudará a automatizar meu fluxo de trabalho, mas não tenho certeza de qual ferramenta devo começar. Se algum membro da comunidade puder sugerir uma ferramenta que suporte o fluxo de trabalho acima e os problemas específicos da computação científica, eu ficaria muito grato.

Nosso servidor de produção estará executando o Linux, mas o suporte para o OS X seria um bônus, pois permitiria que a equipe de desenvolvimento configurasse instalações de teste fora do VirtualBox.

    
por Sharpie 30.03.2010 / 04:04

2 respostas

1

Pode haver boas informações de pessoas aqui, mas você também pode querer perguntar à comunidade científica, já que há palestras e cartazes sobre isso na reunião da AGU no outono a cada ano. Muito disso tem que lidar com o gerenciamento do fluxo de trabalho para dados de ciências da terra, que podem ter alguns requisitos mais rigorosos do que os esforços de previsão.

Eu sei que eu vi algumas apresentações sobre isso na última reunião, mas o novo sistema abstrato da AGU absolutamente suga para tentar passar por um grande número de resumos e / ou navegar pela disciplina. (e sub-disciplina? não é uma chance).

Algumas pessoas estavam usando sistemas de gerenciamento de fluxo de trabalho (por exemplo, Kepler e Taverna ), mas eu não acho que eles tenham entrado no sistema aspectos de proveniência quase tanto quanto o cluster e o cluster de computação. Até mesmo as pessoas da ciência da terra, que pareciam estar tomando a origem mais a sério do que outros campos, pareciam ainda mais focadas em entradas de dados do que no tipo de processador / SO / versões de bibliotecas instaladas / etc.

Os termos usados para descrever o campo estão em todo o lugar - eu vi isso chamado de "infra-estrutura cibernética" (principalmente algo da NSF), "ciência da informática", etc. Desculpe, não posso ser mais específico, como este não é bem o meu campo. reclamar para esse tipo de coisa, sim, mas eu lido com os dados de serviço bem depois de ter sido gerado).

    
por 30.03.2010 / 04:39
1

Qual distribuição de linux você está usando e de qual software você está falando que "normalmente não é fornecido como pacotes"? Parece-me que uma maneira de automatizar este passo é consertar o problema da raiz e obter pacotes! Isso pode demorar um pouco, mas torna o trabalho futuro do administrador muito mais fácil para você e para a comunidade.

A maioria dos gerenciadores de pacotes é apenas uma série de scripts para desinfetar o gerenciamento de software. Nessa função, eles são muito hábeis em roteirizar a compilação, distribuição, instalação e atualização de software. Mesmo que você não esteja interessado em se envolver o suficiente para fazer com que seu software seja movido para o upstream, a maioria das distribuições tem formas de fazer sobreposições ou adicionar repositórios de seu próprio software, e estas devem ser portáteis.

Seus outros passos são realmente básicos, apenas algumas linhas de código de script e todas elas se encaixam. Os scripts para cada etapa e os que os unem não devem ter mais que algumas dezenas de linhas cada. Os scripts podem ser facilmente feitos para alternar entre fontes locais e da Internet.

    
por 25.10.2010 / 15:22