Flatcar propose les fichiers butane / ignition pour l’auto-provisioning, les déploiements en masse, mais pour une simple petite machine virtuelle cela peut être considéré comme overkill. Voici donc quelques commandes que j’exécute manuellement.

systemd-sysext

docker-compose

  • mkdir -p /etc/sysupdate.docker-compose.d
    mkdir -p /opt/extensions/docker-compose
      
    cat << 'EOF' | tee /etc/sysupdate.docker-compose.d/docker-compose.conf
    [Transfer]
    Verify=false
      
    [Source]
    Type=url-file
    Path=https://extensions.flatcar.org/extensions
    MatchPattern=docker-compose-@v-%a.raw
      
    [Target]
    InstancesMax=3
    Type=regular-file
    Path=/opt/extensions/docker-compose
    CurrentSymlink=/etc/extensions/docker-compose.raw
    EOF
      
    /usr/lib/systemd/systemd-sysupdate -C docker-compose update
    reboot
      
    systemctl enable --now docker
    
    • Permet d’installer docker-compose via systemd-sysupdate, et donc de bénéficier des mises à jour automatique, au même rythme que les releases flatcar.

tailscale

  • mkdir -p /etc/sysupdate.tailscale.d
    mkdir -p /opt/extensions/tailscale
      
    cat << 'EOF' | tee /etc/sysupdate.tailscale.d/tailscale.conf
    [Transfer]
    Verify=false
      
    [Source]
    Type=url-file
    Path=https://extensions.flatcar.org/extensions
    MatchPattern=tailscale-@v-%a.raw
      
    [Target]
    InstancesMax=3
    Type=regular-file
    Path=/opt/extensions/tailscale
    CurrentSymlink=/etc/extensions/tailscale.raw
    EOF
      
    /usr/lib/systemd/systemd-sysupdate -C tailscale update
    reboot
      
    systemctl enable --now tailscaled
    tailscale up
    
    • Permet d’installer tailscale via systemd-sysupdate.

python

  • echo "python" | tee -a /etc/flatcar/enabled-sysext.conf
    
    • Permet d’installer python3. Nécessite (à ce jour) la configuration réseau statique car pas de DHCP au démarrage.

grub.cfg

  • /oem/grub.cfg
      
    set linux_append="$linux_append ip=${STATIC_IP}::${STATIC_GW}:${STATIC_SUBNETMASK}::eth0:none:${STATIC_NAMESERVER}"
    
    • Permet de remplacer la configuration réseau DHCP au démarrage par une configuration statique (par ex. si DHCP indisponible). Utile pour le téléchargement des extensions sinon plantage.