template for files code linux templates configuration puppet

linux - for - Cómo usar una plantilla para el archivo de configuración en Puppet



for erb (1)

Soy nuevo en Puppet y estoy escribiendo un módulo para configurar los archivos de configuración. El problema es que cuando varios clientes utilizarán mi módulo, tendrán que editarlo de acuerdo con su sistema. He oído que las plantillas son una forma de resolver este problema. Pero no puedo obtener cómo usar una plantilla para configurar el archivo de configuración.

Si alguno de ustedes puede darme un ejemplo simple de seguir, usar plantillas para configurar archivos sería realmente útil. Por ejemplo, ¿cómo puedo configurar el archivo de configuración predeterminado disponible para los sitios de Apache usando una plantilla, o dar cualquier otro ejemplo que crea que ayudará a un nuevo usuario de títeres? Por cierto, estoy en la máquina Ubuntu.


Los documentos de PuppetLabs sobre el uso de plantillas de marionetas tienen un ejemplo de una configuración de Apache para un sitio de Trac. Esto debería ser suficiente para comenzar.

Por solicitud de OP, aquí hay un ejemplo simple. Estoy usando NTP en lugar de la configuración predeterminada de Apache, ya que es un archivo bastante grande y complejo. NTP es mucho más simple.

El directorio se ve así:

/etc/puppet/modules/ntp/manifests /templates

Contenidos parciales /etc/puppet/modules/ntp/manifests/init.pp (solo la parte que define la plantilla):

$ntp_server_suffix = ".ubuntu.pool.ntp.org" file { ''/etc/ntp.conf'': content => template(''ntp/ntp.conf.erb''), owner => root, group => root, mode => 644, }

Contenido de /etc/puppet/modules/ntp/templates/ntp.conf.erb :

driftfile /var/lib/ntp/drift <% [1,2].each do |n| -%> server <%=n-%><%=@ntp_server_suffix%> <% end -%> restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict 127.0.0.1

Cuando se ejecuta con títere esto dará como resultado un /etc/ntp.conf que se /etc/ntp.conf así:

driftfile /var/lib/ntp/drift server 1.ubuntu.pool.ntp.org server 2.ubuntu.pool.ntp.org restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict 127.0.0.1

Esto demuestra algunos conceptos diferentes:

  1. Las variables definidas en el manifiesto de marionetas (como $ntp_server_suffix pueden accederse como variables de instancia ( @ntp_server_suffix ) en la plantilla
  2. Los bucles y otros códigos ruby ​​se pueden usar en plantillas erb
  3. El código entre <% y %> es ejecutado por ruby
  4. El código entre <%= y %> se ejecuta y sale por ruby
  5. El código entre <%= y -%> se ejecuta y se envía por ruby ​​y el carácter de nueva línea final se suprime.

Espero que esto te ayude a entender las plantillas.