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 sobre el software de capas.

Sin embargo, en algunos casos es necesario añadir software al SO base mismo. Por ejemplo, controladores o software de VPN son candidatos potenciales porque son más pesados para guardar en contenedores.

Para hacer esto, puede usar rpm-ostree install. Considere estos paquetes como "extensiones": ellos extienden la funcionalidad del SO base en lugar de, por ejemplo, proporcionar tiempos de ejecución para aplicaciones de usuario. Esto significa, que no hay restricciones en los paquetes que uno puede instalar actualmente. De modo predeterminado, los paquetes son descargados de los 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. De forma predeterminada, con rpm-ostree install, los cambios quedan en cola para el próximo arranque. Se puede usar la opción -A/--apply-live para aplicar los cambios en vivo y hacerlos persistentes.

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/.

In the future, we will have a more Ignition-friendly method of doing this with stronger guarantees. See upstream issues butane#81 and fedora-coreos-tracker#681 for more information.
variant: fcos
version: 1.5.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 --apply-live --allow-inactive vim
        ExecStart=/bin/touch /var/lib/%N.stamp

        [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