Próximo: , Anterior: , Acima: Instalando Guix em um Cluster   [Conteúdo][Índice]


9.3 Acesso à rede

Guix requer acesso à rede para baixar código-fonte e binários pré-construídos. A boa notícia é que somente o nó principal precisa disso, já que nós de computação simplesmente delegam a ele.

É costume que nós de cluster tenham acesso, na melhor das hipóteses, a uma white list de hosts. Nosso nó principal precisa de pelo menos ci.guix.gnu.org nessa lista branca, pois é de lá que ele obtém binários pré-construídos por padrão, para todos os pacotes que estão no Guix propriamente dito.

A propósito, ci.guix.gnu.org também serve como um content-addressed mirror do código-fonte desses pacotes. Consequentemente, é suficiente ter unicamente ci.guix.gnu.org nessa lista branca.

Pacotes de software mantidos em um repositório separado, como um dos vários canais HPC, obviamente não estão disponíveis em ci.guix.gnu.org. Para esses pacotes, você pode querer estender a lista branca de modo que os binários de origem e pré-construídos (assumindo que os servidores desta parte forneçam binários para esses pacotes) possam ser baixados. Como último recurso, os usuários sempre podem baixar o código-fonte em sua estação de trabalho e adicioná-lo ao /gnu/store do cluster, assim:

GUIX_DAEMON_SOCKET=ssh://compute-node.example.org \
  guix download http://starpu.gforge.inria.fr/files/starpu-1.2.3/starpu-1.2.3.tar.gz

O comando acima baixa starpu-1.2.3.tar.gz e o envia para a instância guix-daemon do cluster via SSH.

Clusters com air-gapped exigem mais trabalho. No momento, nossa sugestão seria baixar todo o código-fonte necessário em uma estação de trabalho executando Guix. Por exemplo, usando a opção --sources de guix build (veja Invocando guix build em Manual de Referência do GNU Guix), o exemplo abaixo baixa todo o código-fonte do qual o pacote openmpi depende:

$ guix build --sources=transitive openmpi

…

/gnu/store/xc17sm60fb8nxadc4qy0c7rqph499z8s-openmpi-1.10.7.tar.bz2
/gnu/store/s67jx92lpipy2nfj5cz818xv430n4b7w-gcc-5.4.0.tar.xz
/gnu/store/npw9qh8a46lrxiwh9xwk0wpi3jlzmjnh-gmp-6.0.0a.tar.xz
/gnu/store/hcz0f4wkdbsvsdky3c0vdvcawhdkyldb-mpfr-3.1.5.tar.xz
/gnu/store/y9akh452n3p4w2v631nj0injx7y0d68x-mpc-1.0.3.tar.gz
/gnu/store/6g5c35q8avfnzs3v14dzl54cmrvddjm2-glibc-2.25.tar.xz
/gnu/store/p9k48dk3dvvk7gads7fk30xc2pxsd66z-hwloc-1.11.8.tar.bz2
/gnu/store/cry9lqidwfrfmgl0x389cs3syr15p13q-gcc-5.4.0.tar.xz
/gnu/store/7ak0v3rzpqm2c5q1mp3v7cj0rxz0qakf-libfabric-1.4.1.tar.bz2
/gnu/store/vh8syjrsilnbfcf582qhmvpg1v3rampf-rdma-core-14.tar.gz
…

(Caso você esteja se perguntando, isso é mais de 320 MiB de código-fonte compactado.)

Podemos então criar um grande arquivo contendo tudo isso (veja Invocando guix archive em Manual de Referência GNU Guix):

$ guix archive --export \
    `guix build --sources=transitive openmpi` \
    > openmpi-source-code.nar

… e podemos eventualmente transferir esse arquivo para o cluster em armazenamento removível e descompactá-lo lá:

$ guix archive --import < openmpi-source-code.nar

Esse processo precisa ser repetido toda vez que um novo código-fonte precisa ser trazido para o cluster.

Enquanto escrevemos isso, os institutos de pesquisa envolvidos no Guix-HPC não têm clusters air-gapped. Se você tem experiência com essas configurações, gostaríamos de ouvir feedback e sugestões.


Próximo: Uso do Disco, Anterior: Configurando nós de computação, Acima: Instalando Guix em um Cluster   [Conteúdo][Índice]