如何通过唯一的配置文件部署/管理类似的站点,而没有转储?


15

我不喜欢“ 克隆网站”解决方案,该解决方案意味着要转储数据库并将此转储导入另一个环境。这看起来并不像部署同一网站的多个实例(staging / prod / dev / etc)的真实方法。

对于D7,我们通常使用自定义配置文件,并使用drush从这些配置文件安装网站(并可能使用功能进行以后的网站同步)。这为我们提供了全新的安装,没有测试内容,但是共享了重要的设置。例如,公共内容同步将通过迁移完成。

我试图管理几个共享相同安装配置文件的D8实例。最终目标是共享和同步站点配置。而且每个安装都有一个不同的站点UUID。我system.site uuid在安装时强制执行config变量没有成功(当然,我以后可以更改该值,但是在我看来这已经太晚了,并且所有对象都已经使用不同的UUID创建,这使得第一次同步成为噩梦。,其中必须删除一些默认内容,或者由于无法删除同步,默认语言导致同步崩溃等)。

为了强制执行此UUID,我尝试使用生成的settings.php文件,该文件中包含一个$config['system.site']['uuid']值,但失败很大(即使在站点安装后,该设置也被完全忽略了)。

我还查看了我不完全了解的配置安装程序配置文件,尤其是将该解决方案与另一个安装配置文件混合使用的方式。

所以问题是,从安装配置文件部署新站点的最佳方法是什么:

  • 无需“克隆网站”,也无需在创建网站时操纵SQL转储(例如,在“ 克隆网站问题”中)。
  • 用新鲜干净的安装(没有开发内容垃圾),使用导出的配置和代码
  • 它可以管理安装配置默认值和以后的同步

Answers:


3

功能可以帮助绕过UUID问题。它仍然存在问题,这使我们无法完全自动化该过程,但是我们至少可以手动更改和维护配置。

功能仍会创建模块,它将配置导出到给定功能模块的config / install目录中。当您安装功能部件时,它将被拾取,并且当功能部件导出更改时,您可以继续更新站点配置(类似于旧的drush功能部件还原所做的操作)。

您也可以直接通过drush导入配置,请确保使用--partial标志,以避免覆盖不在 config文件夹中的配置。使用--source,您还可以定义自定义配置文件夹的位置,因此您可以执行drush cim --partial --source=docroot/modules/features/myfeature/config/install


好的,如果我对它的理解很好,您可以使用功能来同步Soime Key 功能上的网站配置。不允许克隆网站的完整配置同步。
regilero '16

2
究竟。对我们来说,完全配置同步的根本问题在于,它仅具有管理员可以更改的一项设置,并且您不再同步,因为那样会还原他们的更改。将其分解为功能区域,使我们可以a)维护配置集(部分是因为我们了解它的作用),以及b)在其余功能以及如何管理其配置方面保持灵活性。
Balazs Dianiska '16

好的,这也许不是确定的答案,但我会给您赏金。如果有人想稍后添加更新的答案(随着事情的发展),我可能会为此重新开放另一个赏金。
regilero'2

1

另外的选择:

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

1

基于@Ivan Jaros提示,您可以在安装配置文件时设置某些配置选项。显然,这仅适用于安装,而不适用于已经安装了站点的情况。

在配置文件的.install文件中,您可以在以下位置添加默认配置设置hook_install()

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

我已经在本地尝试过了,而且确实有效。我能够使用上面的代码(已设置正确的UUID)将配置从另一个站点拉到新安装的本地站点中,而无需使用drush cset更改站点UUID的方法。

大概可以将UUID设置为从环境中某个位置的文件,环境变量或服务中获取,因此,在安装了该配置文件的任何站点上,它们都将是相同的。

我希望从中做类似的事情,settings.php但是ConfigFactory该类当时不可用,正如您在问题中指出的那样,通过$configin 设置它settings.php无效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.