Symfony 2 - konfiguracja wielu serwerów

Zaczynamy adaptować Symfony 2 do projektów tutaj, co jest świetne, ale jest pewne wyzwanie, nad którym pracuję, że prawie się udało, ale nie do końca.

Symfony traktuje koncepcję środowiska jako oddzielne środowisko wykonawcze na jednym serwerze. Jest to świetne, ponieważ można przełączać między runtime'ami z różnymi kontrolerami frontowymi (web) lub przy użyciu przełącznika env (cli) z kaprysem.

Nasz kod jest jednak wdrażany na wielu serwerach w ramach procesu rozwoju. Każdy ma lokalną maszynę wirtualną, a następnie kod rozprzestrzenia się poprzez integrację, kontrolę jakości, stopniowanie i wreszcie produkcję.

Nasza koncepcja środowiska to serwer (wirtualny lub fizyczny). Oto cele w tej niestandardowej konfiguracji

Zachowaj funkcjonalność ootb Symfony w odniesieniu do przełączania środowiska wykonawczegoZezwalaj na konfigurację publiczną (np. Kontrolowaną przez programistów) na serwerZachowaj konfigurację prywatną (tzn. Kontrolowaną przez sysad) na serwerBędzie działać zarówno w sieci, jak i cli

Oznacza to, że nie możemy polegać tylko na 100%parameters.ini lub dowolny plik o nazwie statycznej, ponieważ programista będzie musiał kontrolować konfigurację każdego serwera, a wszystkie te pliki będą mieszkać obok siebie w git.

Więc, co bym zrobiłlubić to zrobić. Dodaj nową wartość do parameters.ini, która ustawia środowisko serwera. Coś takiego

app / config / parameters.ini

[parameters]
    server="int"

Następnie w jądrze załaduj dodatkowy plik konfiguracyjny oparty na tej wartości. Na przykład chciałbym, żeby to zadziałało, ale nie działa (ponieważ kontener nie istnieje jeszcze na tym etapie)

app / AppKernel.php

public function registerContainerConfiguration(LoaderInterface $loader)
{
  $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');

  // Per-server config
  $server = $this->getContainer()->getParameter( 'server' );        
  if ( $server )
  {
    $loader->load(__DIR__.'/config/server/'.$server.'.yml');
  }
}

Umożliwiłoby to użycie pliku takiego jakapp / config / server / int.yml programista może użyć do kontrolowania wartości konfiguracyjnych innych niż prywatne (tj. nie parametry.ini).

Dziękuję za przeczytanie i daj mi znać, jeśli coś jest mylące.

EDYTOWAĆ

Dla wyjaśnienia rzeczy Iżargon używać lub polegać na

* nix zmienne środowiskowe z profilu użytkownika lub poprzezexport. Czemu? Integracja, kontrola jakości i etapowanie mogą znajdować się w tym samym poluWszystko w konfiguracji vhost (nie działa dla cli)Plik o nazwie statycznej (np. Coś o nazwieserver.ini nie zadziała)