2.4. Plantilla


La plantilla de kickstart le permite incluir variables, fragmentos y declaraciones de control de flujo tales como bucles for y declaraciones if en los archivos kickstart. Esto se realiza mediante la herramienta cheetah.
Hay una variedad de razones por las cuales el uso de plantillas puede ser útil:
  • Para reutilizar una sección específica de un kickstart, tal como una sección de particionamiento de disco, entre múltiples kickstarts.
  • Para realizar algunas acciones %post de forma consistente a través de varios kickstarts.
  • Para definir un fragmento a través de varios roles de servidor tales como un servidor DNS, un servidor proxy y un servidor de red. Por ejemplo, un servidor de red tiene el siguiente fragmento definido:
    httpd
    mod_ssl
    mod_python
    
    Copy to Clipboard Toggle word wrap
    Si desea crear un perfil de servidor de red, incluya el fragmento de servidor de red en la sección %package de su archivo Kickstart. Para que un perfil sea tanto servidor de red como servidor de proxy, incluya ambos fragmentos en la sección de paquetes. Si desea añadir otro paquete al fragmento de servidor de red, mod_perl por ejemplo, actualice el fragmento y todos los perfiles que lo están utilizando se actualizarán de forma dinámica.
Variables

La plantilla permite definir una variable que va a ser utilizada a través de un archivo kickstart. Las variables están sujetas a una forma de herencia que les permite establecerse en un nivel y sobrescribirse en niveles inferiores. Por lo tanto, si una variable se define a nivel del sistema, sobrescribirá la misma variable definida en el perfil o niveles de árbol kickstart. De la misma manera, si se define una variable en el nivel de perfil, sobrescribirá la misma variable definida en el nivel de árbol kickstart.

Nota

Observe que esas variables de árbol kickstart no pueden ser definidas para generar de forma automática árboles Kickstart, tales como los que se crearon durante la sincronización de satélite.
Fragmentos

Los fragmentos reutilizan partes del código entre varias plantillas kickstart. Estas pueden extender muchas líneas e incluir variables. Pueden incluirse en un perfil kickstart mediante el texto $SNIPPET('snippet_name'). Puede crear un fragmento para una lista de paquetes, para un %post script o para cualquier texto que normalmente se incluiría en un archivo kickstart.

Para manejar fragmentos, vaya a Sistemas Kickstart Fragmentos Kickstart.
La página de Fragmentos Kickstart muestra varios fragmentos predeterminados que no se pueden modificar, pero que están disponibles para cualquier organización. Los fragmentos predeterminados pueden utilizarse en kickstarts que han sido ya sea escritos o cargados al servidor de Satélite de RHN. Los fragmentos predeterminados se almacenan en el sistema de archivos del servidor satélite de RHN en /var/lib/cobbler/snippets/. Hay una plantilla del kickstart con asistente de estilo en /var/lib/rhn/kickstarts/wizard/, la cual explica los diferentes fragmentos y su uso.
El fragmento redhat_register es un fragmento predeterminado que sirve para registrar máquinas a un servidor de Satélite de RHN como parte de un kickstart. Utiliza una variable especial llamada redhat_management_key para registrar la máquina. Para usar el fragmento, establezca la variable redhat_management_key en cualquier sistema, perfil o nivel de distribución y luego añada $SNIPPET('redhat_register') a una sección de kickstart %post. Cualquier kickstart con asistente de estilo generado por el servidor de Satélite de RHN ya incluirá el fragmento en la sección %post.
La pestaña de Fragmentos personalizados le permite ver y editar fragmentos creados para ser usados por su organización. Para crear nuevos fragmentos haga clic en Crear nuevo fragmento. Los fragmentos personalizados se almacenan en el directorio /var/lib/rhn/kickstarts/snippets/. El servidor de Satélite de RHN almacena fragmentos para diferentes organizaciones en diferentes directorios, con el fin de que los fragmentos personalizados sean almacenados con un nombre de archivo similar al siguiente, donde 1 es la ID de la organización:
$SNIPPET('spacewalk/1/snippet_name')
Copy to Clipboard Toggle word wrap
Si no está seguro de qué texto usar para insertar el fragmento en el kickstart, busque la columna Macro fragmento en la lista de fragmentos o en la página de información de fragmentos.

Nota

Los fragmentos existen en un nivel global y no comparten la misma estructura de herencia que las variables. Sin embargo, se pueden usar variables dentro de fragmentos para cambiar la forma en que se comportan cuando diferentes sistemas solicitan un kickstart.

Figura 2.3. Fragmentos Kickstart

Escape de caracteres especiales

Los caracteres $ y # se utilizan durante el plantillado para especificar variables y controlar el flujo. Si necesita estos caracteres para cualquier otro propósito en un script, necesitará escaparlos para que no sean reconocidos como variables. Esto se puede realizar en varias formas:

  • Sitúe un carácter de barra invertida (\) antes de cada instancia de $ o # que necesite ser ignorada durante el emplantillado.
  • Envuelva el script entero en #raw ... #end raw
    Todos los scripts %pre y %post creados mediante los Kickstarts con asistentes de estilo vienen en #raw...#end raw por defecto. Esto se puede alternar mediante la casilla de verificación de Plantilla disponible durante la edición de un script %post o %pre.
  • Incluya #errorCatcher Echo en la primera línea del fragmento.

Ejemplo 2.1. Escape de caracteres especiales en plantillas

Este ejemplo describe cómo escapar caracteres especiales en plantillas de kickstart.
El siguiente script de bash necesita insertarse en una sección %post:
%post 
echo $foo > /tmp/foo.txt
Copy to Clipboard Toggle word wrap
Sin escapar $, el motor de plantilla tratará de hallar una variable llamada $foo y fallará debido a que foo no existe como variable.
La forma más sencilla de escapar el $ es utilizar un caracter de doble barra invertida (\):
%post 
echo \$foo > /tmp/foo.txt
Copy to Clipboard Toggle word wrap
Esto hará que \$foo se procese como $foo.
Un segundo método es el de envolver el script entero en #raw ... #end raw, así
%post 
#raw  
echo $foo > /tmp/foo.txt 
#end raw
Copy to Clipboard Toggle word wrap
El método final es simplemente incluir #errorCatcher Echo en la primera línea de su plantilla kickstart. De este modo le pide al motor de plantilla que ignore las variables inexistentes y que imprima el texto tal como está. Esta opción ya se incluye en los kickstart con asistente de estilo, pero también se puede incluir en los kickstart crudos que usted mismo crea.
Volver arriba
Red Hat logoGithubredditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar. Explore nuestras recientes actualizaciones.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

Theme

© 2025 Red Hat