Ajout des fichiers pour la création de l'image docker
This commit is contained in:
31
README.md
31
README.md
@ -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
11
create_services.sh
Normal 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
10
dockerfile
Normal 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
3
scripts/requirements.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
cryptography
|
||||||
|
requests
|
||||||
|
toml
|
||||||
75
services.py
Normal file
75
services.py
Normal 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
|
||||||
|
""")
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user