Bagaimana cara saya menyebarkan / mengelola situs serupa dari profil unik, tanpa dump?

15

Saya tidak suka solusi "situs web kloning " yang menyiratkan dumping database dan mengimpor dump ini di lingkungan lain. Ini tidak terlihat seperti cara dunia nyata dalam menyebarkan beberapa contoh situs web yang sama (pementasan / prod / dev / dll).

Dengan D7 kami biasanya menggunakan profil khusus dan menggunakan drush untuk menginstal situs web dari profil ini (dan mungkin menggunakan fitur untuk sinkronisasi situs nanti). Ini memberi kami instalasi baru, tidak ada konten pengujian, tetapi berbagi pengaturan penting. Sinkronisasi konten umum akan dilakukan dengan migrasi, misalnya.

Saya mencoba mengelola beberapa instance D8 yang berbagi profil instal yang sama. Di mana tujuan akhir akan berbagi dan menyinkronkan konfigurasi situs. Dan setiap instalasi memiliki UUID situs yang berbeda. Saya tidak berhasil dalam menegakkan system.site uuidvariabel konfigurasi pada waktu instalasi (tentu saja saya dapat mengubah nilainya nanti, tetapi bagi saya sepertinya ini sudah terlambat, dan semua objek sudah dibuat dengan UUID yang berbeda, yang membuat sinkronisasi pertama menjadi mimpi buruk , di mana beberapa konten default harus dihapus, atau bahasa default merusak sinkronisasi karena tidak dapat dihapus, dll.).

Untuk menegakkan UUID ini saya mencoba menggunakan file settings.php yang dihasilkan dengan $config['system.site']['uuid']nilai di dalamnya, gagal besar (pengaturan itu sepenuhnya diabaikan, bahkan setelah instalasi situs).

Saya juga telah melihat profil penginstal konfigurasi , yang saya tidak sepenuhnya mengerti, terutama cara untuk mencampur solusi ini dengan profil instalasi lain.

Jadi pertanyaannya adalah, apa cara terbaik untuk menyebarkan situs baru dari profil pemasangan:

  • tanpa "kloning situs web" dan memanipulasi kesedihan SQL pada pembuatan situs (seperti pada pertanyaan situs kloning ).
  • dengan instalasi bersih baru (tanpa sampah konten pengembang), menggunakan konfigurasi dan kode yang diekspor saja
  • yang dapat mengelola instalasi default dan sinkronisasi nantinya
regilero
sumber

Jawaban:

3

Fitur dapat membantu melewati masalah UUID. Ini masih bermasalah, yang mencegah kita untuk sepenuhnya mengotomatiskan proses, tetapi setidaknya kita bisa mengubah dan memelihara konfigurasi secara manual.

Fitur masih membuat modul, ini mengekspor konfigurasi ke direktori config / install dari modul fitur yang diberikan. Ini akan diambil ketika Anda menginstal fitur, dan Anda dapat terus memperbarui konfigurasi situs Anda (sama dengan apa yang dilakukan oleh revert fitur drush lama) ketika fitur ekspor Anda berubah.

Anda juga dapat mengimpor konfigurasi secara langsung melalui drush, pastikan untuk menggunakan flag --partial, untuk menghindari konfigurasi utama yang tidak ada dalam folder config. Menggunakan --source Anda juga dapat menentukan lokasi folder konfigurasi khusus, sehingga Anda dapat melakukan sesuatu seperti drush cim --partial --source=docroot/modules/features/myfeature/config/install.

Balazs Dianiska
sumber
ok, jika saya mengerti dengan baik, Anda menggunakan fitur untuk menyinkronkan konfigurasi situs web pada fitur kunci tombol . Tanpa mengizinkan sinkronisasi penuh dari situs web yang dikloning.
regilero
2
Persis. Bagi kami masalah mendasar dengan sinkronisasi konfigurasi penuh adalah bahwa cukup memiliki hanya satu pengaturan yang dapat diubah admin, dan Anda tidak dapat lagi menyinkronkan, karena itu akan mengembalikan perubahan mereka. Memecahnya menjadi area fitur memungkinkan kita untuk a) memelihara set konfigurasi (sebagian, karena kita mengerti apa itu) dan b) tetap fleksibel pada sisa fitur dan bagaimana kita mengelola konfigurasi mereka.
Balazs Dianiska
Ok, ini mungkin bukan jawaban yang pasti, tetapi saya akan memberi Anda hadiah. Jika seseorang ingin menambahkan jawaban yang diperbarui nanti (karena semuanya bergerak) saya mungkin akan membuka kembali hadiah lain untuk itu.
regilero
1

Pilihan lain:

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

Berdasarkan petunjuk @Ivan Jaros, Anda dapat mengatur opsi konfigurasi tertentu saat memasang profil. Jelas, ini hanya berfungsi pada instalasi dan tidak setelah situs sudah diinstal.

Di file .install profil Anda, Anda dapat menambahkan pengaturan konfigurasi default di hook_install():

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

Saya sudah mencoba ini secara lokal dan itu berhasil. Saya dapat menarik konfigurasi dari situs lain ke situs lokal yang baru diinstal menggunakan kode di atas (dengan set UUID yang tepat) tanpa menggunakan drush csetuntuk mengubah situs UUID.

Agaknya, Anda dapat mengatur UUID Anda untuk diambil dari file di lingkungan Anda di suatu tempat, atau variabel lingkungan, atau layanan, dan dengan demikian semuanya akan sama di situs mana pun dengan profil yang diinstal.

Saya berharap untuk melakukan hal yang sama dari settings.phptetapi ConfigFactorykelas tidak tersedia pada saat itu dan seperti yang Anda tunjukkan dalam pertanyaan Anda pengaturan melalui $configdi settings.phptidak berpengaruh.

Jesse Boyd
sumber