Instalar CoreOS sobre Bare Metal

Esta guía proporciona instrucciones para instalar Fedora CoreOS en bare metal. Hay disponibles tres opciones:

  • Instalar desde un ISO vivo

  • Instalar desde PXE

  • Instalar desde el contenedor

Requisito Previo

Antes de instalar FCOS, debe tener un archivo de configuración Ignition y alojarlo en algún sitio (por ejemplo usando python3 -m http.server). Si no tiene uno vea Producir un archivo Ignition.

Si tiene servidores con diferentes tipos y/o número de discos duros, debe crear configuraciones Ignition separadas para cada máquina (o clase de máquina). Un buen modelo es tener las partes comunes de la instalación factorizadas en una configuración de Ignition separada para que se pueda fusionar en la configuración personalizada por máquina (por medio de HTTP o en línea).

Instalar desde un ISO vivo

Para instalar FCOS en bare metal usando el ISO vivo interactivamente, siga estos pasos:

podman run --security-opt label=disable --pull=always --rm -v .:/data -w /data \
    quay.io/coreos/coreos-installer:release download -s stable -p metal -f iso

Tenga en cuenta que esto es justo usar `coreos-installer`como herramienta para descargar el ISO.

Usted puede arrancar el ISO vivo en modo BIOS heredado o UEFI, independientemente del modo que usará el sistema operativo una vez instalado.
  • Grabe el ISO a disco. En Linux y macOS, puede usar dd. En Windows, puede usar Rufus en modo "Imagen DD".

  • Arránquelo en el sistema objetivo. El ISO es capaz de levantar un sistema FCOS totalmente funcional puramente de la memoria (esto es, sin usar ningún almacenamiento en disco). Una vez arrancado, tendrá acceso a un símbolo del sistema bash.

  • Usted puede ejecutar ahora coreos-installer:

sudo coreos-installer install /dev/sda \
    --ignition-url https://example.com/example.ign

Una vez que se completa la instalación, puede simplemente hacer sudo reboot. Después del reinicio, empieza el primer proceso de arranque. Es en este momento en el que Ignition ingiere el archivo de configuración y aprovisiona al sistema como se especifica.

Para instalaciones ISO más avanzadas, incluyendo la automatización, vea abajo. Para más información sobre la imagen viva ISO, vea referencia de la imagen viva.

Compruebe coreos-installer install --help para más opciones sobre como instalar Fedora CoreOS.

Instalar desde la red

Arrancar la imagen PXE requiere al menos 2 Gb de RAM con el argumento de kernel coreos.live.rootfs_url y 4 Gb de otro modo. Puede instalar en modo heredado de arranque (BIOS) o en modo UEFI , sea cual sea el modo en el que se usará el sistema operativo una vez instalado.

Instalar desde PXE

Para instalar desde PXE, siga estos pasos:

  • Descargue un kernel FCOS PXE, initramfs y una imagen de rootfs:

podman run --security-opt label=disable --pull=always --rm -v .:/data -w /data \
    quay.io/coreos/coreos-installer:release download -f pxe
  • Siga este pxelinux.cfg de ejemplo para arrancar el instalador de imágenes con PXELINUX:

DEFAULT pxeboot
TIMEOUT 20
PROMPT 0
LABEL pxeboot
    KERNEL fedora-coreos-39.20240407.3.0-live-kernel-x86_64
    APPEND initrd=fedora-coreos-39.20240407.3.0-live-initramfs.x86_64.img,fedora-coreos-39.20240407.3.0-live-rootfs.x86_64.img coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://192.168.1.101:8000/config.ign
IPAPPEND 2

Para más detalles sobre como usar esta información, vea esta publicación en blog para probar una instalación PXE por medio de una Máquina Virtual local y libvirt. Para otras opciones de línea de comandos soportadas por el kernel, vea documentos del instalador coreos, pero tenga en cuenta que coreos-installer pxe customize (ver abajo) es más flexible. Para más sobre la imagen viva PXE, vea referencia de la imagen viva.

Instalar desde iPXE

Una máquina compatible con iPXE debe contar con un Script de Inicio relevante para recuperar y cargar artefactos FCOS.

El ejemplo de abajo muestra como cargar estos directamente desde la infraestructura de Fedora. Por razones de rendimiento y fiabilidad se recomienda duplicarlos en la infraestructura local y después modificar BASEURL según sea necesario.

#!ipxe

set STREAM stable
set VERSION 39.20240407.3.0
set INSTALLDEV /dev/sda
set CONFIGURL https://example.com/config.ign

set BASEURL https://builds.coreos.fedoraproject.org/prod/streams/${STREAM}/builds/${VERSION}/x86_64

