Vue normale

Hier — 23 décembre 2024Flux principal

Créer une image ISO en ligne de commande avec OSCDIMG.exe

23 décembre 2024 à 14:35

OSCDIMG.exe est un utilitaire en ligne de commande fourni par Microsoft, permettant de créer des fichiers image ISO. Il est inclus dans le Windows Assessment and Deployment Kit (ADK), qui remplace le Windows Automated Installation Kit (AIK). Cet outil est particulièrement utile pour automatiser la création d’images ISO, notamment dans des environnements de virtualisation ou de déploiement.

Installation de l’ADK et d’OSCDIMG.exe

  1. Téléchargement de l’ADK :
    • Rendez-vous sur le site officiel de Microsoft pour télécharger la version de l’ADK correspondant à votre version de Windows.
    • Assurez-vous de sélectionner l’option “Outils de déploiement” lors de l’installation, car c’est elle qui contient OSCDIMG.exe.
  2. Vérification de l’installation :
    • Par défaut, OSCDIMG.exe est installé dans le répertoire C:\Program Files (x86)\Windows Kits\<version>\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg\.
    • Ajoutez ce chemin à la variable d’environnement PATH pour pouvoir exécuter OSCDIMG.exe depuis n’importe quel emplacement dans l’invite de commandes.

Création d’une image ISO

Une fois l’ADK installé, vous pouvez créer une image ISO à partir d’un répertoire source en utilisant la commande suivante :

oscdimg -n -d -m -l"Nom_Volume" C:\Chemin\Vers\RepertoireSource C:\Chemin\Vers\VotreImage.iso

Explication des options :

  • -n : Autorise les noms de fichiers longs.
  • -d : Préserve la casse des noms de fichiers.
  • -m : Ignore la limite de taille maximale pour l’image ISO.
  • -l"Nom_Volume" : Définit le nom du volume de l’image ISO. Remplacez "Nom_Volume" par le nom souhaité.

Automatisation de la création d’images ISO

Pour automatiser la création d’une image ISO, vous pouvez intégrer la commande ci-dessus dans un script batch (.bat) et planifier son exécution à l’aide du Planificateur de tâches de Windows. Cela est particulièrement utile si le contenu du répertoire source change fréquemment et que vous devez générer régulièrement une nouvelle image ISO.

Cas d’utilisation dans un environnement virtualisé

Imaginons que vous disposez d’une plateforme de test composée de plusieurs machines virtuelles isolées du réseau de production. Si vous souhaitez que certaines données de production (par exemple, des exports DNS, WINS, DHCP, signatures antivirus) soient transférées quotidiennement sur ces machines, vous pouvez :

  1. Placer les données à jour dans le répertoire source.
  2. Créer une image ISO de ce répertoire en utilisant OSCDIMG.exe.
  3. Monter cette image ISO sur les machines virtuelles. Cette opération peut également être automatisée.
  4. Accéder aux données depuis les machines virtuelles.

Cette méthode garantit que vos machines virtuelles disposent toujours des données les plus récentes sans nécessiter de connexions réseau directes avec l’environnement de production.

Ressources supplémentaires

Cet article original intitulé Créer une image ISO en ligne de commande avec OSCDIMG.exe a été publié la première sur SysKB.

À partir d’avant-hierFlux principal

proxmox-offline-mirror : créer un miroir local pour Proxmox

Par :fred
10 décembre 2024 à 12:21

Un mémo sur comment créer un serveur miroir local pour Proxmox avec proxmox-offline-mirror sous Debian.

Cet article fait suite à https://memo-linux.com/creer-un-serveur-miroir-local-sous-debian.

Installer proxmox-offline-mirror sur Debian via apt

  • Ajouter le dépôt suivant :
