Product SiteDocumentation Site

12.3. Instal·lació automatitzada

Els administradors de Falcot Corp, com molts altres administradors de grans serveis de TI, necessiten eines per instal·lar (o reinstal·lar) ràpidament, i automàticament si és possible, les seves noves màquines.
Aquests requisits es poden complir amb una àmplia gamma de solucions. D'una banda, eines genèriques com SystemImager ho gestionen mitjançant la creació d'una imatge basada en una màquina de plantilles, llavors es desplega aquesta imatge als sistemes de destinació; a l'altre extrem de l'espectre, l'instal·lador estàndard de Debian es pot «preseed» (“pre-sembrar”) amb un fitxer de configuració que dona les respostes a les preguntes plantejades durant el procés d'instal·lació. A mig camí, una eina híbrida com FAI («Fully Automatic Installer» o “instal·lador completament automatitzat”) instal·la màquines utilitzant el sistema de paquets, però també utilitza la seva pròpia infraestructura per a tasques que són més específiques per a desplegaments massius (com ara inici, particionat, configuració, etc.).
Cadascuna d'aquestes solucions té els seus avantatges i inconvenients: SystemImager treballa independentment de qualsevol sistema de paquets en particular, fet que li permet gestionar grans conjunts de màquines utilitzant diverses distribucions de Linux diferents. També inclou un sistema d'actualització que no requereix una reinstal·lació, però aquest sistema d'actualització només pot ser fiable si les màquines no es modifiquen independentment; en altres paraules, l'usuari no ha d'actualitzar cap programari pel seu compte, ni instal·lar qualsevol altre programari. De la mateixa manera, les actualitzacions de seguretat no han de ser automatitzades, perquè han de passar per la imatge de referència centralitzada mantinguda per SystemImager. Aquesta solució també requereix que les màquines destí siguin homogènies, altrament s'haurien de mantenir i gestionar moltes imatges diferents (una imatge amd64 no encaixarà en una màquina de powerpc, etc.).
D'altra banda, una instal·lació automatitzada que utilitza debian-installer pot adaptar-se a les especificacions de cada màquina: l'instal·lador recollirà els paquets de nucli i programari apropiats dels repositoris pertinents, detectarà el maquinari disponible, particionarà tot el disc dur per aprofitar tot l'espai disponible, instal·larà el sistema Debian corresponent i configurarà un carregador adequat. No obstant això, l'instal·lador estàndard només instal·larà versions estàndard de Debian, amb el sistema base i un conjunt de “tasques” preseleccionades; això exclou la instal·lació d'un sistema particular amb aplicacions no empaquetades. Satisfer aquesta necessitat requereix personalitzar l'instal·lador... Afortunadament, l'instal·lador és molt modular, i hi ha eines per automatitzar la major part del treball necessari per a aquesta personalització, el més important és el simple-cdd (CDD és un acrònim de «Custom Debian Derivative» o “Derivat de Debian personalitzat”). Malgrat que aquesta solució, però, només gestiona instal·lacions inicials; això normalment no és un problema, ja que les eines APT permeten un desplegament eficient d'actualitzacions més endavant.
Només donarem una visió general aproximada de FAI, i saltarem el SystemImager completament (que ja no és a Debian, però disponible en un paquet de tercers), per tal de centrar-nos més en debian-installer i simple-cdd, que són més interessants en contextos de “només Debian”.

12.3.1. Fully Automatic Installer (FAI)

