Guía de configuración del cookbook ruby_rbenv para Chef

Estructura del repositorio

La organización interna del proyecto ruby_rbenv se distribuye de la siguiente manera:

ruby_rbenv/
├── attributes/
│   └── default.rb
├── Berksfile
├── CHANGELOG.md
├── chefignore
├── CONTRIBUTING.md
├── Gemfile
├── LICENSE
├── metadata.rb
├── README.md
├── recipes/
│   ├── default.rb
│   ├── global.rb
│   ├── install.rb
│   ├── plugin.rb
│   └── ruby.rb
├── resources/
│   ├── install.rb
│   └── plugin.rb
└── spec/
    ├── default_spec.rb
    └── spec_helper.rb

Componentes principales

  • attributes/: Contiene los archivos de atributos predeterminados que establecen los valores inciiales de configuración del cookbook.
  • recipes/: Alberga las recetas de Chef que ejecutan las distintas fases de despliegue y configuración.
  • resources/: Define recursos personalizados de Chef para gestionar instalaciones de Ruby y extensiones de rbenv.
  • spec/: Incluye las pruebas con ChefSpec para validar el comportamiento del cookbook.

Receta de entrada: default.rb

El punto de partida del cookbook se encuentra en recipes/default.rb. A continuación se muestra una versión refactorizada de su lógica:

# recipes/default.rb

# Ejecutar la instalación base del gestor de versiones
run_context.include_recipe('ruby_rbenv::install')

# Definir la versión global de Ruby
run_context.include_recipe('ruby_rbenv::global')

# Iterar sobre las versiones de Ruby solicitadas
node['ruby_rbenv']['rubies'].each_pair do |ver, opts|
  rbenv_ruby ver do
    opts.each { |k, v| send(k, v) }
  end
end

# Desplegar los complementos configurados
node['ruby_rbenv']['plugins'].each do |ext|
  rbenv_plugin ext['identifier'] do
    repository ext['source_url']
    reference ext['branch']
  end
end

Descripción de operaciones

  • Despliegue de rbenv: Se invoca la receta install para preparar el entorno del gestor de versiones.
  • Versión global: La receta global asigna qué interpretador de Ruby será el predeterminado en el sistema.
  • Versiones específicas: Se recorrre el hash de versiones declarado en los atributos y se instala cada una con sus opciones.
  • Extensiones: Se itera sobre la lista de complementos, clonando cada repositorio desde la URL y referencia Git indicadas.

Atributos por defecto: default.rb

La configuración base del cookbook reside en attributes/default.rb. A continuación se presenta una variante renombrada:

# attributes/default.rb

default['ruby_rbenv']['user'] = 'root'
default['ruby_rbenv']['group'] = 'root'
default['ruby_rbenv']['root_path'] = '/usr/local/rbenv'
default['ruby_rbenv']['rubies'] = { '3.1.2' => {} }
default['ruby_rbenv']['global'] = '3.1.2'
default['ruby_rbenv']['plugins'] = [
  {
    'identifier' => 'ruby-build',
    'source_url' => 'https://github.com/rbenv/ruby-build.git',
    'branch' => 'master'
  }
]

Parámetros relevantes

  • Usuario y grupo: Determinan bajo qué identidad se ejecutan las instalaciones.
  • Ruta raíz: Indica el directorio donde reside la instalación de rbenv.
  • Versiones de Ruby: Especifica qué interpretadores instalar junto con sus opciones.
  • Versión global: Establece el interpretador que estará disponible por defecto en el PATH.
  • Complementos: Lista las extensiones adicionales con su identificador, repositorio Git y rama de referencia.

Etiquetas: Chef Ruby rbenv Chef Cookbook ruby-build

Publicado el 6-26 16:08