Solution automatisée de déploiement pour un service de partage de fichiers NFS d'entreprise (compatible avec Kylin V10, openEuler et CentOS)

Contexte et défis des partages de fichiers dans les environnements hybrides

Dans le cadre de la transition vers des systèmes d'exploitation nationaux tels que Kylin V10 et openEuler, les organisations font face à des problèmes récurrents de partage de fichiers inter-systèmes. Les difficultés incluent la gestion des permissions entre départements, la configuration manuelle sujette aux erreurs et la compatibilité limitée entre plateformes. Cette approche propose un script d'automatisation pour déployer NFS de manière uniforme.

Architecture et conception de la solution

Le script conçu suit des principes de sécurité et d'automatisation :

  • Isolation par département : chaque service (administration, marketing, conception, développement) dispose d'un répertoire dédié sous /data/nfs/.
  • Gestion des utilisateurs : les comptes système sont créés avec des UID unifiés à partir de 5000, évitant les conflits.
  • Compatibilité multi-distributions : détection automatique du système (Kylin, openEuler, CentOS/RHEL) pour adapter l'installation des paquets.

Implémentation du script d'automatisation

Module de détection système


# Identifier la distribution Linux
verifier_systeme() {
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        case "$ID" in
            kylin) TYPE_SYSTEME="kylin" ;;
            openEuler) TYPE_SYSTEME="openEuler" ;;
            centos|rhel|almalinux|rocky) TYPE_SYSTEME="rhel" ;;
            *) echo "Système non pris en charge" ; exit 1 ;;
        esac
    fi
}

Création automatisée des utilisateurs et groupes


# Configuration des départements et utilisateurs
declare -A SERVICES=(
    ["user_admin1"]="admin"
    ["user_admin2"]="admin"
    ["user_mkt1"]="mkt"
    ["user_mkt2"]="mkt"
    ["user_concep1"]="concep"
    ["user_dev1"]="dev"
    ["user_dev2"]="dev"
)

generer_comptes() {
    local uid_courant=5000
    for usr in "${!SERVICES[@]}"; do
        local dept="${SERVICES[$usr]}"
        local grp="${dept}_grp"
        useradd -u $uid_courant -g "$grp" -s /bin/false -M "$usr" 2>/dev/null
        ((uid_courant++))
    done
}

Configuration des exports NFS


# Paramétrage du fichier /etc/exports
configurer_exports() {
    cat > /etc/exports <<eof d="" eof="" nfs="" partages="" pour=""></eof>

Les options NFS incluent rw pour l'accès en lecture/écriture, sync pour la cohérence des données, et no_subtree_check pour améliorer les performances. L'accès est limité au sous-réseau 192.168.1.0/24 pour la sécurité.

Script client pour le montage


# Génération d'un script de montage côté client
creer_script_client() {
    local IP_SERVEUR=$(hostname -I | awk '{print $1}')
    local FICHIER_CLIENT="/tmp/montage_nfs_client.sh"
    
    cat > "$FICHIER_CLIENT" <<eof chmod="" de="" echo="" eof="" mkdir="" montage="" mount="" nfs="" script="" termin=""></eof>

Déploiement et résultats

Après l'exécution du script principal, un rapport de statut est affiché :


État du déploiement :
- Système détecté : Kylin V10
- Gestionnaire de paquets : apt
- Version NFS : nfs-utils 2.6.x
- Répertoire racine : /data/nfs

Comptes créés :
user_admin1 (UID 5000) -> /data/nfs/admin
user_mkt1   (UID 5001) -> /data/nfs/mkt
user_concep1 (UID 5002) -> /data/nfs/concep
user_dev1   (UID 5003) -> /data/nfs/dev

Administration et maintenance

Commandes de surveillance


# Vérifier l'état des services NFS
systemctl status nfs-server

# Afficher les statistiques d'utilisation
nfsstat -s

# Lister les clients connectés
showmount -a localhost

Ajout d'un nouveau département


# Étendre la configuration pour un nouveau service
nouveau_dept="finance"
groupadd "${nouveau_dept}_grp"
mkdir -p "/data/nfs/${nouveau_dept}"
chown :"${nouveau_dept}_grp" "/data/nfs/${nouveau_dept}"
chmod 770 "/data/nfs/${nouveau_dept}"
echo "/data/nfs/${nouveau_dept} 192.168.1.0/24(rw,sync,no_subtree_check)" >> /etc/exports
exportfs -ra

Optimisations de performance


# Ajuster le nombre de threads NFS pour les charges élevées
echo "RPCNFSDCOUNT=32" >> /etc/sysconfig/nfs

# Utiliser des tailles de bloc pour les transferts de fichiers volumineux
mount -t nfs -o rsize=65536,wsize=65536,tcp IP_SERVEUR:/data/nfs /mnt/temp

Renforcement de la sécurité

Pour les environnements de production, limiter l'accès par IP dans le fichier /etc/exports et envisager l'activation de l'authentification Kerberos avec l'option sec=krb5i.

Étiquettes: nfs bash administration système Linux Kylin V10

Publié le 26 juin à 19h34