Fully Automatic Installer o “instal·lador completament automatitzat” és probablement el sistema de desplegament automàtic més antic de Debian, fet que explica el seu estatus com a referència; però la seva naturalesa molt flexible només compensa la complexitat que implica.
FAI requereix un sistema de servidor per emmagatzemar la informació de desplegament i permetre que les màquines de destinació arrenquin de xarxa. Aquest servidor requereix el paquet fai-servidor (o fai-quickstart, que també porta els elements necessaris per a una configuració estàndard).
FAI utilitza un enfocament específic per definir els diversos perfils instal·lables. En lloc de simplement duplicar una instal·lació de referència, FAI és un instal·lador complet, totalment configurable a través d'un conjunt de fitxers i scripts emmagatzemats al servidor; la ubicació per defecte /srv/fai/config/ d'acord amb /etc/fai/nfsroot.conf no es crea automàticament, així que l'administrador ha de crear-la juntament amb els fitxers pertinents. La majoria de les vegades, aquests fitxers es personalitzaran a partir de fitxers d'exemple disponibles a la documentació al paquet fai-doc, i més concretament al directori /usr/share/doc/fai-doc/examples/simple/.
Una vegada que els perfils estan definits, l'ordre fai-setup genera els elements necessaris per iniciar una instal·lació FAI; això significa principalment preparar o actualitzar un sistema mínim (NFS-root) utilitzat durant la instal·lació. Una alternativa és generar un CD d'arrencada dedicat amb fai-cd.
La creació de tots aquests fitxers de configuració requereix una certa comprensió de la manera en què funciona FAI. Un procés d'instal·lació típic consisteix en els següents passos:
  • descarregar un nucli de la xarxa i arrencar-lo;
  • muntar el sistema de fitxers arrel des d'NFS;
  • executar /usr/sbin/fai, que controla la resta del procés (els següents passos són iniciats per aquest script);
  • copiar l'espai de configuració des del servidor a /fai/;
  • executar fai-class. Els scripts /fai/class/[0-9][0-9]* s'executen per ordre, i retornen noms de “classes” que s'apliquen a la màquina que s'està instal·lant; aquesta informació servirà com a base per als següents passos. Això permet una certa flexibilitat en la definició dels serveis per instal·lar i configurar.
  • recopilar una sèrie de variables de configuració, depenent de les classes rellevants;
  • particionar els discos i formatar les particions, basant-se en la informació proporcionada a /fai/disk_config/classe;
  • muntar les citades particions;
  • instal·lar el sistema base;
  • “presembrar” la base de dades Debconf amb fai-debconf;
  • obtenir la llista de paquets disponibles per APT;
  • instal·lació dels paquets llistats a /fai/package_config/classe;
  • executar els scripts de postconfiguració, /fai/scripts/classe/[0-9][0-9]*;
  • desar els registres de la instal·lació, desmuntar les particions i reiniciar.

12.3.2. Presembrar el Debian-Installer

Després de tot, la millor eina per instal·lar sistemes Debian hauria de ser lògicament l'instal·lador oficial de Debian. Aquesta és la raó per la qual, des del seu inici, debian-installer ha estat dissenyat per a un ús automatitzat, aprofitant la infraestructura proporcionada per debconf. Aquest últim permet, d'una banda, reduir el nombre de preguntes plantejades (les preguntes ocultes utilitzaran la resposta per defecte proporcionada), i per una altra, proporcionar per separat les respostes per defecte, de manera que la instal·lació pot ser no interactiva. Aquesta última característica es coneix com «preseeding» o “presembrar”.

12.3.2.1. Ús d'un fitxer de presembrat