kernel ${BASEURL}/fedora-coreos-${VERSION}-live-kernel-x86_64 initrd=main coreos.live.rootfs_url=${BASEURL}/fedora-coreos-${VERSION}-live-rootfs.x86_64.img coreos.inst.install_dev=${INSTALLDEV} coreos.inst.ignition_url=${CONFIGURL}
initrd --name main ${BASEURL}/fedora-coreos-${VERSION}-live-initramfs.x86_64.img

boot

Para otras opciones de línea de comando del kernel soportadas, vea los documentos de instalador coreos, pero tenga en cuenta que coreos-installer pxe customize (vea abajo) es más flexible. Para más información sobre la imagen PXE, vea la referencia de imagen viva.

Instalar desde el contenedor

Usted puede usar el contenedor coreos-installer desde un sistema existente para instalar en un dispositivo de bloque adjunto. Por ejemplo (substituir docker por podman si es necesario):

sudo podman run --pull=always --privileged --rm \
    -v /dev:/dev -v /run/udev:/run/udev -v .:/data -w /data \
    quay.io/coreos/coreos-installer:release \
    install /dev/vdb -i config.ign

En este ejemplo, coreos-installer descargará la última imagen metal FCOS estable y la instala en /dev/vdb. Después inyectará el archivo Ignition config.ign del directorio actual en la imagen. Utilice --help para ver todas las opciones disponibles.

Descargar y reflejar la imagen de metal

Algunas veces, es necesario descargar la imagen de metal con anticipación y luego pasarla localmente a coreos-installer para su instalación. Usted puede descargar la imagen de metal directamente desde la página de descarga FCOS o puede usar coreos-installer download.

Cuando instale por medio de ISO o PXE vivo, no es necesario descargar la imagen de metal. Ya es parte de esos entornos.

Hay dos imágenes metal: una para discos de 512 b por sector (etiquetada "Raw" en la página de descargas) y otra para discos nativos de 4k por sector (etiquetada "Raw (4K Native)"). A menos que sepa que desea utilizar un disco nativo 4k, utilice la 512 b que es la más común. Vea más información en esta página.

Para descargar la imagen metal nativa 4kn con coreos-installer download, use el modificador --format 4k.raw.xz.

La imagen metal usa un esquema de partición híbrido que soporta el arranque en BIOS y UEFI.

Cuando está finalmente preparado para instalar FCOS, puede apuntarlo a su imagen descargada usando coreos-installer install --image-url <LOCAL_MIRROR> o coreos-install --image-file <PATH>.

Personalizar la instalación

Los comandos coreos-installer iso customize y coreos-installer pxe customize se pueden usar para crear imágenes ISO y PXE personalizadas, con configuración específica del sitio, incluyendo la capacidad de llevar a cabo instalaciones desatendidas de Fedora CoreOS.

Cuando se arranca una imagen creada con coreos-installer pxe customize, la línea de comandos del kernel PXE o iPXE debe incluir los argumentos ignition.firstboot ignition.platform.id=metal. Si está corriendo en una máquina virtual, reemplace metal con la ID de plataforma de su plataforma, como qemu o vmware.

Por ejemplo:

# Crear customized.iso que:
# - Se instala automáticamente en /dev/sda
# - Aprovisiona el sistema instalado con config.ign
# - Configura el GRUB y el kernel instalado para usar una consola
#   principal gráfica y consola serie secundaria
# - Usa la configuración de red de static-ip.nmconnection
# - Confía en los certificados HTTPS firmados por ca.pem
# - Ejecuta post.sh después de instalar
coreos-installer iso customize \
    --dest-device /dev/sda \
    --dest-ignition config.ign \
    --dest-console ttyS0,115200n8 \
    --dest-console tty0 \
    --network-keyfile static-ip.nmconnection \
    --ignition-ca ca.pem \
    --post-install post.sh \
    -o custom.iso fedora-coreos-38.20230806.3.0-live.x86_64.iso
# Lo mismo, pero crea una imagen PXE initramfs personalizada
coreos-installer pxe customize \
    --dest-device /dev/sda \
    --dest-ignition config.ign \
    --dest-console ttyS0,115200n8 \
    --dest-console tty0 \
    --network-keyfile static-ip.nmconnection \
    --ignition-ca ca.pem \
    --post-install post.sh \
    -o custom-initramfs.img fedora-coreos-38.20230806.3.0-live-initramfs.x86_64.img

Detalles de las personalizaciones disponibles en documentación de coreos-installer.

Instalación ISO sobre varios hardware

Normalmente los sistemas de metal desnudo tendrán una diversidad de hardware – algunos sistemas pueden tener unidades NVMe /dev/nvme*, mientras que otros tienen /dev/sd* por ejemplo. Es casi seguro que tendrá que crear una plantilla con el valor de /dev/sda anterior.

