2012-03-13 14 views
5

Estoy usando entornos en chef, y quiero usar listas de ejecución por entorno. El problema es que no quiero repetirme (como lo estoy haciendo ahora). Ejemplo:Chef: ¿Puedo compartir elementos comunes de la lista de ejecución por entorno?

{ 
    "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": { 

    } 
} 

¿Hay alguna manera de evitar repetir esto?

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

Solo quiero evitar que las listas de ejecución de entornos no se sincronicen y se rompan las implementaciones.

Respuesta

5

En este momento, no. Los roles son puramente declarativos y no dinámicos de esa manera. Puede crear un rol que incluya esos tres elementos e incluirlo en las listas de ejecución por entorno.

+1

No podría haber pedido un chico mejor para responder a mi pregunta, ¡gracias! – Kenny

0

Esto puede no ser posible en JSON, sin embargo, es posible si usa Ruby DSL para definir su rol.

Así es como su archivo de papel se vería así:

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 es su lista de recetas comunes.

Cuestiones relacionadas