Hi ha diversos llocs d'on l'instal·lador pot obtenir un fitxer de presembrat:
  • a l'initrd usat per iniciar la màquina; en aquest cas, el presembrat es produeix just al principi de la instal·lació, i així totes les preguntes es poden evitar. El fitxer només s'ha de dir preseed.cfg i ha d'estar emmagatzemat a l'arrel de l'initrd.
  • en el suport d'arrencada (CD o llapis USB); el presembrat es produeix tan aviat com el suport està muntat, fet que significa just després de les preguntes sobre el llenguatge i la disposició del teclat. El paràmetre d'arrencada preseed/file es pot utilitzar per indicar la ubicació del fitxer de presembrat (per exemple, /cdrom/preseed.cfg quan la instal·lació es fa des d'un CD-ROM, o /hd-media/preseed.cfg en el cas de llapis USB).
  • des de la xarxa; el presembrat només es dona després que la xarxa estigui (automàticament) configurada; el paràmetre d'arrencada pertinent és llavors preseed/url=http://servidor/preseed.cfg (HTTPS, FTPS, SFTP, etc. no estan suportats).
A primera vista, incloure el fitxer de presembrat a l'initrd sembla la solució més interessant; no obstant això, rarament s'utilitza a la pràctica, perquè generar un instal·lador initrd és bastant complex. Les altres dues solucions són molt més comunes, especialment perquè els paràmetres d'arrencada proporcionen una altra manera de presembrar les respostes a les primeres preguntes del procés d'instal·lació. La manera habitual d'estalviar-se la molèstia d'escriure aquests paràmetres d'arrencada a mà en cada instal·lació és desar-los a la configuració d'isolinux (en el cas de CD-ROM) o syslinux (llapis USB).

12.3.2.2. Creació d'un fitxer de presembrat

Un fitxer de presembrat és un fitxer de text pla, on cada línia conté la resposta a una pregunta de Debconf. Una línia es divideix entre quatre camps separats per espais en blanc (espais o tabuladors), com a, per exemple, d-i mirror/suite string stable:
  • el primer camp és el "propietari" de la pregunta; "d-i" s'utilitza per a les preguntes rellevants per a l'instal·lador, però també pot ser un nom de paquet per a les preguntes procedents dels paquets de Debian;
  • el segon camp és un identificador per a la pregunta (el nom de la plantilla);
  • tercer, el tipus de pregunta;
  • el quart i l'últim camp conté el valor de la resposta. Cal tenir en compte que s'ha de separar del tercer camp amb un sol espai; si hi ha més d'un, els següents caràcters d'espai es consideren part del valor.
La manera més simple d'escriure un fitxer de presembrat és instal·lar un sistema a mà. Llavors debconf-get-selections --installer proporcionarà les respostes relatives a l'instal·lador. Es poden obtenir respostes sobre altres paquets amb debconf-get-selections. No obstant això, una solució més neta és escriure el fitxer de presembrat a mà, començant per un exemple i la documentació de referència: amb aquest enfocament, només es poden plantejar preguntes on la resposta per defecte ha de ser canviada; utilitzant el paràmetre d'arrencada priority=critical s'indica a Debconf de fer només preguntes crítiques, i utilitzar la resposta per defecte per a la resta.
Preconfigurar un valor en un fitxer «preseed» indica automàticament a l'instal·lador de Debian que no faci aquesta pregunta. Això passa perquè carregar el fitxer «preseed» no només estableix el/s valor/s donat/s, sinó que també marca cadascun dels diàlegs afectats com a “vistos” per l'usuari. Per tant, és possible preestablir la resposta d'una pregunta i tot i així presentar el diàleg a l'usuari reiniciant l'indicador «seen». Tingueu en compte que l'ordre en aquest cas és important i que el valor s'ha d'establir abans de marcar el diàleg a «unseen» (no vist) com es mostra en el següent exemple:
d-i netcfg/hostname string worker
d-i netcfg/hostname seen false

12.3.2.3. Creació un suport d'arrencada personalitzat

Saber on emmagatzemar el fitxer de presembrat està molt bé, però la ubicació no ho és tot: cal, d'una manera o una altra, alterar el mitjà d'arrencada d'instal·lació per canviar els paràmetres d'arrencada i afegir el fitxer de presembrat.
12.3.2.3.1. Arrencada des de la xarxa
Quan un ordinador s'inicia des de la xarxa, el servidor que envia els elements d'iniciació també defineix els paràmetres d'arrencada. Per tant, el canvi s'ha de fer en la configuració de PXE del servidor d'arrencada; més específicament, al fitxer de configuració /tftpboot/pxelinux.cfg/default. La configuració de l'arrencada de xarxa és un requisit previ; vegeu la Guia d'Instal·lació per als detalls.
12.3.2.3.2. Preparació d'un llapis USB d'arrencada
Una vegada que s'ha preparat una llapis d'arrencada (vegeu Secció 4.1.2, «Arrencada des d'un llapis USB»), es necessiten algunes operacions addicionals. Suposant que el contingut del llapis està disponible sota /media/usbdisk/, copieu el fitxer de «preseed» a /media/usbdisk/preseed.cfg.
Si heu estat utilitzant una imatge ISO híbrida per a crear la memòria USB arrencable, llavors haureu d'editar /media/usbdisk/boot/grub/grub.cfg (per a la pantalla d'arrencada EFI):

Exemple 12.2. fitxer boot/grub/grub.cfg i els paràmetres de “presembrat”

menuentry --hotkey=i 'Install' {
    set background_color=black
    linux    /install.amd/vmlinuz preseed/file=/cdrom/preseed.cfg locale=en_US.UTF-8 keymap=us language=us country=US vga=788 --- quiet 
    initrd   /install.amd/initrd.gz
}
I heu d'editar /media/usbdisk/isolinux/isolinux.cfg (per a l'arrencada BIOS) o un dels fitxers que utilitza -p. ex. /media/usbdisk/isolinux/txt.cfg - per a afegir els paràmetres d'arrencada requerits:

Exemple 12.3. fitxer isolinux.cfg i paràmetres de “presembrat”

label install
        menu label ^Install
        kernel [...]
        append preseed/file=/cdrom/preseed.cfg locale=en_US.UTF-8 keymap=us language=us country=US vga=788 initrd=/install.amd/initrd.gz --- quiet
Si heu estat utilitzant la imatge de l'instal·lador hd-media d'una memòria USB personalitzada, editeu /media/usbdisk/syslinux.cfg i afegiu els paràmetres d'arrencada necessaris com es mostra a l'exemple següent:

Exemple 12.4. fitxer syslinux.cfg i paràmetres de presembrat

default vmlinuz
append preseed/file=/hd-media/preseed.cfg locale=en_US.UTF-8 keymap=us language=us country=US vga=788 initrd=initrd.gz  --
12.3.2.3.3. Creació d'una imatge de CD-ROM
Un llapis USB és un mitjà de lectura-escriptura, per la qual cosa és fàcil afegir un fitxer i canviar alguns paràmetres. En el cas d'un CD-ROM l'operació és més complexa ja que hem de regenerar una imatge ISO completa. Aquesta tasca és resolta per debian-cd, però aquesta eina és força difícil d'utilitzar: necessita un mirall local, i requereix una comprensió de totes les opcions proporcionades per /usr/share/debian-cd/CONF.sh; fins i tot llavors, make ha de ser invocat diverses vegades. /usr/share/debian-cd/README és per tant una lectura molt recomanada.
Dit això, debian-cd sempre funciona de manera similar: es genera un directori “imatge” amb el contingut exacte del CD-ROM, després es converteix en un fitxer ISO amb una eina com genisoimage, mkisofs o xorriso. El directori amb la imatge es finalitza després del pas make-image-trees de debian-cd. En aquest punt, s'insereix el fitxer de presembrat al directori apropiat (normalment $TDIR/$CODENAME/CD1/, on $TDIR i $CODENAME són paràmetres definits pel fitxer de configuració CONF.sh). El CD-ROM utilitza isolinux com el seu carregador d'arrencada, i el seu fitxer de configuració s'ha d'adaptar a partir del que debian-cd ha generat per tal d'inserir els paràmetres d'arrencada necessaris (els fitxers específics són $TDIR/$CODENAME/CD1/isolinux/isolinux.cfg i $TDIR/$CODENAME/CD1/boot/grub/grub.cfg tal i com es mostra més amunt). Llavors es pot reprendre el procés “normal” i podem continuar generant la imatge ISO amb make image CD=1 (o make images si es generen diversos CD-ROM).

12.3.3. Simple-CDD: la solució tot-en-un

