Añadir extensiones de SO al huésped del sistema

Fedora CoreOS mantiene la imagen base los más sencilla y pequeña posible por razones de seguridad y mantenimiento. Esto es por lo que usted debería, en general, preferir la utilización de contenedores podman sobre el software de capas. Sin embargo, en algunos casos es necesario añadir software al propio sistema operativo base. Por ejemplo, los controladores o el software VPN son candidatos potenciales, ya que son más difíciles de contener y pueden incorporarse como extensiones del sistema operativo.

Si va a realizar cambios significativos en el sistema operativo base, puede considerar usar Fedora Bootc, que se centra en compilaciones personalizadas del sistema operativo derivadas de una imagen base inicial. Encontrará más información sobre la relación entre Fedora CoreOS y Fedora Bootc en nuestras preguntas frecuentes.

Para añadir software adicional a un sistema Fedora CoreOS, puede usar rpm-ostree install. Considere estos paquetes como «extensiones»: amplían la funcionalidad del sistema operativo base en lugar de, por ejemplo, proporcionar entornos de ejecución para las aplicaciones de usuario. Dicho esto, no hay restricciones sobre qué paquetes se pueden instalar. Por defecto, los paquetes se descargan desde Repositorios Fedora.

Para iniciar la estratificación de un paquete, usted necesita escribir una unidad systemd que ejecute el comando rpm-ostree para instalar el paquete(s) deseado. Los cambios se aplican a una implementación nueva y es necesario reiniciar para que surtan efecto.

Ejemplo: Estratificar vim y establecerlo como editor predeterminado

Fedora CoreOS incluye como editores de texto nano y vi, con el primero establecido como predeterminado (vea el correspondiente cambio Fedora).

Este ejemplo muestra como instalar el editor de texto vim completo y como configurarlo como predeterminado para todos los usuarios estableciendo la configuración requerida en /etc/profile.d/.

En el futuro, contaremos con un método más compatible con Ignition para lograr esto, con garantías más sólidas. Consulte los problemas originales butane#81 y fedora-coreos-tracker#681 para obtener más información.
variant: fcos
version: 1.6.0
systemd:
  units:
    # Installing vim as a layered package with rpm-ostree
    - name: rpm-ostree-install-vim.service
      enabled: true
      contents: |
        [Unit]
        Description=Layer vim with rpm-ostree
        Wants=network-online.target
        After=network-online.target
        # We run before `zincati.service` to avoid conflicting rpm-ostree
        # transactions.
        Before=zincati.service
        ConditionPathExists=!/var/lib/%N.stamp

        [Service]
        Type=oneshot
        RemainAfterExit=yes
        # `--allow-inactive` ensures that rpm-ostree does not return an error
        # if the package is already installed. This is useful if the package is
        # added to the root image in a future Fedora CoreOS release as it will
        # prevent the service from failing.
        ExecStart=/usr/bin/rpm-ostree install -y --allow-inactive vim
        ExecStart=/bin/touch /var/lib/%N.stamp
        ExecStart=/bin/systemctl --no-block reboot

        [Install]
        WantedBy=multi-user.target
storage:
  files:
    # Set vim as default editor
    # We use `zz-` as prefix to make sure this is processed last in order to
    # override any previously set defaults.
    - path: /etc/profile.d/zz-default-editor.sh
      overwrite: true
      contents:
        inline: |
          export EDITOR=vim