# Configuration Automatisée de l'Infrastructure LDAP

## 📝 **Description**

Cette suite de scripts permet de configurer automatiquement une infrastructure LDAP en créant les unités organisationnelles (OUs), les groupes et les utilisateurs. Chaque étape est gérée par un script dédié pour une exécution modulaire ou complète selon vos besoins.

{% content-ref url="../../infrastructure/infrastructure-ldap" %}
[infrastructure-ldap](https://ruimmp.gitbook.io/cpnv-es/lin1/infrastructure/infrastructure-ldap)
{% endcontent-ref %}

***

## ✨ **Fonctionnalités**

* 📂 **Création des Unités Organisationnelles (OUs)** : Structure logique pour les utilisateurs et groupes.
* 👥 **Création des Groupes** : Définition des groupes "Managers", "Ingénieurs" et "Développeurs".
* 🧑‍ **Ajout des Utilisateurs** : Création d'utilisateurs et affectation aux groupes correspondants.
* 🚀 **Exécution globale ou modulaire** : Possibilité d'exécuter chaque script séparément ou de lancer l'infrastructure complète en une seule commande.

***

## 📋 **Prérequis** :

* 🖥️ Serveur LDAP fonctionnel et accessible.
* 🔑 Privilèges administratifs sur le serveur LDAP.
* 📦 Outils nécessaires : `ldapadd`, `slappasswd` pour gérer les entrées LDAP et les mots de passe.

***

## 🚀 **Commandes d'exécution rapide**

{% stepper %}
{% step %}

### Exécution complète (tous les scripts)

Téléchargez et exécutez tous les scripts dans l'ordre :

```bash
sudo bash -c "$(curl -fsSL https://gitlab.com/Ruimmp/cpnv-es/-/raw/LIN1/2.%20Configuration%20compl%C3%A8te%20du%20NAS%20et%20LDAP/2.1%20LDAP%20Setup/create_ou.sh)" && \
sudo bash -c "$(curl -fsSL https://gitlab.com/Ruimmp/cpnv-es/-/raw/LIN1/2.%20Configuration%20compl%C3%A8te%20du%20NAS%20et%20LDAP/2.1%20LDAP%20Setup/create_groups.sh)" && \
sudo bash -c "$(curl -fsSL https://gitlab.com/Ruimmp/cpnv-es/-/raw/LIN1/2.%20Configuration%20compl%C3%A8te%20du%20NAS%20et%20LDAP/2.1%20LDAP%20Setup/create_users.sh)"
```

{% endstep %}

{% step %}

### Exécution modulaire

Téléchargez et exécutez chaque script séparément selon vos besoins :

* **Créer les OUs** :

  ```bash
  sudo bash -c "$(curl -fsSL https://gitlab.com/Ruimmp/cpnv-es/-/raw/LIN1/2.%20Configuration%20compl%C3%A8te%20du%20NAS%20et%20LDAP/2.1%20LDAP%20Setup/create_ou.sh)"
  ```
* **Créer les Groupes** :

  ```bash
  sudo bash -c "$(curl -fsSL https://gitlab.com/Ruimmp/cpnv-es/-/raw/LIN1/2.%20Configuration%20compl%C3%A8te%20du%20NAS%20et%20LDAP/2.1%20LDAP%20Setup/create_groups.sh)"
  ```
* **Créer les Utilisateurs** :

  ```bash
  sudo bash -c "$(curl -fsSL https://gitlab.com/Ruimmp/cpnv-es/-/raw/LIN1/2.%20Configuration%20compl%C3%A8te%20du%20NAS%20et%20LDAP/2.1%20LDAP%20Setup/create_users.sh)"
  ```

{% endstep %}
{% endstepper %}

***

## ⚙️ **Détails des scripts**

### **`create_ou.sh`**

Ce script crée les unités organisationnelles (OUs) pour structurer l'annuaire LDAP.

**Contenu** :

```bash
#!/bin/bash

############################################################################################################
# Script Name   : create_ou.sh
# Description   : Creates LDAP Organizational Units (OUs) for Users and Groups.
# Author        : Rui Monteiro
# Created       : 2024-11/07
# Last Updated  : 2024-11/07
############################################################################################################

# Variables LDAP
LDAP_BASE_DN="dc=lin1,dc=local"
LDAP_USERS_DN="ou=Users,$LDAP_BASE_DN"
LDAP_GROUPS_DN="ou=Groups,$LDAP_BASE_DN"
LDAP_ADMIN_PASSWORD="Pa\$\$w0rd"

# Création des OUs
ldapadd -x -D "cn=admin,$LDAP_BASE_DN" -w $LDAP_ADMIN_PASSWORD <<EOF
dn: $LDAP_USERS_DN
objectClass: organizationalUnit
ou: Users

dn: $LDAP_GROUPS_DN
objectClass: organizationalUnit
ou: Groups
EOF
```

***

### **`create_groups.sh`**

Ce script ajoute les groupes principaux dans l'annuaire LDAP : Managers, Ingénieurs, Développeurs.

**Contenu** :

```bash
#!/bin/bash

############################################################################################################
# Script Name   : create_groups.sh
# Description   : Creates LDAP groups: Managers, Ingenieurs, Devloppeurs.
# Author        : Rui Monteiro
# Created       : 2024-11/07
# Last Updated  : 2024-11/07
############################################################################################################

# Variables LDAP
LDAP_BASE_DN="dc=lin1,dc=local"
LDAP_GROUPS_DN="ou=Groups,$LDAP_BASE_DN"
LDAP_ADMIN_PASSWORD="Pa\$\$w0rd"

# Création des Groupes
ldapadd -x -D "cn=admin,$LDAP_BASE_DN" -w $LDAP_ADMIN_PASSWORD <<EOF
dn: cn=Managers,$LDAP_GROUPS_DN
objectClass: posixGroup
objectClass: top
gidNumber: 20000

dn: cn=Ingenieurs,$LDAP_GROUPS_DN
objectClass: posixGroup
objectClass: top
gidNumber: 20010

dn: cn=Devloppeurs,$LDAP_GROUPS_DN
objectClass: posixGroup
objectClass: top
gidNumber: 20020
EOF
```

***

### **`create_users.sh`**

Ce script ajoute les utilisateurs à l'annuaire LDAP et les associe aux groupes appropriés.

**Contenu** :

```bash
#!/bin/bash

############################################################################################################
# Script Name   : create_users.sh
# Description   : Creates LDAP users and assigns them to their respective groups.
# Author        : Rui Monteiro
# Created       : 2024-11/07
# Last Updated  : 2024-11/07
############################################################################################################

# Variables LDAP
LDAP_BASE_DN="dc=lin1,dc=local"
LDAP_USERS_DN="ou=Users,$LDAP_BASE_DN"
LDAP_ADMIN_PASSWORD="Pa\$\$w0rd"
LDAP_DOMAIN="lin1.local"

# Création des Utilisateurs
ldapadd -x -D "cn=admin,$LDAP_BASE_DN" -w $LDAP_ADMIN_PASSWORD <<EOF
dn: uid=man01,$LDAP_USERS_DN
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
displayName: Man 01
uid: man01
uidNumber: 10000
gidNumber: 20000
homeDirectory: /home/man01
loginShell: /bin/bash
mail: man01@$LDAP_DOMAIN
userPassword: $(slappasswd -s $LDAP_ADMIN_PASSWORD)

dn: uid=ing01,$LDAP_USERS_DN
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
displayName: Ing 01
uid: ing01
uidNumber: 10010
gidNumber: 20010
homeDirectory: /home/ing01
loginShell: /bin/bash
mail: ing01@$LDAP_DOMAIN
userPassword: $(slappasswd -s $LDAP_ADMIN_PASSWORD)

dn: uid=dev01,$LDAP_USERS_DN
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
displayName: Dev 01
uid: dev01
uidNumber: 10020
gidNumber: 20020
homeDirectory: /home/dev01
loginShell: /bin/bash
mail: dev01@$LDAP_DOMAIN
userPassword: $(slappasswd -s $LDAP_ADMIN_PASSWORD)
EOF
```