Només utilitzar un fitxer de presembrat no és suficient per complir tots els requisits que poden aparèixer per a grans desplegaments. Tot i que és possible executar alguns scripts al final del procés d'instal·lació normal, la selecció del conjunt de paquets a instal·lar encara no és prou flexible (bàsicament, només es poden seleccionar “tasques”); i més important, això només permet instal·lar paquets oficials de Debian, i exclou els generats localment.
D'altra banda, debian-cd és capaç d'integrar paquets externs, i debian-installer es pot estendre inserint nous passos en el procés d'instal·lació. Combinant aquestes capacitats, hauria de ser possible crear un instal·lador personalitzat que satisfaci les nostres necessitats; fins i tot hauria de ser capaç de configurar alguns serveis després de desempaquetar els paquets necessaris. Afortunadament, això no és una mera hipòtesi, ja que això és exactament el que fa simple-cdd.
El propòsit d'aquesta eina és permetre a qualsevol crear fàcilment una distribució derivada de Debian seleccionant un subconjunt dels paquets disponibles, preconfigurant-los amb Debconf, afegint programari específic, i executant scripts personalitzats al final del procés d'instal·lació. Això coincideix amb la filosofia del "sistema operatiu universal", ja que qualsevol pot adaptar-lo a les seves pròpies necessitats.

12.3.3.1. Creació de perfils

Simple-CDD defineix “perfils” que coincideixen amb el concepte de “classes” de FAI, i una màquina pot tenir diversos perfils (determinats en el moment de la instal·lació). Un perfil es defineix per un conjunt de fitxers profiles/perfil.*:
  • el fitxer .description conté una descripció d'una línia per al perfil;
  • el fitxer .packages llista els paquets que s'instal·laran automàticament si el perfil està seleccionat;
  • el fitxer .downloads llista els paquets que s'emmagatzemaran als mitjans d'instal·lació, però no necessàriament instal·lats;
  • el fitxer .preseed conté informació de presembrat per a les preguntes Debconf (per a l'instal·lador i/o per als paquets);
  • el fitxer .postinst conté un script que s'executarà al final del procés d'instal·lació;
  • finalment, el fitxer .conf permet canviar alguns paràmetres basats en els perfils a ser inclosos en una imatge.
El perfil default té un paper particular, ja que sempre està seleccionat; conté el mínim necessari perquè el Simple-CDD pugui funcionar. L'única cosa que normalment es personalitza en aquest perfil és el paràmetre preseed de simple-cdd/profiles: això permet evitar la pregunta, introduïda per Simple-CDD, sobre quins perfils s'han d'instal·lar.
Adoneu-vos-en que les ordres s'hauran d'invocar des del directori pare del directori profiles.

12.3.3.2. Configuració i ús de build-simple-cdd

El Simpe-CDD requereix molts paràmetres per operar completament. Sovint es recolliran en un fitxer de configuració, que es pot indicar a build-simple-cdd amb l'opció --conf, però també es poden especificar mitjançant paràmetres dedicats passats a build-simple-cdd. Aquí hi ha una vista general de com es comporta aquesta ordre i com s'utilitzen els seus paràmetres:
  • el paràmetre profiles llista els perfils que s'inclouran a la imatge CD-ROM generada;
  • Basant-se en la llista de paquets requerits, Simple-CDD descarrega els fitxers apropiats del servidor esmentat a server, i els recull en un mirall parcial (que més tard es passarà a debian-cd);
  • els paquets personalitzats esmentats a local_packages també seran inclosos en aquest mirall local;
  • debian-cd s'executa llavors (des d'una ubicació predeterminada que es pot configurar amb la variable debian_cd_dir), amb la llista de paquets a incloure;
  • Una vegada que debian-cd ha preparat el seu directori, Simple-CDD aplica alguns canvis a aquest directori:
    • els fitxers que contenen els perfils s'afegeixen en un subdirectori simple-cdd (que apareixerà al CD-ROM);
    • també s'hi afegeixen altres fitxers llistats al paràmetre all_extras;
    • els paràmetres d'arrencada s'ajusten per habilitar el presembrat. Les preguntes relatives a la llengua i el país es poden evitar si la informació requerida s'emmagatzema a les variables language i country.
  • llavors debian-cd genera la imatge ISO final.

12.3.3.3. Generació d'una imatge ISO

Once we have written a configuration file and defined our profiles, the remaining step is to invoke build-simple-cdd --conf simple-cdd.conf. After a few minutes, we get the required image in images/debian-12-amd64-CD-1.iso.