2012-03-13 3 views
5

Używam środowisk w szefa kuchni i chcę korzystać z list uruchamianych w środowisku. Problem polega na tym, że nie chcę się powtarzać (tak jak teraz to robię). Przykład:Szef kuchni: Czy mogę udostępniać typowe elementy listy uruchamiania dla środowiska?

{ 
    "name": "myapp", 
    "default_attributes": { 
    }, 
    "json_class": "Chef::Role", 
    "env_run_lists": { 
    "production": [ 
     # Has less packages because services are spread across specialized nodes 
     "role[base]", 
     "recipe[mysql::client]", 
     "recipe[myapp]" 
    ], 
    "staging": [ 
     # Has less packages because services are spread across specialized nodes 
     "role[base]", 
     "recipe[mysql::client]", 
     "recipe[myapp]" 
    ], 
    "development": [ 
     "role[base]", 
     "recipe[mysql::client]", 
     "recipe[myapp]", 
     "role[utility]", 
     "role[cache]" 
    ] 
    }, 
    "run_list": [ 

    ], 
    "description": "The myapp.com core application role", 
    "chef_type": "role", 
    "override_attributes": { 

    } 
} 

Czy istnieje sposób na uniknięcie powtórzenia tego?

 "role[base]", 
     "recipe[mysql::client]", 
     "recipe[myapp]", 

prostu chcę uniknąć środowiskowych uruchomić list wypadnięciem z synchronizacją i łamiącym wdrożeń.

Odpowiedz

5

W tym czasie nie. Role są czysto deklaratywne, a nie dynamiczne w ten sposób. Można utworzyć rolę obejmującą te trzy elementy i uwzględnić ją na listach uruchamiania według środowiska.

+1

Nie można prosić o lepszego faceta, aby odpowiedzieć na moje pytanie - dzięki! – Kenny

0

To może nie być możliwe w JSON, jednak jest to możliwe, jeśli używasz Ruby DSL do zdefiniowania swojej roli.

ten sposób plik rola będzie wyglądać następująco:

name "myapp" 
description "Description of the role" 
base_run_list = [ "role[base]", "recipe[mysql::client]", "recipe[myapp]" ] 
env_run_lists "production" => base_run_list, "staging" => base_run_list , "development" => base_run_list + ["role[utility]", "role[cache]"] 

base_run_list jest lista wspólnych przepisów.