echo "deb http://download.proxmox.com/debian/pbs-client bookworm main" > /etc/apt/sources.list.d/pbs-client.list
  • Ajouter la clé du dépôt :
  • wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg   -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
  • Mettre à jour les dépôts :
  • apt update
  • Installer proxmox-offline-mirror :
  • apt install proxmox-offline-mirror

    Configurer proxmox-offline-mirror pour le dépôt Proxmox

    • Exécuter la commande :
      proxmox-offline-mirror setup
      • Pour ajouter un nouveau miroir, choisir 0 :
      • Pour être guidé, répondre « yes » :
      • Choisir le dépôt Proxmox ve :
      • Choisir la version Bookworm :
      • Choisir la variante « No-Subscription repository » :
      • Pour la question suivante « Should missing Debian mirrors for the selected product be auto-added » ayant déjà mon propre miroir local Debian, je répond non :
      • Pour l’ID laisser pve_bookworm_no_subscription :
      • Entrer le chemin complet du répertoire pour le dépôt, dans mon cas /srv/mirrors/proxmox/ :
      • Revérifier ou pas les dépôts une fois mis à jour, dans mon cas je répond : yes
      • En cas de plantage, utiliser ou pas FSYNC, je répond : yes
      • Retour au menu, choisir 3 pour quitter :
      • Une fois que la configuration est terminée, éxécuter la commande :
        proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'pve_bookworm_no_subscription'
        • Si l’accès au dépôt se fait via un proxy, exporter la variable d’environnement PROXY_ALL avant l’éxécution de la synchro:
        export PROXY_ALL="http://proxy.domaine.tld:PORT/"
        

    Ajouter un nouveau dépôt

    Ici le dépôt ajouté sera celui de Ceph.

    • Exécuter la commande :
    proxmox-offline-mirror setup
  • Choisir : Add new mirror entry
  • Guided Setup ([yes]): yes
  • Select distro to mirror : Proxmox Ceph
  • Select release : Bookworm
  • Select Ceph release : Reef (18.x)
  • Select repository variant : No-Subscription repository
  • Enter mirror ID : ceph_reef_bookworm
  • Enter (absolute) base path where mirrored repositories will be stored : /srv/mirrors/proxmox/ (dans mon cas)
  • Should already mirrored files be re-verified when updating the mirror? : yes
  • Should newly written files be written using FSYNC to ensure crash-consistency? :yes
  • Config entry ‘ceph_reef_bookworm’ added
  • Pour finir :Quit
  • Une fois le dépôt ajouté, créer le snapshot du miroir :

    proxmox-offline-mirror mirror snapshot create --config '/etc/proxmox-offline-mirror.cfg' 'ceph_reef_bookworm'

    Configurer le serveur web

    Pour rappel, dans mon cas le serveur web est déjà installé. J’ajoute simplement une directive location dans mon fichiers de conf.
    Ce qui donne :

    nano /etc/nginx/sites-available/mirrors
    server {
        listen 80;
        server_name mirrors.local;
    
        root /srv/mirrors;
        index index.html;
    
        location /debian/ {
            alias /srv/mirrors/debian/;
            autoindex on;
        }
    
        location /ubuntu/ {
            alias /srv/mirrors/ubuntu/;
            autoindex on;
        }
    
       location /proxmox/ {
            alias /srv/mirrors/proxmox/;
            autoindex on;
        }
    
        }
    systemctl reload nginx

    Créer un chemin statique pour les dépôts Proxmox et Ceph

    De base, la commande proxmox-offline-mirror créé pour chaque dépôt un snapshot daté du jour.
    Un problèmes majeur :

    • Sur chaque noeud Proxmox faudra changer le dépôt comme suit :
    deb http://mirrors.local/proxmox/pve_bookworm_no_subscription/2024-12-10T10:20:21Z bookworm pve-no-subscription

    Pour obtenir qu’un seul référentiel pour le dépôt :

    • Créer le dossier :
    mkdir -p /srv/mirrors/proxmox/latest
  • Créer le script suivant :
  • nano /usr/local/bin/sync-proxmox.sh
    #!/bin/bash
    export ALL_PROXY="http://proxy.local:PORT"
    mirror_dir="/srv/mirrors/proxmox"
    symlink_dir="/srv/mirrors/proxmox/latest"
    proxmox-offline-mirror mirror snapshot create-all
    if [ $? -eq 0 ]; then
        for dir in "${mirror_dir}"/*; do
            if [ -d "$dir" ]; then
                dir_name=$(basename "$dir")
                if [[ "$dir_name" != "latest" && "$dir_name" != "lost+found" ]]; then
                    latest_subdir=$(ls -td "$dir"/*/ | head -n 1)
                    if [ -n "$latest_subdir" ]; then
                        latest_subdir_name=$(basename "$latest_subdir")
                        if [ -e "${symlink_dir}/${dir_name}" ]; then
                            rm -f "${symlink_dir}/${dir_name}"
                        fi
                        ln -s "$latest_subdir" "${symlink_dir}/${dir_name}"
                    fi
                fi
            fi
        done
        echo "Done on ${symlink_dir}."
    else
        echo "Error."
    fi
    

    Créer une tache cron pour synchroniser le miroir de Proxmox

    • Créer une tache cron :
    crontab -e
    0 4 * * * /usr/local/bin/sync-proxmox.sh
    

    Changer les dépôts sur les noeuds Proxmox

    • Editer vos fichiers sources.list et changer les url par celle de votre miroir local :
    deb http://mirrors.local/debian bookworm main contrib
    deb http://mirrors.local/debian bookworm-updates main contrib
    deb http://mirrors.local/debian bookworm-security main contrib
    
    deb http://mirrors.local/proxmox/latest/pve_bookworm_no_subscription bookworm pve-no-subscription
    deb http://mirrors.local/proxmox/latest/ceph_reef_bookworm no-subscription
    
  • Test de l’update :
  • apt update

    Nettoyage des snapshots Proxmox et Ceph

    • Créer le script :
    nano /url/local/bin/clean_proxmox_snapshots.sh
    #!/bin/bash
    
    # Variables
    MIRRORS=(
        "/srv/mirrors/proxmox/pve_bookworm_no_subscription"
        "/srv/mirrors/proxmox/ceph_reef_bookworm"
    )
    MAX_AGE=7  # Durée limite (en jours)
    
    # Nettoyage pour chaque miroir
    for MIRROR_PATH in "${MIRRORS[@]}"; do
        echo "Traitement du miroir : $MIRROR_PATH"
    
        # Nettoyage des snapshots anciens
        SNAPSHOTS=$(proxmox-offline-mirror mirror snapshot list --mirror "$MIRROR_PATH" --format json | \
        jq -r ".[] | select(.age > $MAX_AGE) | .name")
    
        if [[ -z "$SNAPSHOTS" ]]; then
            echo "Aucun snapshot à supprimer pour le miroir : $MIRROR_PATH"
        else
            echo "Suppression des snapshots suivants pour $MIRROR_PATH :"
            echo "$SNAPSHOTS"
    
            for SNAPSHOT in $SNAPSHOTS; do
                proxmox-offline-mirror mirror snapshot remove --mirror "$MIRROR_PATH" --snapshot "$SNAPSHOT"
                echo "Snapshot supprimé : $SNAPSHOT"
            done
    
            # Garbage collection
            echo "Exécution de garbage collection (GC) pour le miroir : $MIRROR_PATH"
            proxmox-offline-mirror mirror gc --mirror "$MIRROR_PATH"
            echo "Garbage collection terminée pour $MIRROR_PATH."
        fi
    
        echo "-------------------------------------------"
    done
    
    echo "Nettoyage terminé pour tous les miroirs."
    
    
  • Rendre le script exécutable :
  • chmod +x /url/local/bin/clean_proxmox_snapshots.sh
  • Créer une tâche cron :
  • crontabe -e
    0 0 * * * /usr/local/bin/clean_proxmox_snapshots.sh

    Ressources

    Proxmox 8 cluster HA + Ceph

    Par :fred
    12 octobre 2024 à 10:06

    Un mémo sur la mise en place d’un cluster en haute disponibilité d’hyperviseurs Proxmox avec un stockage distribuée et redondant Ceph. Cet article traite uniquement de la mise en cluster des noeuds Proxmox ainsi que l’installation et de la configuration de Ceph.

    Configuration Réseau des noeuds Proxmox

    Chaque réseau sera cablé en topologie MESH et les interfaces réseaux créés dans Proxmox seront des aggrégations en mode Broadcast.
    Pour plus d’infos voir cet article : https://memo-linux.com/proxmox-creer-un-cluster-sur-un-reseau-prive-sans-switch/

    • Adresse IP public des noeuds Proxmox :
      • pve01 : 10.x.x.1
      • pve01 : 10.x.x.2
      • pve01 : 10.x.x.3
    • Réseau Corosync (cluster Proxmox) : 192.168.254.0/24
      • pve01 : 192.168.254.1
      • pve02 : 192.168.254.2
      • pve03 : 192.168.254.3
    • Réseau Ceph :
      • Ceph Public 192.168.252.0/24
        • pve01 : 192.168.252.1
        • pve02 : 192.168.252.2
        • pve03 : 192.168.252.3
      • Ceph Cluster 192.168.253.0/24
        • pve01 : 192.168.253.1
        • pve02 : 192.168.253.2
        • pve03 : 192.168.253.3

    Mise en cluster des noeuds Proxmox

    Avant la mise en cluster, il faut s’assurer absolument que chaque noeud soit à l’heure et synchronisé sur un serveur NTP.

    chronyc tracking

    • Initialisation du cluster sur un noeud aux choix :
    pvecm create nom_cluster --link0 192.168.254.1
  • Joindre les autres noeuds Proxmox au cluster :
    • Sur pve02 :
    pvecm add 10.x.x.1 --link0 192.168.254.2
  • Sur pve03 :
  • pvecm add 10.x.x.1 --link0 192.168.254.3
  • Via l’interface web, il est possible de voir le statut du cluster ainsi que l’ensemble des noeuds Proxmox :
  • Installation de Ceph

    L’installation et la configuration du Ceph sera réalisée via l’interface web de Proxmox.

    • Sélectionner un noeud, dans le menu cliquer sur Ceph puis cliquer sur « Install Ceph » :
    • Une nouvelle fenêtre s’ouvre, sélectionner la dernière version de Ceph (Reef) et le dépôt No-Subscription puis cliquer sur « Start reef installation » :
    • Répondre « Y » puis la touche « Enter » du clavier :
    • Une fois l’installation terminée, cliquer sur « Next » :
    • Configuration réseau du cluster de Ceph :
    • Sélectionner les adresses IP configurées pour chaque réseau Public et Cluster du Ceph :
    • Installation et configuration du Ceph terminée :

    Cependant, il faut refaire l’étape d’installation du Ceph sur les autres noeuds (sans la partie réseau).

    Mise en place du Ceph sur le cluster Proxmox

    • Sur chaque noeud, créer le Ceph Monitors :
      • Cliquer dans le menu Ceph, puis cliquer sur Monitor :
      • Cliquer cur « Create » :
      • Sélectionner le noeud :
      • Répéter l’opération sur l’autre noeud afin d’avoir l’ensemble des monitors :
    • Sur chaque noeud, créer le Ceph Manager :
      • Toujours dans le menu Monitor, au niveau de Manager cliquer sur « Create » :
      • Sélectioner le noeud :
      • Répéter l’opération sur l’autre noeud afin d’avoir tous les Managers (à savoir, un seul est actif) :
    • Création des OSD :
      • Pré-requis, il faut que les disques soient configurés en NON-RAID et visible dans le menu « Disks » :
      • Opération à réaliser sur chaque noeud, dans le menu Ceph, cliquer sur OSD puis sur « Create: OSD » :
      • Sélectionner le premier disque puis cliquer sur « Create » :
      • Répéter l’opération pour l’ensemble des disques :
    • Création du pool Ceph pour le stockage :
      • Toujours dans le menu Ceph, cliquer sur « Pools » puis sur « Create » :
      • Donner un nom au pool Ceph puis cliquer sur « Create » :
      • Une fois le pool Ceph créé, le stockage est automatiquement créé et partagé aux membres du cluster Proxmox :

    Mise en place de la HA pour les VMs

    nb: Lors de la création d’une machine virtuelle, ne pas oublier de choisir le stockage correspondant au pool Ceph:

    Encore à ce jour pour la gestion HA des machines virtuelles, j’utilise cette méthode -> https://memo-linux.com/proxmox-cluster-ha-repartition-de-charge-des-machines-virtuelles/

    ❌
    ❌