Projet

Général

Profil

MigrationAD » Historique » Version 14

Joël Cuissinat, 15/06/2018 14:42

1 1 Joël Cuissinat
h1. Migration de ScribeNT vers ScribeAD
2 1 Joël Cuissinat
3 11 Joël Cuissinat
{{>toc}}
4 11 Joël Cuissinat
5 2 Joël Cuissinat
h2. Scénarios issus de la réunion du 05/06/2018 (#24138)
6 1 Joël Cuissinat
7 1 Joël Cuissinat
Situation initiale : ScribeNT + postes intégrés + client Scribe
8 1 Joël Cuissinat
Cible : ScribeAD + postes intégrés + client Salt
9 1 Joël Cuissinat
10 1 Joël Cuissinat
h3. Cinématique 1
11 1 Joël Cuissinat
12 1 Joël Cuissinat
* transformer le module Scribe en ScribeAD
13 1 Joël Cuissinat
* déployer les minions via le client Scribe (sans le domaine NT)
14 1 Joël Cuissinat
* nettoyer les postes et les intégrer au domaine AD
15 1 Joël Cuissinat
16 1 Joël Cuissinat
17 1 Joël Cuissinat
h3. Cinématique 2 (plan B)
18 1 Joël Cuissinat
19 1 Joël Cuissinat
* déployer les minions via le client Scribe
20 1 Joël Cuissinat
* transformer le module Scribe en ScribeAD
21 1 Joël Cuissinat
* nettoyer les postes et les intégrer au domaine AD
22 1 Joël Cuissinat
23 1 Joël Cuissinat
24 1 Joël Cuissinat
h3. Points d'attention
25 1 Joël Cuissinat
26 1 Joël Cuissinat
* Conflit entre Salt-master et EAD3
27 1 Joël Cuissinat
* Gestion du déployement ou de l'acceptation des clés des minions
28 1 Joël Cuissinat
* Action instantanée et/ou différée (au démarrage des postes)
29 1 Joël Cuissinat
* Points d'étape : afficher le nombre/la liste des postes et leur état de migration
30 1 Joël Cuissinat
* vérifier/forcer la configuration DNS des clients avant intégration
31 1 Joël Cuissinat
* prévoir de fournir un script/programme pour les futures installations
32 3 Joël Cuissinat
33 9 Joël Cuissinat
h2. Déploiement du Minion à l'aide du client Scribe
34 3 Joël Cuissinat
35 3 Joël Cuissinat
L'utilisation du client Scribe permet d'envisager plusieurs pistes différentes.
36 3 Joël Cuissinat
37 1 Joël Cuissinat
La problématique de la diffusion/du téléchargement de l'installeur est au moins aussi complexe que celle de son exécution.
38 3 Joël Cuissinat
39 8 Joël Cuissinat
h3. Exécution de l'installeur à l'aide du client Scribe
40 3 Joël Cuissinat
41 8 Joël Cuissinat
Du fait de l'utilisation du partage "netlogon", le test suivant correspondrait plutôt au plan B...
42 3 Joël Cuissinat
43 3 Joël Cuissinat
<pre>
44 3 Joël Cuissinat
root@scribe:~# wget https://repo.saltstack.com/windows/Salt-Minion-2018.3.0-Py3-AMD64-Setup.exe -O /home/netlogon/minion.exe
45 3 Joël Cuissinat
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
46 3 Joël Cuissinat
</pre>
47 3 Joël Cuissinat
48 3 Joël Cuissinat
=> accès refusé car le partage n'est pas accessible dans l'environnement Système !
49 3 Joël Cuissinat
50 1 Joël Cuissinat
Après copie *manuelle* du programme d'installation dans C:\, la commande suivante permet bien d'installer le Minion :
51 3 Joël Cuissinat
52 3 Joël Cuissinat
<pre>
53 3 Joël Cuissinat
/usr/share/eole/controlevnc/cliscribe.py -e 'C:\minion.exe /S /master=192.168.0.26' 192.168.0.183
54 3 Joël Cuissinat
</pre>
55 3 Joël Cuissinat
56 8 Joël Cuissinat
h3. Utilisation du serveur web du client Scribe
57 4 Joël Cuissinat
58 4 Joël Cuissinat
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.
59 6 Joël Cuissinat
60 4 Joël Cuissinat
<pre>
61 4 Joël Cuissinat
wget https://repo.saltstack.com/windows/Salt-Minion-2018.3.0-Py3-AMD64-Setup.exe -O /home/client_scribe
62 4 Joël Cuissinat
</pre>
63 1 Joël Cuissinat
64 6 Joël Cuissinat
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 :
65 6 Joël Cuissinat
66 1 Joël Cuissinat
<pre>
67 6 Joël Cuissinat
cat /home/client_scribe/install-minion.ps1
68 4 Joël Cuissinat
Set-ExecutionPolicy Bypass -Scope Process -Force
69 4 Joël Cuissinat
Set-Location $env:TEMP
70 4 Joël Cuissinat
Set-PSDebug -Trace 1
71 4 Joël Cuissinat
((new-object net.webclient).DownloadFile('http://scribe:8790/minion.exe', 'minion.exe'))
72 4 Joël Cuissinat
Get-ChildeItem $env:TEMP
73 4 Joël Cuissinat
minion.exe /S /master=192.168.0.26
74 4 Joël Cuissinat
</pre>
75 4 Joël Cuissinat
76 7 Joël Cuissinat
Commande à exécuter sous Windows :
77 4 Joël Cuissinat
<pre>
78 5 Joël Cuissinat
%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'))
79 1 Joël Cuissinat
</pre>
80 1 Joël Cuissinat
81 7 Joël Cuissinat
Commande à exécuter sur le Scribe :
82 7 Joël Cuissinat
<pre>
83 1 Joël Cuissinat
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'))\""
84 7 Joël Cuissinat
/usr/share/eole/controlevnc/cliscribe.py -e "$cmd"  192.168.0.183
85 7 Joël Cuissinat
</pre>
86 7 Joël Cuissinat
87 8 Joël Cuissinat
h3. Suppression du script PowerShell intermédiaire en le remplaçant par une chaîne en base64
88 7 Joël Cuissinat
89 7 Joël Cuissinat
Il est possible d'envoyer la ou les commandes PS encodées en base64 à l'aide de l'option @-EncodedCommand@
90 1 Joël Cuissinat
91 10 Joël Cuissinat
ATTENTION : Il faut au préalable que le fichier créé sous Linux soit dans un "bon" format !
92 10 Joël Cuissinat
93 10 Joël Cuissinat
<pre>
94 10 Joël Cuissinat
iconv -f UTF-8 -t UTF-16LE <install-minion.ps1 >install-minion.ps2
95 10 Joël Cuissinat
</pre>
96 10 Joël Cuissinat
97 13 Joël Cuissinat
Cela nous a fait parvenir à une première version de script assez complète :
98 13 Joël Cuissinat
<pre><code class="groovy">
99 13 Joël Cuissinat
#!/bin/bash
100 13 Joël Cuissinat
101 13 Joël Cuissinat
IP_SCRIBE="${1}"
102 13 Joël Cuissinat
echo IP_SCRIBE=$IP_SCRIBE
103 13 Joël Cuissinat
IP_MACHINE="${2}"
104 13 Joël Cuissinat
echo IP_MACHINE=$IP_MACHINE
105 13 Joël Cuissinat
VERSION_MINION="${3:-2018.3.1-Py3}"
106 13 Joël Cuissinat
echo VERSION_MINION=$VERSION_MINION
107 13 Joël Cuissinat
108 13 Joël Cuissinat
iconv -f UTF-8 -t UTF-16LE >install-minion.ps1 <<EOF
109 13 Joël Cuissinat
Set-ExecutionPolicy Bypass -Scope Process -Force
110 13 Joël Cuissinat
Start-Transcript -Path "C:\\windows\\install-minion.log" -Append
111 13 Joël Cuissinat
Write-Host '$(date)'
112 13 Joël Cuissinat
Set-Location \$env:TEMP
113 13 Joël Cuissinat
Set-PSDebug -Trace 1
114 13 Joël Cuissinat
\$url = 'https://repo.saltstack.com/windows/Salt-Minion-${VERSION_MINION}-\$env:PROCESSOR_ARCHITECTURE-Setup.exe'
115 13 Joël Cuissinat
\$output = "\$env:TEMP\minion.exe"
116 13 Joël Cuissinat
\$wc = New-Object System.Net.WebClient
117 13 Joël Cuissinat
\$wc.DownloadFile(\$url, \$output)
118 13 Joël Cuissinat
Unblock-File \$output
119 13 Joël Cuissinat
CMD.Exe /C "\$output" /S /master=$IP_SCRIBE
120 13 Joël Cuissinat
Write-Host \$LastExitCode
121 13 Joël Cuissinat
Stop-Transcript
122 13 Joël Cuissinat
EOF
123 13 Joël Cuissinat
124 13 Joël Cuissinat
cat install-minion.ps1
125 13 Joël Cuissinat
126 13 Joël Cuissinat
cmd="c:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -InputFormat None -ExecutionPolicy Bypass -EncodedCommand $(base64 -w 0 install-minion.ps1)"
127 13 Joël Cuissinat
/usr/share/eole/controlevnc/cliscribe.py -e "$cmd" "$IP_MACHINE"
128 13 Joël Cuissinat
</code></pre>
129 10 Joël Cuissinat
130 14 Joël Cuissinat
Évolutions à prévoir :
131 14 Joël Cuissinat
* 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
132 14 Joël Cuissinat
133 14 Joël Cuissinat
134 12 Joël Cuissinat
h3. Test de la procédure sous Windows7
135 10 Joël Cuissinat
136 12 Joël Cuissinat
Sur Windows 7, PowerShell est en version 2, il faut vérifier que le code proposé est fonctionnel sur cette version.
137 8 Joël Cuissinat
138 12 Joël Cuissinat
139 9 Joël Cuissinat
h2. Autres pistes
140 3 Joël Cuissinat
141 3 Joël Cuissinat
h3. Installeur du client Scribe
142 3 Joël Cuissinat
143 3 Joël Cuissinat
Créer une nouvelle version du client Scribe embarquant l'installeur Salt Minion et mettre à jour le numéro de version officielle.
144 3 Joël Cuissinat
La nouvelle version du client (et donc salt) sera automatiquement installée grâce au service de maj du client.
145 3 Joël Cuissinat
146 3 Joël Cuissinat
h3. psexec
147 3 Joël Cuissinat
148 3 Joël Cuissinat
"psexec":http://www.tutos.eu/?n=7963 pourrait être utilisé pour exécuter l'installation du minion à distance depuis une station.
149 12 Joël Cuissinat
150 12 Joël Cuissinat
151 12 Joël Cuissinat
152 12 Joël Cuissinat
h2. Trucs et astuces
153 12 Joël Cuissinat
154 12 Joël Cuissinat
h3. Process Explorer (procexp)
155 12 Joël Cuissinat
156 12 Joël Cuissinat
Process Explorer permet de surveiller l'activité des processus en cours d'utilisation par le système.
157 12 Joël Cuissinat
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".