Un enfoque útil es un script que genere un .iso por máquina. Si tiene una base de datos de hardware (un archivo de texto en git o base de datos relacional) entonces funcionará para generar un target-dell.ign y un target-hp.ign por máquina por ejemplo y especificar --dest-ignition junto con el --dest-device apropiado para generar fedora-coreos-install-dell.iso y fedora-coreos-install-hp.iso.

Alternativamente, en lugar de generar ISOs por máquina, puede tener un script --pre-install corriendo en un contenedor privilegiado que inspeccione el sistema objetivo y escriba la configuración de instalador apropiada en /etc/coreos/installer.d.

Instalar sobre iSCSI

Para instalar CoreOS sobre un dispositivo de arranque iSCSI, siga los mismos pasos descritos anteriormente para obtener el entorno vivo y añada los argumentos de kernel relacionados con iSCSI.

  • Monte el objetivo iSCSI desde el entorno vivo:

sudo iscsiadm -m discovery -t st -p 10.0.0.1
sudo iscsiadm -m node -T iqn.2023-10.coreos.target.vm:coreos -l
  • Añada los argumentos de kernel necesarios cuando ejecute coreos-installer:

Instalar a un objetivo iSCSI con iBFT

En una máquina completamente sin disco, los valores de objetivo iscsi e iniciador se pueden pasar a través de iBFT. Estos podrían incluirse en un script de arranque iPXE, por ejemplo:

---
#!ipxe
set initiator-iqn iqn.2023-11.coreos.diskless:testsetup
sanboot iscsi:10.0.0.1::::iqn.2023-10.coreos.target.vm:coreos
---
---
sudo coreos-installer install \
    /dev/disk/by-path/ip-10.0.0.1\:3260-iscsi-iqn.2023-10.coreos.target.vm\:coreos-lun-0 \
    --append-karg rd.iscsi.firmware=1 --append-karg ip=ibft \
    --console ttyS0 \
    --ignition-url https://example.com/example.ign
---
Instalar a un objetivo iSCSI con configuración manual
---
sudo coreos-installer install \
    /dev/disk/by-path/ip-10.0.0.1\:3260-iscsi-iqn.2023-10.coreos.target.vm\:coreos-lun-0 \
    --append-karg rd.iscsi.initiator=iqn.2024-02.com.yourorg.name:lun0 \
    --append-karg netroot=iscsi:iqn.2023-10.coreos.target.vm:coreos` \
    --console ttyS0 \
    --ignition-url https://example.com/example.ign
---

Todo esto también se puede configurar usando coreos-installer iso customize o coreos-installer pxe customize. (Vea la sección "Personalizar la instalación" más arriba).

Por ejemplo usando iBFT:

# Crear customized.iso el cual:
# - Monta automáticamente objetivos iSCSI usando mount-iscsi.sh
# - Aprovisiona los sistemas instalados con config.ign
# - Configura el sistema instalado para usar iBFT
coreos-installer iso customize \
    --pre-install mount-iscsi.sh \
    --dest-device /dev/disk/by-path/ip-10.0.0.1\:3260-iscsi-iqn.2023-10.coreos.target.vm\:coreos-lun-0 \
    --dest-ignition config.ign \
    --dest-karg-append rd.iscsi.firmware=1 \
    --dest-karg-append ip=ibft \
    -o custom.iso fedora-coreos-39.20240322.3.1-live.x86_64.iso

La bandera --pre-install se usa para ejecutar un script con comandos iscsiadm, --dest-device apunta al disco montado y después --dest-karg-append añade los argumentos de kernel necesarios.

Reinstalling Fedora CoreOS

You can use any of the methods described above to reinstall Fedora CoreOS on the same machine via the live environment.

Data persistence

The installer does not completely scrub the target disk. Thanks to Ignition’s filesystem-reuse semantics, if you apply a config with the exact same partition and filesystem settings as the first install, all previously stored data in additional partitions will still be available. This can be useful for persisting e.g. /var/lib/containers or /var/home between reinstalls. There are some restrictions, however. See the Using persistent state section for more information. You will also want to ensure the root filesystem is a fixed number at least 8 GiB as described in Configuring Storage so that data partitions are not accidentally overwritten.

Destination drive

Fedora CoreOS requires that only a single filesystem labeled boot exists. If multiple such filesystems are found on the first boot, provisioning will error out as a fail-safe. If reinstalling Fedora CoreOS on a different disk than the previous installation, make sure to wipe the previous disk using e.g. wipefs. For example, if reinstalling to /dev/sdb, but /dev/sda still contains the previous installation of FCOS, use wipefs -a /dev/sda in the installation environment.