Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um projeto é uma coleção de recursos que definem configurações de nó. 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 as especificações hn e cn para definir as configurações e as receitas do nó de controle e do nó de computação do HPCPack.
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 etiqueta final é o número da versão do projeto.
[[[cluster-init <project>:<spec>:<project version>]]]
Um locker é uma referência a um contêiner de conta de armazenamento e uma credencial. Os nós possuem um bloqueio padrão, então 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ó relatará um Software Installation Failure ao CycleCloud.
O CycleCloud tem projetos internos que são executados por padrão em todos os nós para realizar manipulações especiais de volumes e de rede e configurar a comunicação com o CycleCloud. O sistema espelha automaticamente esses projetos internos no cofre.
Você é responsável por espelhar projetos extras no locker. A CLI do CycleCloud oferece métodos para compor projetos:
cyclecloud project init myproject
E espelhar projetos em lockers:
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 da CLI onde myproject está 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ório com arquivos esqueleto que você atualiza com suas próprias informações.
Estrutura do diretório
O comando do projeto cria os seguintes diretórios:
myproject
├── project.ini
├── blobs
├── templates
├── specs
│ ├── default
│ └── cluster-init
│ ├── scripts
│ ├── files
│ └── tests
O diretório de modelos contém seus modelos de cluster, enquanto as especificações contêm as especificações que definem seu projeto. O diretório de especificações tem um subdiretório chamado cluster-init (mas consulte também Orquestração de Chef). O diretório cluster-init contém diretórios com significados especiais, incluindo o diretório de scripts (que contém scripts executados em ordem lexicográfica no nó), arquivos (que contém arquivos de dados brutos que vão no nó) e testes (que contém testes executados quando você inicia um cluster no modo de teste).
project.ini
project.ini é o arquivo que contém todos os metadados do projeto. Ele 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, applicationou <blank>. Esse parâmetro determina o tipo de projeto e gera o modelo apropriado. Padrão: application. |
| versão | Formato: x.x. |
Armários
O conteúdo do projeto é armazenado em um armário. Você pode carregar o conteúdo do seu projeto em qualquer armário definido na instalação do CycleCloud executando o comando cyclecloud project upload (locker), onde (locker) está o nome de um cofre de armazenamento em nuvem em sua instalação do CycleCloud. Esse armário é o alvo 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 exibir detalhes sobre um armário específico com cyclecloud locker show (locker).
Se você adicionar mais de um armário, poderá definir seu armário padrão com cyclecloud project default_target (locker)e, em seguida, executar cyclecloud project upload. Você também pode definir um cofre padrão global para projetos compartilharem 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 . Essa 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 cofre de destino, em projects/(project)/(version)/(spec_name)/cluster-init.
Download de blob
Use project download para baixar todos os blobs referenciados em 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 cofre para o armazenamento local. Se o comando não conseguir localizar os arquivos, ele retornará um erro.
Instalaçã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.
Controle de versão
Por padrão, todos os projetos usam a versão 1.0.0. Defina uma versão personalizada à medida que você 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 for "Order66", a versão for 1.6.9 e a especificação for default, a URL será:
az://my-account/my-container/projects/Order66/1.6.9/default
Blobs
Há dois tipos de blobs: blobs de projeto e blobs de usuário.
Projeto Blobs
Os autores do projeto fornecem blobs de projeto, que são arquivos binários que podem ser distribuídos (por exemplo, arquivos binários para um projeto de software livre que alguém pode redistribuir legalmente). Os blobs do projeto entram no diretório blobs e são localizados em /project/blobs quando você os carrega para um local de armazenamento.
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 o diretório de blob 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 preparar manualmente para o cofre. Os arquivos estão localizados em /blobs/my-project/ no armário (por exemplo, /blobs/my-project/my-blob.tgz). Você não precisa 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 ele não consegue localizar o arquivo.
Observação
Um blob de usuário pode substituir um blob de projeto se tiver o mesmo nome.
Especificar projetos em um modelo de cluster
As especificações são definidas no modelo de 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 definição do nó defaults da qual todos os nós herdam.
O nó do agendador obtém as especificações common e scheduler, e os nós na matriz de nós de execução obtêm as especificações common e execute.
Locais de arquivos
O nó baixa os arquivos de 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 de espelhos no armazenamento em nuvem local do cluster. Defina um SourceLocker atributo em uma [cluster-init] seção dentro do modelo. O nome do compartimento especificado é a origem do projeto, e o conteúdo é sincronizado ao seu compartimento quando o cluster é iniciado. Você também pode usar o nome do locker como a primeira parte do nome cluster-init. Por exemplo, se o cofre de origem for cyclecloud, as duas definições a seguir serã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 dão suporte a arquivos grandes. No nível superior de um projeto recém-criado, você verá 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 de especificações e versões. Você pode compartilhar qualquer coisa em blobs entre especificações ou versões de projeto. Por exemplo, você pode armazenar um instalador para um programa que é alterado com pouca frequência em blobs e referenciá-lo em seu project.ini. À medida que você realiza iterações em diferentes versões do seu projeto, esse único arquivo permanece o mesmo e é copiado para o armazenamento em nuvem uma vez, o que economiza em custos de transferência e armazenamento.
Para adicionar um blob, coloque um arquivo no blobs diretório e edite seu project.ini para fazer referência a esse arquivo:
[blobs]
Files=big_file1.tgz
Quando você usa o comando, ele transfere todos os blobs referenciados em project upload para o armazenamento em nuvem.
Arquivos de log
Os arquivos de log gerados ao executar cluster-init estão localizados em $JETPACK_HOME/logs/cluster-init/(project)/(spec).
Executar arquivos
Quando um script cluster-init é executado com êxito, ele coloca um arquivo em /mnt/cluster-init/.run/(project)/(spec) para garantir que o script não seja executado novamente em uma convergência subsequente. Para executar o script novamente, exclua o arquivo apropriado neste diretório.
Diretórios de script
Quando o 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 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 somente scripts
Para executar somente scripts de 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 o jetpack
Para baixar um blob dentro de um script cluster-init, use o comando jetpack download (filename) para retirá-lo do blobs diretório. Executar esse comando de um script de 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 obter mais informações, use a opção --help .