Como implantar / gerenciar sites semelhantes a partir de um perfil exclusivo, sem despejos?

15

Não gosto das soluções de "site de clonagem ", que implicam o descarte de um banco de dados e a importação desse despejo em outro ambiente. Isso não parece uma maneira real do mundo de implantar várias instâncias do mesmo site (teste / prod / dev / etc).

Com o D7, geralmente usamos perfis personalizados e drush para instalar sites a partir desses perfis (e talvez usando recursos para sincronizações posteriores do site). Isso nos forneceu instalações novas, sem conteúdo de teste, mas compartilhando configurações importantes. A sincronização de conteúdo comum seria feita com a migração, por exemplo.

Tentei gerenciar várias instâncias do D8 compartilhando os mesmos perfis de instalação. Onde o objetivo final seria compartilhar e sincronizar as configurações do site. E toda instalação possui um site UUID diferente. Não tenho sucesso em impor a system.site uuidvariável de configuração no momento da instalação (é claro que posso alterar o valor posteriormente, mas parece-me que isso é tarde demais e todos os objetos já foram criados com UUIDs diferentes, o que torna a primeira sincronização um pesadelo. , onde algum conteúdo padrão deve ser excluído ou o idioma padrão interrompe a sincronização porque ela não pode ser removida etc.).

Para impor esse UUID, tentei usar um arquivo settings.php gerado com um $config['system.site']['uuid']valor interno, grande falha (a configuração foi completamente ignorada, mesmo após a instalação do site).

Também observei o perfil do instalador de configuração , que não entendo completamente, especialmente a maneira de misturar essa solução com outro perfil de instalação.

Portanto, a questão é: qual é a melhor maneira de implantar sites novos a partir de um perfil de instalação:

  • sem "clonar sites" e manipular dumps SQL na criação do site (como na pergunta sobre sites clonados ).
  • com um pano limpo nova instalação (sem desenvolvedores de lixo conteúdo), usando a configuração eo código exportado única
  • que pode gerenciar os padrões de configuração da instalação e as sincronizações posteriores
regilero
fonte

Respostas:

3

Os recursos podem ajudar a contornar o problema do UUID. Ainda é um buggy, o que nos impede de automatizar completamente o processo, mas podemos pelo menos mudar e manter a configuração manualmente.

Os recursos ainda criam módulos, ele exporta a configuração para o diretório config / install do módulo de recursos fornecido. Isso será escolhido quando você instalar o recurso e poderá continuar atualizando a configuração do site (da mesma forma que o antigo drush features-revert fez) à medida que a exportação dos recursos muda.

Você também pode importar a configuração diretamente via drush, certifique-se de usar o sinalizador --partial, para evitar substituir a configuração que não está na pasta de configuração. Usando --source, você também pode definir um local da pasta de configuração personalizada, para fazer algo assim drush cim --partial --source=docroot/modules/features/myfeature/config/install.

Balazs Dianiska
fonte
ok, se eu entendi bem, você usa o recurso para sincronizar configurações de sites no soime keys features . Sem permitir a sincronização completa da configuração de sites clonados.
regilero 29/01
2
Exatamente. Para nós, o problema fundamental com a sincronização total da configuração é que basta ter apenas uma configuração que os administradores possam alterar e você não pode mais sincronizar, porque isso reverteria a alteração. Dividir em áreas de recursos nos permite: a) manter um conjunto de configurações (parcialmente, porque entendemos o que é isso) eb) permanecer flexível nos demais recursos e em como gerenciamos sua configuração.
Balazs Dianiska
Ok, talvez essa não seja a resposta definitiva, mas eu darei a você a recompensa. Se alguém quiser adicionar uma resposta atualizada mais tarde (conforme as coisas estão mudando), talvez eu reabra outra recompensa por isso.
Regilero
1

Outra opção:

drush config-set system.site uuid 56974bf2-68c2-3453-a211-de8bc754cc23
Achton
fonte
1

Com base na dica de @Ivan Jaros, você pode definir certas opções de configuração ao instalar um perfil. Obviamente, isso funciona apenas na instalação e não quando o site já estiver instalado.

No arquivo .install do seu perfil, você pode adicionar as configurações padrão em hook_install():

\Drupal::configFactory()
  ->getEditable('system.site')
  ->set('uuid', 'this is my new uuid')
  ->save(TRUE);

Eu tentei isso localmente e funciona. Consegui extrair a configuração de outro site para um site local recém-instalado usando o código acima (com o conjunto UUID adequado) sem usar drush csetpara alterar o UUID do site.

Presumivelmente, você pode definir seu UUID para ser retirado de um arquivo em seu ambiente em algum lugar, ou de uma variável de ambiente ou serviço, e, portanto, todos seriam iguais em qualquer site com esse perfil instalado.

Eu esperava fazer algo semelhante, settings.phpmas a ConfigFactoryclasse não está disponível nesse momento e, como você aponta na sua pergunta, defini-la via $configin settings.phpnão tem efeito.

Jesse Boyd
fonte