Ajout des fichiers pour la création de l'image docker

This commit is contained in:
2025-07-10 21:30:49 +02:00
parent b63ff9d788
commit 43c4ba4639
6 changed files with 126 additions and 4 deletions

View File

@ -3,7 +3,7 @@
## Explication de l'usage des scripts et de la configuration : ## Explication de l'usage des scripts et de la configuration :
### Fichier de configuration global settings.json ### Fichier de configuration global settings.json
Les scripts prennent les informations de configuration du fichier de configuration présent dans le répertoire conf, si celui-ci n'existe pas au lancement d'un script, il est automatiquement créé avec des valeurs d'exemples. Un chemin personnalisé vers un fichier de configuration peut être renseigné avec le paramètre -c. Les scripts prennent les informations de configuration du fichier de configuration présent dans le répertoire conf, si celui-ci n'existe pas au lancement d'un script, il est automatiquement créé avec des valeurs d'exemples.
Voici un exemple du fichier de configuration : Voici un exemple du fichier de configuration :
@ -85,6 +85,10 @@ Il récupère le nom de l'utilisateur de staging dans le fichier de configuratio
- **-s / --silent** : exécute le script sans faire de retour dans la console, les informations seront toujours présentes dans les fichiers de log - **-s / --silent** : exécute le script sans faire de retour dans la console, les informations seront toujours présentes dans les fichiers de log
- **-v / --verbose** : affiche des informations lors de son exécution, utile pour résoudre des problèmes liés à des droits d'accès API ou des problèmes d'ouvertures réseaux - **-v / --verbose** : affiche des informations lors de son exécution, utile pour résoudre des problèmes liés à des droits d'accès API ou des problèmes d'ouvertures réseaux
## Installation avec docker
## Dépendances ## Dépendances
Installation des paquets linux : Installation des paquets linux :
@ -98,9 +102,28 @@ apt-get install -y python3 python3-pip git
yum install -y python3 python3-pip git yum install -y python3 python3-pip git
``` ```
**Dépendances python** ## Modules python nécessaires
Voici la liste des modules python nécessaires au fonctionnement des scripts :
- cryptography
- requests
- toml
Un fichier requirements.txt contenant les modules dont dépendent les scripts est présent dans le répertoire scripts.
Les modules peuvent être installés de plusieurs façons :
**Avec le gestionnaire de paquet python Pip**
``` ```
python3 -m pip install cryptography requests toml python -m pip install -r requirements.txt
```
**Avec le gestionnaire de paquet apt (debian/ubuntu)**
```
apt-get install -y python3-cryptography python3-requests python3-toml
```
**Avec le gestionnaire de paquet yum (redhat/centos)**
```
yum install -y python3-cryptography python3-requests python3-toml
``` ```
## Installation des scripts ## Installation des scripts
@ -172,7 +195,7 @@ Description=Script qui assigne les appareils en staging aux utilisateurs en se b
[Timer] [Timer]
OnUnitInactiveSec=1m OnUnitInactiveSec=1m
AccuracySec=1us AccuracySec=1us
Unit=airwatchSync.service Unit=airwatchStaging.service
[Install] [Install]
WantedBy=timers.target WantedBy=timers.target

11
create_services.sh Normal file
View File

@ -0,0 +1,11 @@
#!/bin/bash
python3 /services.py
systemctl daemon-reload
systemctl enable *-sync.timer *-staging.timer
systemctl start *-sync.timer *-staging.timer
tail -f /dev/null

10
dockerfile Normal file
View File

@ -0,0 +1,10 @@
FROM python
RUN <<-EOF
apt-get update
apt-get install -y python3-cryptography python3-requests python3-toml
EOF
ADD scripts\* /airwatchConnector
ADD services.py
ADD create_services.sh
RUN chmod u+x /create_services.sh
ENTRYPOINT ["/create_services.sh"]

3
scripts/requirements.txt Normal file
View File

@ -0,0 +1,3 @@
cryptography
requests
toml

75
services.py Normal file
View File

@ -0,0 +1,75 @@
import os
import toml
baseDir = "/airwatchConnector"
logDir = f"{baseDir}/logs"
confDir = f"{baseDir}/conf"
confFiles = os.listdir(confDir)
# On récupère que les fichiers .conf
confFiles = [conf for conf in confFiles if os.path.isfile(f"{confDir}/{conf}") and not conf.endswith(".conf")]
for conf in confFiles:
# On forme un nom à partir du nom du fichier de conf sans l'extension
# et on enlève les espaces
confName = conf[:5].replace(' ', '')
with open(f"{confDir}/{conf}", "r") as f:
settings = toml.load(f)
# Create log folder
if(settings["LOGS"]["Enabled"]):
logPath = settings["LOGS"].get(Path)
if not os.path.exists(f"{logDir}/{logPath}"):
os.makedirs(f"{logDir}/{logPath}")
with open(f"/etc/systemd/system/{confName}-sync.service", "w") as f:
f.write(f"""[Unit]
Description=Script Airwatch pour la synchronisation des données Airwatch et GLPI.
[Service]
Type=oneshot
WorkingDirectory=/airwatchConnector
ExecStart=/airwatchConnector/syncGLPI.py -c {confDir}/{conf} -s -f
User=root
""")
with open(f"/etc/systemd/system/{confName}-sync.timer", "w") as f:
f.write(f"""[Unit]
Description=Script Airwatch pour la synchronisation des données Airwatch et GLPI.
[Timer]
OnUnitInactiveSec=1h
AccuracySec=1us
Unit={confName}-sync.service
[Install]
WantedBy=timers.target
""")
with open(f"/etc/systemd/system/{confName}-staging.service", "w") as f:
f.write(f"""[Unit]
Description=Script qui assigne les appareils en staging aux utilisateurs en se basant sur GLPI.
[Service]
Type=oneshot
WorkingDirectory=/airwatchConnector
ExecStart=/airwatchConnector/StagingUserAssignation.py -c {confDir}/{conf} -s -f
User=root
""")
with open(f"/etc/systemd/system/{confName}-staging.timer", "w") as f:
f.write(f"""[Unit]
Description=Script qui assigne les appareils en staging aux utilisateurs en se basant sur GLPI.
[Timer]
OnUnitInactiveSec=1m
AccuracySec=1us
Unit={confName}-staging.service
[Install]
WantedBy=timers.target
""")