Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um projeto é um conjunto de recursos que define configurações de nós. Os projetos contêm especificações. Quando um nó é iniciado, ele processa e executa uma sequência de especificações para configurar o nó.
O Azure CycleCloud usa projetos para gerenciar aplicativos clusterizados, como agendadores em lote. No cluster HPCPack do CycleCloud, o projeto usa hn e cn especificações para definir as configurações e receitas no HPCPack para o nó principal e o nó de computação.
Na seguinte definição de nó parcial, o nó Docker-registry executa três especificações: a especificação bind do projeto Okta versão 1.3.0 e as especificações core e registry do projeto Docker versão 2.0.0.
[[node docker-registry]]
Locker = base-storage
[[[cluster-init okta:bind:1.3.0]]]
[[[cluster-init docker:core:2.0.0]]]
[[[cluster-init docker:registry:2.0.0]]]
A tag à direita é o número da versão do projeto:
[[[cluster-init <project>:<spec>:<project version>]]]
Um cofre é uma referência a um contêiner e credencial de uma conta de armazenamento. Os nós têm um bloqueio padrão, portanto, nem sempre é necessário especificar este atributo.
O Azure CycleCloud usa uma abreviação para contas de armazenamento. Por exemplo, você pode escrever https://mystorage.blob.core.windows.net/mycontainer como az://mystorage/mycontainer.
Se você definir um projeto em um nó, mas ele não existir no local de armazenamento esperado, o nó reportará um Software Installation Failure para o CycleCloud.
O CycleCloud tem projetos internos que são executados por padrão em todos os nós para realizar o tratamento especial de volumes, configuração de rede e estabelecer comunicação com o CycleCloud. O sistema espelha automaticamente esses projetos internos no armário.
Você é responsável por espelhar quaisquer projetos extras no armário. A CLI do CycleCloud oferece métodos para compor projetos:
cyclecloud project init myproject
E, espelhar projetos para armários:
cyclecloud project init mylocker
As especificações consistem em scripts Python, shell ou PowerShell.
Criar um novo projeto
Para criar um novo projeto, use o comando cyclecloud project init myproject CLI onde myproject é o nome do projeto que você deseja criar.
myproject tem uma default especificação que você pode alterar. O comando cria a árvore de diretórios com arquivos esqueleto que você atualiza com suas próprias informações.
Estrutura do diretório
O comando project cria os seguintes diretórios:
myproject
├── project.ini
├── blobs
├── templates
├── specs
│ ├── default
│ └── cluster-init
│ ├── scripts
│ ├── files
│ └── tests
O diretório templates contém seus modelos de cluster, enquanto specs contém as especificações que definem seu projeto. O diretório specs tem um subdiretório chamado cluster-init (mas veja também Chef Orchestration). O diretório cluster-init contém diretórios com significados especiais, incluindo o diretório scripts (que contém scripts que são executados em ordem lexicográfica no nó), arquivos (que contém arquivos de dados brutos que vão para o nó) e testes (que contém testes que são executados quando você inicia um cluster no modo de teste).
project.ini
project.ini é o arquivo que contém todos os metadados do seu projeto. Pode conter:
| Parâmetro | Descrição |
|---|---|
| nome | Nome do projeto. Use traços para separar palavras, como order-66-2018. |
| etiqueta | Nome do projeto. Use um nome de cluster longo com espaços para fins de exibição. |
| tipo | Três opções: scheduler, application, ou <blank>. Este parâmetro determina o tipo de projeto e gera o modelo apropriado. Padrão: application. |
| versão | Formato: x.x. |
Cacifos
O conteúdo do projeto é armazenado dentro de um armário. Você pode carregar o conteúdo do seu projeto para qualquer armário definido em sua instalação do CycleCloud executando o comando cyclecloud project upload (locker), onde (locker) é o nome de um armário de armazenamento em nuvem em sua instalação do CycleCloud. Este armário é o destino padrão. Como alternativa, você pode executar o comando cyclecloud locker list para ver quais armários estão disponíveis para você. Você pode visualizar detalhes sobre um armário específico com cyclecloud locker show (locker).
Se adicionar mais de um armário, pode definir o cofre predefinido com cyclecloud project default_target (locker), e em seguida, executar cyclecloud project upload. Você também pode definir um armário padrão global para projetos a serem compartilhados executando o comando cyclecloud project default locker (locker) -global.
Observação
Os armários padrão são armazenados no arquivo de configuração do CycleCloud, localizado em ~/.cycle/config.ini e não no arquivo project.ini . Esta configuração permite o controle de versão para project.ini.
Quando você carrega o conteúdo do projeto, o CycleCloud sincroniza o conteúdo de inicialização do cluster com o armário de destino, em projects/(project)/(version)/(spec_name)/cluster-init.
Blob Baixar
Use project download para baixar todos os blobs referenciados no project.ini para o diretório de blobs local. O comando usa o [locker] parâmetro e tenta baixar blobs listados em project.ini do locker para o armazenamento local. Se o comando não conseguir localizar os ficheiros, devolve um erro.
Configuração do Projeto
Especificações
Ao criar um novo projeto, você define uma default especificação. Use o cyclecloud project add_spec comando para adicionar mais especificações ao seu projeto.
Gestão de Versões
Por padrão, todos os projetos usam a versão 1.0.0. Estabeleça uma versão personalizada enquanto desenvolve e implanta projetos definindo version=x.y.z no arquivo project.ini .
Por exemplo, se o locker_url for az://my-account/my-container/projects, o nome do projeto é "Order66", a versão é 1.6.9 e a especificação é default, a URL é:
az://my-account/my-container/projects/Order66/1.6.9/default
Blocos
Existem dois tipos de blobs: blobs de projeto e blobs de usuário.
Blobs de Projeto
Os autores do projeto fornecem blobs de projeto, que são arquivos binários que eles podem distribuir (por exemplo, arquivos binários para um projeto de código aberto que alguém pode redistribuir legalmente). Os blobs de projeto vão para o blobs diretório de um projeto e são localizados em /project/blobs quando você os carrega para um repositório.
Para adicionar blobs a projetos, adicione os arquivos ao seu project.ini:
[[blobs optionalname]]
Files = projectblob1.tgz, projectblob2.tgz, projectblob3.tgz
Separe vários blobs com uma vírgula. Você também pode especificar o caminho relativo para a pasta de blobs do projeto.
Blobs de usuário
Os blobs de usuário são arquivos binários, como binários do Univa Grid Engine, que o autor do projeto não pode redistribuir legalmente. Esses arquivos não são empacotados com o projeto. Os usuários devem prepará-los manualmente para o armário. Os arquivos estão localizados em /blobs/my-project/ no locker (por exemplo, /blobs/my-project/my-blob.tgz). Não é necessário definir blobs de usuário no project.ini.
Para baixar qualquer blob, use o jetpack download comando. O CycleCloud procura o blob do usuário primeiro e usa o blob no nível do projeto se não conseguir localizar o arquivo.
Observação
Um blob de usuário pode substituir um blob de projeto se eles tiverem o mesmo nome.
Especificar projetos dentro de um modelo de cluster
As especificações são definidas no modelo do seu cluster, usando a [[[cluster-init]]]seção em um nó:
[[node defaults]]
[[[cluster-init my-project:common:1.0.0]]]
[[node scheduler]]
[[[cluster-init my-project:scheduler:1.0.0]]]
[[nodearray execute]]
[[[cluster-init my-project:execute:1.0.0]]]
Este exemplo aproveita a defaults definição de nó da qual todos os nós herdam.
O nó do agendador obtém ambas as especificações, common e scheduler, e os nós na matriz do nó de execução obtêm ambas as especificações, common e execute.
Locais dos arquivos
O nó baixa os arquivos cluster-init para /mnt/cluster-init/(project)/(spec)/. Para my-project e my-spec, seus scripts, arquivos e testes estão em /mnt/cluster-init/my-project/my-spec.
Sincronizar projetos
Você pode sincronizar projetos do CycleCloud a partir de espelhos para o armazenamento em nuvem local do cluster. Defina um SourceLocker atributo em uma [cluster-init] seção dentro do seu modelo. O nome do repositório que você especificar é a fonte do projeto, e os conteúdos são sincronizados com o seu repositório quando o cluster é iniciado. Você também pode usar o nome do armário como a primeira parte do cluster-init nome. Por exemplo, se o cofre de origem for cyclecloud, as duas definições a seguir são as mesmas:
[cluster-init my-project:my-spect:1.2.3]
SourceLocker=cyclecloud
[cluster-init cyclecloud/my-proect:my-spec:1.2.3]
Armazenamento de arquivos grande
Os projetos suportam arquivos grandes. No nível superior de um projeto recém-criado, você vê um blobs diretório para seus arquivos grandes (blobs). Os blobs que você coloca neste diretório servem a uma finalidade específica e agem de forma diferente dos itens dentro do files diretório.
Os itens dentro do blobs diretório agem independentemente das especificações e versões. Você pode compartilhar qualquer coisa em blobs entre especificações ou versões do projeto. Por exemplo, você pode armazenar um instalador para um programa que muda com pouca frequência dentro de blobs e fazer referência a ele em seu project.ini. À medida que realizas iterações nas versões do teu projeto, esse único ficheiro permanece o mesmo e é copiado para o armazenamento na nuvem apenas uma vez, o que reduz os custos de transferência e armazenamento.
Para adicionar um blob, coloque um arquivo no diretório e edite o blobsproject.ini para fazer referência a esse arquivo:
[blobs]
Files=big_file1.tgz
Quando você usa o comando, ele transfere todos os blobs referenciados no project upload para o armazenamento em nuvem.
Ficheiros de registo
Os arquivos de log gerados ao executar cluster-init estão localizados em $JETPACK_HOME/logs/cluster-init/(project)/(spec).
Executar ficheiros
Quando um script de inicialização de cluster é executado com êxito, ele coloca um ficheiro em /mnt/cluster-init/.run/(project)/(spec) para garantir que o script não seja executado novamente numa convergência subsequente. Para executar o script novamente, exclua o arquivo apropriado neste diretório.
Diretórios de script
Quando CycleCloud executa scripts no diretório scripts, ele adiciona variáveis de ambiente ao caminho e ao nome dos diretórios spec e project.
CYCLECLOUD_PROJECT_NAME
CYCLECLOUD_PROJECT_PATH
CYCLECLOUD_SPEC_NAME
CYCLECLOUD_SPEC_PATH
No Linux, um projeto chamado test-project com uma especificação de default tem os seguintes caminhos:
CYCLECLOUD_PROJECT_NAME = test-project
CYCLECLOUD_PROJECT_PATH = /mnt/cluster-init/test-project
CYCLECLOUD_SPEC_NAME = default
CYCLECLOUD_SPEC_PATH = /mnt/cluster-init/test-project/default
Executar apenas scripts
Para executar apenas scripts cluster-init, use o seguinte comando:
jetpack converge --cluster-init
O comando envia sua saída para STDOUT e para jetpack.log. A saída de cada script também é registrada em:
$JETPACK_HOME/logs/cluster-init/(project)/(spec)/scripts/(script.sh).out
baixar jetpack
Para baixar um blob dentro de um script cluster-init, use o comando jetpack download (filename) para retirá-lo do blobs diretório. A execução deste comando a partir de um script cluster-init permite determinar o projeto e a URL base para você. Para usá-lo em um contexto não-cluster-init, você precisa especificar o projeto. Para mais informações, use a opção --help.