Você pode mudar a configuração padrão do cluster gerada na Fase 2 (consulte Descrição das fases do DeepSea). Por exemplo, talvez você tenha que mudar as configurações de rede ou o software que está instalado por padrão no Nó de Admin. Para o primeiro caso, você pode modificar o pillar atualizado após a Fase 2. No segundo caso, costuma-se criar um arquivo sls
personalizado e adicioná-lo ao pillar. Os detalhes estão descritos nas seções a seguir.
Esta seção lista as diversas tarefas que requerem adição/modificação de seus próprios arquivos sls
. Normalmente, esse tipo de procedimento é usado quando você precisa mudar o processo de implantação padrão.
Seus arquivos .sls personalizados pertencem ao mesmo subdiretório que os arquivos .sls do DeepSea. Para evitar sobregravar seus arquivos .sls por aqueles que podem ser recém-adicionados do pacote do DeepSea, adicione um prefixo ao nome deles com a string custom-
.
Se você resolver determinada tarefa fora do processo de implantação do DeepSea e, desse modo, precisar ignorá-la, crie um arquivo “no-operation” seguindo este exemplo:
Crie /srv/salt/ceph/time/disabled.sls
com o seguinte conteúdo e grave-o:
disable time setting: test.nop
Edite /srv/pillar/ceph/stack/global.yml
, adicione a seguinte linha e grave-o:
time_init: disabled
Faça a verificação atualizando o pillar e executando a etapa:
root@master #
salt target saltutil.pillar_refreshroot@master #
salt 'admin.ceph' state.apply ceph.time admin.ceph: Name: disable time setting - Function: test.nop - Result: Clean Summary for admin.ceph ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1
O ID da tarefa “disable time setting” pode ser qualquer mensagem exclusiva em um arquivo sls
. Para impedir colisões de ID, especifique descrições exclusivas.
Se você precisa substituir o comportamento padrão de uma etapa específica por um personalizado, crie um arquivo sls
personalizado com o conteúdo de substituição.
Por padrão, /srv/salt/ceph/pool/default.sls
cria uma imagem rbd chamada “demo”. Em nosso exemplo, não desejamos que essa imagem seja criada, mas precisamos de duas imagens: “archive1” e “archive2”.
Crie /srv/salt/ceph/pool/custom.sls
com o seguinte conteúdo e grave-o:
wait: module.run: - name: wait.out - kwargs: 'status': "HEALTH_ERR"1 - fire_event: True archive1: cmd.run: - name: "rbd -p rbd create archive1 --size=1024"2 - unless: "rbd -p rbd ls | grep -q archive1$" - fire_event: True archive2: cmd.run: - name: "rbd -p rbd create archive2 --size=768" - unless: "rbd -p rbd ls | grep -q archive2$" - fire_event: True
O módulo wait ficará pausado enquanto o status do cluster do Ceph for | |
O comando |
Para chamar o arquivo personalizado recém-criado, em vez do padrão, você precisa editar /srv/pillar/ceph/stack/ceph/cluster.yml
, adicionar a seguinte linha e gravá-lo:
pool_init: custom
Faça a verificação atualizando o pillar e executando a etapa:
root@master #
salt target saltutil.pillar_refreshroot@master #
salt 'admin.ceph' state.apply ceph.pool
A criação de pools ou imagens requer autorização suficiente. O minion admin.ceph
tem um chaveiro de admin.
Outra opção é mudar a variável em /srv/pillar/ceph/stack/ceph/roles/master.yml
. O uso desse arquivo reduzirá o acúmulo de dados do pillar para outros minions.
Às vezes, você pode precisar de uma etapa específica para realizar algumas tarefas adicionais. Não é recomendável modificar o arquivo de estado relacionado, pois ele pode complicar um upgrade futuro. Em vez disso, crie um arquivo separado para executar as tarefas adicionais exatamente como foi descrito na Seção 7.1.2, “Substituindo uma etapa de implantação”.
Nomeie o novo arquivo sls
de modo descritivo. Por exemplo, se você precisa criar duas imagens rbd além da imagem demo, nomeie o arquivo archive.sls
.
Crie /srv/salt/ceph/pool/custom.sls
com o seguinte conteúdo e grave-o:
include: - .archive - .default
Neste exemplo, o Salt criará as imagens archive e, em seguida, a imagem demo. A ordem não importa neste exemplo. Para mudar a ordem, inverta as linhas após a diretiva include:
.
Você pode adicionar a linha include diretamente ao archive.sls
, e todas as imagens também serão criadas. No entanto, independentemente de onde a linha include for colocada, o Salt processará primeiro as etapas no arquivo incluído. Embora esse comportamento possa ser anulado pelas declarações requires e order, um arquivo separado incluindo as outras etapas garante a ordem e reduz as chances de confusão.
Edite /srv/pillar/ceph/stack/ceph/cluster.yml
, adicione a seguinte linha e grave-o:
pool_init: custom
Faça a verificação atualizando o pillar e executando a etapa:
root@master #
salt target saltutil.pillar_refreshroot@master #
salt 'admin.ceph' state.apply ceph.pool
Se você precisa adicionar uma etapa de implantação completamente separada, crie três novos arquivos: um sls
que executa o comando, um arquivo de orquestração e um arquivo personalizado que alinha a nova etapa às etapas originais da implantação.
Por exemplo, se você precisa executar logrotate
em todos os minions como parte da fase de preparação:
Crie primeiro um arquivo sls
e inclua o comando logrotate
.
logrotate
em todos os minions Salt #
Crie um diretório, como /srv/salt/ceph/logrotate
.
Crie /srv/salt/ceph/logrotate/init.sls
com o seguinte conteúdo e grave-o:
rotate logs: cmd.run: - name: "/usr/sbin/logrotate /etc/logrotate.conf"
Verifique se o comando funciona em um minion:
root@master #
salt 'admin.ceph' state.apply ceph.logrotate
Como o arquivo de orquestração precisa ser executado antes de todas as outras etapas de preparação, adicione-o à Fase 0 Preparação:
Crie /srv/salt/ceph/stage/prep/logrotate.sls
com o seguinte conteúdo e grave-o:
logrotate: salt.state: - tgt: '*' - sls: ceph.logrotate
Verifique se o arquivo de orquestração funciona:
root@master #
salt-run state.orch ceph.stage.prep.logrotate
O último arquivo é aquele personalizado que inclui a etapa adicional com as etapas originais:
Crie /srv/salt/ceph/stage/prep/custom.sls
com o seguinte conteúdo e grave-o:
include: - .logrotate - .master - .minion
Anule o comportamento padrão. Edite /srv/pillar/ceph/stack/global.yml
, adicione a seguinte linha e grave o arquivo:
stage_prep: custom
Verifique se a Fase 0 funciona:
root@master #
salt-run state.orch ceph.stage.0
global.yml
?
O arquivo global.yml
foi escolhido no lugar do cluster.yml
porque, durante a fase de preparação, nenhum minion pertence ao cluster do Ceph e não tem acesso a quaisquer configurações no cluster.yml
.
Durante a fase 0 (consulte Descrição das fases do DeepSea para obter mais informações sobre as fases do DeepSea), o master Salt e os minions Salt podem ser reinicializados porque os pacotes atualizados recentemente, por exemplo kernel, exigem reinicialização do sistema.
O comportamento padrão é instalar as novas atualizações disponíveis e não reinicializar os nós, mesmo no caso de atualizações do kernel.
Você pode alterar o comportamento padrão de atualização/reinicialização da fase 0 do DeepSea adicionando/alterando as opções stage_prep_master
e stage_prep_minion
no arquivo /srv/pillar/ceph/stack/global.yml
. _prep_master
define o comportamento da Fase do master Salt, e stage_prep_minion
define o comportamento de todos os minions. Todos os parâmetros disponíveis são:
Instalar as atualizações sem reinicializar.
Instalar as atualizações e reinicializar após a atualização.
Reinicializar sem instalar as atualizações.
Não instalar as atualizações nem reinicializar.
Por exemplo, para impedir que os nós do cluster instalem as atualizações e sejam reinicializados, edite /srv/pillar/ceph/stack/global.yml
e adicione as seguintes linhas:
stage_prep_master: default-no-update-no-reboot stage_prep_minion: default-no-update-no-reboot
Os valores de stage_prep_master
correspondem aos nomes de arquivo localizados no /srv/salt/ceph/stage/0/master
. Já os valores de stage_prep_minion
correspondem aos arquivos no /srv/salt/ceph/stage/0/minion
:
root@master #
ls -l /srv/salt/ceph/stage/0/master default-no-update-no-reboot.sls default-no-update-reboot.sls default-update-reboot.sls [...]root@master #
ls -l /srv/salt/ceph/stage/0/minion default-no-update-no-reboot.sls default-no-update-reboot.sls default-update-reboot.sls [...]
Após concluir a Fase 2, convém mudar a configuração descoberta. Para ver as configurações atuais, execute:
root@master #
salt target pillar.items
Normalmente, a saída da configuração padrão de um único minion é semelhante a esta:
---------- available_roles: - admin - mon - storage - mds - igw - rgw - client-cephfs - client-radosgw - client-iscsi - mds-nfs - rgw-nfs - master cluster: ceph cluster_network: 172.16.22.0/24 fsid: e08ec63c-8268-3f04-bcdb-614921e94342 master_minion: admin.ceph mon_host: - 172.16.21.13 - 172.16.21.11 - 172.16.21.12 mon_initial_members: - mon3 - mon1 - mon2 public_address: 172.16.21.11 public_network: 172.16.21.0/24 roles: - admin - mon - mds time_server: admin.ceph time_service: ntp
As configurações mencionadas acima são distribuídas entre vários arquivos de configuração. A estrutura de diretórios com esses arquivos é definida no diretório /srv/pillar/ceph/stack/stack.cfg
. Em geral, os arquivos a seguir descrevem seu cluster:
/srv/pillar/ceph/stack/global.yml
: o arquivo afeta todos os minions no cluster do Salt.
/srv/pillar/ceph/stack/ceph/cluster.yml
: o arquivo afeta todos os minions no cluster do Ceph denominado ceph
.
/srv/pillar/ceph/stack/ceph/roles/role.yml
: afeta todos os minions que receberam a função específica no cluster ceph
.
/srv/pillar/ceph/stack/ceph/minions/MINION_ID/yml
: afeta o minion individual.
Há uma árvore de diretório paralela que armazena a configuração padrão em /srv/pillar/ceph/stack/default
. Não mude valores aqui, pois eles serão sobregravados.
Veja a seguir o procedimento comum para mudar a configuração coletada:
Encontre o local do item de configuração que você precisa mudar. Por exemplo, se você precisa mudar a configuração relacionada ao cluster, como a rede do cluster, edite o arquivo /srv/pillar/ceph/stack/ceph/cluster.yml
.
Grave o arquivo.
Para verificar as mudanças, execute:
root@master #
salt target saltutil.pillar_refresh
e, em seguida:
root@master #
salt target pillar.items
Como o endereçamento de rede IPv4 é predominante, você precisa habilitar o IPv6 como uma personalização. O DeepSea não tem descoberta automática de endereçamento IPv6.
Para configurar o IPv6, defina as variáveis public_network
e cluster_network
no arquivo /srv/pillar/ceph/stack/global.yml
como sub-redes IPv6 válidas. Por exemplo:
public_network: fd00:10::/64 cluster_network: fd00:11::/64
Em seguida, execute a fase 2 do DeepSea e verifique se as informações de rede correspondem à configuração. A fase 3 gerará o ceph.conf
com os flags necessários.
O Ceph não suporta pilha dupla. A execução do Ceph simultaneamente no IPv4 e no IPv6 não é possível. A validação do DeepSea rejeitará uma incompatibilidade entre public_network
e cluster_network
ou em uma dessas variáveis. O exemplo a seguir apresentará falha na validação.
public_network: "192.168.10.0/24 fd00:10::/64"
fe80::/10 link-local
Evite usar endereços fe80::/10 link-local
. Todas as interfaces de rede têm um endereço fe80
atribuído e exigem um qualificador de interface para o roteamento apropriado. Atribua endereços IPv6 alocados ao seu site ou considere o uso de fd00::/8
. Eles fazem parte do ULA e não são roteáveis globalmente.