MigrationAD » Historique » Version 19
« Précédent -
Version 19/37
(diff) -
Suivant » -
Version actuelle
Joël Cuissinat, 15/06/2018 16:21
Migration de ScribeNT vers ScribeAD¶
- Migration de ScribeNT vers ScribeAD
Scénarios issus de la réunion du 05/06/2018 (#24138)¶
Situation initiale : ScribeNT + postes intégrés + client Scribe
Cible : ScribeAD + postes intégrés + client Salt
Cinématique 1¶
- transformer le module Scribe en ScribeAD
- déployer les minions via le client Scribe (sans le domaine NT)
- nettoyer les postes et les intégrer au domaine AD
Cinématique 2 (plan B)¶
- déployer les minions via le client Scribe
- transformer le module Scribe en ScribeAD
- nettoyer les postes et les intégrer au domaine AD
Points d'attention¶
- Conflit entre Salt-master et EAD3
- Gestion du déployement ou de l'acceptation des clés des minions
- Action instantanée et/ou différée (au démarrage des postes)
- Points d'étape : afficher le nombre/la liste des postes et leur état de migration
- vérifier/forcer la configuration DNS des clients avant intégration
- prévoir de fournir un script/programme pour les futures installations
Déploiement du Minion à l'aide du client Scribe¶
L'utilisation du client Scribe permet d'envisager plusieurs pistes différentes.
La problématique de la diffusion/du téléchargement de l'installeur est au moins aussi complexe que celle de son exécution.
Exécution de l'installeur à l'aide du client Scribe¶
Du fait de l'utilisation du partage "netlogon", le test suivant correspondrait plutôt au plan B...
root@scribe:~# wget https://repo.saltstack.com/windows/Salt-Minion-2018.3.0-Py3-AMD64-Setup.exe -O /home/netlogon/minion.exe root@scribe:~# /usr/share/eole/controlevnc/cliscribe.py -e '\\192.168.0.26\netlogon\minion.exe /S /master=192.168.0.26' 192.168.0.183
=> accès refusé car le partage n'est pas accessible dans l'environnement Système !
Après copie manuelle du programme d'installation dans C:\, la commande suivante permet bien d'installer le Minion :
/usr/share/eole/controlevnc/cliscribe.py -e 'C:\minion.exe /S /master=192.168.0.26' 192.168.0.183
Utilisation du serveur web du client Scribe¶
Il est possible d'utiliser le serveur web du client Scribe qui publie les fichiers présents dans le dossier /home/client_scribe en HTTP sur le port 8790.
wget https://repo.saltstack.com/windows/Salt-Minion-2018.3.0-Py3-AMD64-Setup.exe -O /home/client_scribe
Dans ce test, on télécharge puis exécute le script PS install-minion.ps1
qui va lui même télécharger et exécuter l'installeur du minion :
cat /home/client_scribe/install-minion.ps1 Set-ExecutionPolicy Bypass -Scope Process -Force Set-Location $env:TEMP Set-PSDebug -Trace 1 ((new-object net.webclient).DownloadFile('http://scribe:8790/minion.exe', 'minion.exe')) Get-ChildeItem $env:TEMP minion.exe /S /master=192.168.0.26
Commande à exécuter sous Windows :
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('http://scribe:8790/install-minion.ps1'))
Commande à exécuter sur le Scribe :
cmd="c:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command \"iex ((New-Object System.Net.WebClient).DownloadString('http://scribe:8790/install-minion.ps1'))\"" /usr/share/eole/controlevnc/cliscribe.py -e "$cmd" 192.168.0.183
Suppression du script PowerShell intermédiaire en le remplaçant par une chaîne en base64¶
Il est possible d'envoyer la ou les commandes PS encodées en base64 à l'aide de l'option -EncodedCommand
ATTENTION : Il faut au préalable que le fichier créé sous Linux soit dans un "bon" format !
iconv -f UTF-8 -t UTF-16LE <install-minion.ps1 >install-minion.ps2
Cela nous a fait parvenir à une première version de script assez complète :
#!/bin/bash
IP_SCRIBE="${1}"
echo IP_SCRIBE=$IP_SCRIBE
IP_MACHINE="${2}"
echo IP_MACHINE=$IP_MACHINE
VERSION_MINION="${3:-2018.3.1-Py3}"
echo VERSION_MINION=$VERSION_MINION
iconv -f UTF-8 -t UTF-16LE >install-minion.ps1 <<EOF
Set-ExecutionPolicy Bypass -Scope Process -Force
Start-Transcript -Path "C:\\windows\\install-minion.log" -Append
Write-Host '$(date)'
Set-Location \$env:TEMP
Set-PSDebug -Trace 1
\$url = "https://repo.saltstack.com/windows/Salt-Minion-${VERSION_MINION}-\$env:PROCESSOR_ARCHITECTURE-Setup.exe"
\$output = "\$env:TEMP\minion.exe"
Write-Host "Download \$url"
\$wc = New-Object System.Net.WebClient
\$wc.DownloadFile(\$url, \$output)
Unblock-File \$output
Write-Host "Install Salt-Minion"
CMD.Exe /C "\$output" /S /master=$IP_SCRIBE
Write-Host "LastExitCode : \$LastExitCode"
Stop-Transcript
EOF
cat install-minion.ps1
cmd="c:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -InputFormat None -ExecutionPolicy Bypass -EncodedCommand $(base64 -w 0 install-minion.ps1)"
/usr/share/eole/controlevnc/cliscribe.py -e "$cmd" "$IP_MACHINE"
Évolutions à prévoir :
- Téléchargement au préalable des exécutables sur le Scribe pour éviter que les stations ailles chacune le télécharger sur Internet
Test de la procédure sous Windows7¶
Sur Windows 7, PowerShell est en version 2.0, il faut vérifier que le code proposé est fonctionnel sur cette version.
PS C:\> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 2 0 -1 -1
La commande Unblock-File n'est disponible qu'à partir de Powershell 3.0 mais malgré l'erreur, Salt-Minion a été installé !
Autres pistes¶
Installeur du client Scribe¶
Créer une nouvelle version du client Scribe embarquant l'installeur Salt Minion et mettre à jour le numéro de version officielle.
La nouvelle version du client (et donc salt) sera automatiquement installée grâce au service de maj du client.
psexec¶
psexec pourrait être utilisé pour exécuter l'installation du minion à distance depuis une station.
Trucs et astuces¶
Process Explorer (procexp)¶
Process Explorer permet de surveiller l'activité des processus en cours d'utilisation par le système.
Cet outil peut être très utile pour savoir ce qu'il se passe sur le poste client surtout que le client Scribe exécute les commandes "à l'aveugle".
Accompagnement et suivi du déploiement¶
Liste des stations connues¶
- Interroger le client Scribe
Le script /usr/share/eole/controlevnc/manage_stations.py permet d'obtenir la liste de toutes les stations.
L'option --list-all
permet, par exemple de lister toutes les machines du domaine
root@scribe:/home/client_scribe# /usr/share/eole/controlevnc/manage_stations.py | sed s'/;/\n/'g 192.168.0.183, pc-125292, admin 192.168.0.186, , 192.168.0.181, pcwin7, admin
- Interroger l'annuaire via smbldap-tools
root@scribe:/home/client_scribe# smbldap-userlist -m uid |username 10066 |pc-125292$ | 10067 |pcwin7$
- Interroger directement l'annuaire
root@scribe:/home/client_scribe# ldapsearch -x "(sambaAcctFlags=[W ])" cn | grep ^cn: cn: pc-125292$ cn: pcwin7$
Liste des stations avec le Minion¶
La commande salt-key permet de connaître la liste des Minons enregistrés ou en attente d'enregistrement.
TODO : définir la stratégie de déploiement/d'acceptation des clés