Projet

Général

Profil

MigrationAD » Historique » Version 34

Joël Cuissinat, 18/06/2018 16:21

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 25 Joël Cuissinat
h1. 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 25 Joël Cuissinat
h1. Déploiement du Minion
34 1 Joël Cuissinat
35 25 Joël Cuissinat
h2. Déploiement avec les outils "Client Scribe"
36 25 Joël Cuissinat
37 3 Joël Cuissinat
L'utilisation du client Scribe permet d'envisager plusieurs pistes différentes.
38 3 Joël Cuissinat
39 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.
40 3 Joël Cuissinat
41 8 Joël Cuissinat
h3. Exécution de l'installeur à l'aide du client Scribe
42 3 Joël Cuissinat
43 8 Joël Cuissinat
Du fait de l'utilisation du partage "netlogon", le test suivant correspondrait plutôt au plan B...
44 3 Joël Cuissinat
45 3 Joël Cuissinat
<pre>
46 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
47 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
48 3 Joël Cuissinat
</pre>
49 3 Joël Cuissinat
50 3 Joël Cuissinat
=> accès refusé car le partage n'est pas accessible dans l'environnement Système !
51 3 Joël Cuissinat
52 1 Joël Cuissinat
Après copie *manuelle* du programme d'installation dans C:\, la commande suivante permet bien d'installer le Minion :
53 3 Joël Cuissinat
54 3 Joël Cuissinat
<pre>
55 3 Joël Cuissinat
/usr/share/eole/controlevnc/cliscribe.py -e 'C:\minion.exe /S /master=192.168.0.26' 192.168.0.183
56 3 Joël Cuissinat
</pre>
57 3 Joël Cuissinat
58 8 Joël Cuissinat
h3. Utilisation du serveur web du client Scribe
59 4 Joël Cuissinat
60 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.
61 6 Joël Cuissinat
62 4 Joël Cuissinat
<pre>
63 4 Joël Cuissinat
wget https://repo.saltstack.com/windows/Salt-Minion-2018.3.0-Py3-AMD64-Setup.exe -O /home/client_scribe
64 4 Joël Cuissinat
</pre>
65 1 Joël Cuissinat
66 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 :
67 6 Joël Cuissinat
68 1 Joël Cuissinat
<pre>
69 6 Joël Cuissinat
cat /home/client_scribe/install-minion.ps1
70 4 Joël Cuissinat
Set-ExecutionPolicy Bypass -Scope Process -Force
71 4 Joël Cuissinat
Set-Location $env:TEMP
72 4 Joël Cuissinat
Set-PSDebug -Trace 1
73 4 Joël Cuissinat
((new-object net.webclient).DownloadFile('http://scribe:8790/minion.exe', 'minion.exe'))
74 4 Joël Cuissinat
Get-ChildeItem $env:TEMP
75 4 Joël Cuissinat
minion.exe /S /master=192.168.0.26
76 4 Joël Cuissinat
</pre>
77 4 Joël Cuissinat
78 7 Joël Cuissinat
Commande à exécuter sous Windows :
79 4 Joël Cuissinat
<pre>
80 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'))
81 1 Joël Cuissinat
</pre>
82 1 Joël Cuissinat
83 7 Joël Cuissinat
Commande à exécuter sur le Scribe :
84 7 Joël Cuissinat
<pre>
85 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'))\""
86 7 Joël Cuissinat
/usr/share/eole/controlevnc/cliscribe.py -e "$cmd"  192.168.0.183
87 7 Joël Cuissinat
</pre>
88 7 Joël Cuissinat
89 8 Joël Cuissinat
h3. Suppression du script PowerShell intermédiaire en le remplaçant par une chaîne en base64
90 7 Joël Cuissinat
91 7 Joël Cuissinat
Il est possible d'envoyer la ou les commandes PS encodées en base64 à l'aide de l'option @-EncodedCommand@
92 1 Joël Cuissinat
93 10 Joël Cuissinat
ATTENTION : Il faut au préalable que le fichier créé sous Linux soit dans un "bon" format !
94 10 Joël Cuissinat
95 10 Joël Cuissinat
<pre>
96 10 Joël Cuissinat
iconv -f UTF-8 -t UTF-16LE <install-minion.ps1 >install-minion.ps2
97 10 Joël Cuissinat
</pre>
98 10 Joël Cuissinat
99 13 Joël Cuissinat
Cela nous a fait parvenir à une première version de script assez complète :
100 13 Joël Cuissinat
<pre><code class="groovy">
101 13 Joël Cuissinat
#!/bin/bash
102 13 Joël Cuissinat
103 13 Joël Cuissinat
IP_SCRIBE="${1}"
104 13 Joël Cuissinat
echo IP_SCRIBE=$IP_SCRIBE
105 13 Joël Cuissinat
IP_MACHINE="${2}"
106 13 Joël Cuissinat
echo IP_MACHINE=$IP_MACHINE
107 13 Joël Cuissinat
VERSION_MINION="${3:-2018.3.1-Py3}"
108 13 Joël Cuissinat
echo VERSION_MINION=$VERSION_MINION
109 13 Joël Cuissinat
110 13 Joël Cuissinat
iconv -f UTF-8 -t UTF-16LE >install-minion.ps1 <<EOF
111 13 Joël Cuissinat
Set-ExecutionPolicy Bypass -Scope Process -Force
112 13 Joël Cuissinat
Start-Transcript -Path "C:\\windows\\install-minion.log" -Append
113 13 Joël Cuissinat
Write-Host '$(date)'
114 13 Joël Cuissinat
Set-Location \$env:TEMP
115 13 Joël Cuissinat
Set-PSDebug -Trace 1
116 16 Joël Cuissinat
\$url = "https://repo.saltstack.com/windows/Salt-Minion-${VERSION_MINION}-\$env:PROCESSOR_ARCHITECTURE-Setup.exe"
117 1 Joël Cuissinat
\$output = "\$env:TEMP\minion.exe"
118 16 Joël Cuissinat
Write-Host "Download \$url"
119 13 Joël Cuissinat
\$wc = New-Object System.Net.WebClient
120 13 Joël Cuissinat
\$wc.DownloadFile(\$url, \$output)
121 20 Joël Cuissinat
If ([Environment]::OSVersion.Version.Major -gt 6)
122 20 Joël Cuissinat
{
123 1 Joël Cuissinat
Unblock-File \$output
124 20 Joël Cuissinat
}
125 20 Joël Cuissinat
Write-Host "Install Salt-Minion from \$output"
126 13 Joël Cuissinat
CMD.Exe /C "\$output" /S /master=$IP_SCRIBE
127 16 Joël Cuissinat
Write-Host "LastExitCode : \$LastExitCode"
128 13 Joël Cuissinat
Stop-Transcript
129 1 Joël Cuissinat
EOF
130 20 Joël Cuissinat
131 13 Joël Cuissinat
cat install-minion.ps1
132 13 Joël Cuissinat
133 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)"
134 13 Joël Cuissinat
/usr/share/eole/controlevnc/cliscribe.py -e "$cmd" "$IP_MACHINE"
135 10 Joël Cuissinat
</code></pre>
136 14 Joël Cuissinat
137 24 Joël Cuissinat
NB : Exemple d'appel du script actuel @./install-minion-scribe.sh 192.168.0.26 192.168.0.183@
138 24 Joël Cuissinat
139 14 Joël Cuissinat
Évolutions à prévoir :
140 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
141 14 Joël Cuissinat
142 12 Joël Cuissinat
h3. Test de la procédure sous Windows7
143 10 Joël Cuissinat
144 17 Joël Cuissinat
Sur Windows 7, PowerShell est en version 2.0, il faut vérifier que le code proposé est fonctionnel sur cette version.
145 1 Joël Cuissinat
146 17 Joël Cuissinat
<pre>
147 17 Joël Cuissinat
PS C:\> $PSVersionTable.PSVersion
148 17 Joël Cuissinat
149 17 Joël Cuissinat
Major  Minor  Build  Revision
150 17 Joël Cuissinat
-----  -----  -----  --------
151 17 Joël Cuissinat
2      0      -1     -1
152 17 Joël Cuissinat
</pre>
153 12 Joël Cuissinat
154 18 Joël Cuissinat
La commande *Unblock-File* n'est disponible qu'à partir de Powershell 3.0 mais malgré l'erreur, Salt-Minion a été installé !
155 18 Joël Cuissinat
156 21 Joël Cuissinat
Mais, il est possible d'obtenir et de tester la version de Windows de plusieurs manières...
157 21 Joël Cuissinat
158 21 Joël Cuissinat
<pre>
159 21 Joël Cuissinat
[Environment]::OSVersion.Version
160 21 Joël Cuissinat
</pre>
161 21 Joël Cuissinat
162 21 Joël Cuissinat
<pre>
163 21 Joël Cuissinat
gwmi win32_operatingsystem
164 1 Joël Cuissinat
</pre>
165 1 Joël Cuissinat
166 25 Joël Cuissinat
h2. Déploiement après transformation du Scribe en ScribeAD
167 25 Joël Cuissinat
168 30 Joël Cuissinat
Contexte : deux stations (10 et 7) intégrées au domaine Scribe.
169 1 Joël Cuissinat
170 30 Joël Cuissinat
h3. Passage en ScribeAD
171 30 Joël Cuissinat
172 27 Joël Cuissinat
<pre>
173 27 Joël Cuissinat
root@scribe:~# apt-eole install scribe-ad
174 27 Joël Cuissinat
    [ ... ]
175 27 Joël Cuissinat
root@scribe:~# CreoleSet ad_public_address 192.168.0.30
176 27 Joël Cuissinat
root@scribe:~# instance
177 27 Joël Cuissinat
    [ ... ]
178 1 Joël Cuissinat
</pre>
179 30 Joël Cuissinat
180 30 Joël Cuissinat
h3. Installation de Salt via le client Scribe
181 30 Joël Cuissinat
182 30 Joël Cuissinat
<pre>
183 30 Joël Cuissinat
root@scribe:~# ./install-minion-scribe.sh 192.168.0.26 192.168.0.183
184 30 Joël Cuissinat
    [ ... ]
185 30 Joël Cuissinat
root@scribe:~# ./install-minion-scribe.sh 192.168.0.26 192.168.0.181
186 30 Joël Cuissinat
    [ ... ]
187 30 Joël Cuissinat
</pre>
188 30 Joël Cuissinat
189 30 Joël Cuissinat
Peu de temps après, les minions se manifestaient :
190 30 Joël Cuissinat
<pre>
191 30 Joël Cuissinat
root@scribe:~# salt-key 
192 30 Joël Cuissinat
Accepted Keys:
193 30 Joël Cuissinat
Denied Keys:
194 30 Joël Cuissinat
Unaccepted Keys:
195 30 Joël Cuissinat
PC-124784.ac-test.fr
196 30 Joël Cuissinat
PCWIN7.ac-test.fr
197 30 Joël Cuissinat
Rejected Keys:
198 30 Joël Cuissinat
</pre>
199 30 Joël Cuissinat
200 30 Joël Cuissinat
h3. Gestion du Timeout
201 30 Joël Cuissinat
202 30 Joël Cuissinat
Après acceptation des clés, le basique "test.ping" était en échec :
203 30 Joël Cuissinat
<pre>
204 30 Joël Cuissinat
root@scribe:~# salt *.ac-test.fr test.ping 
205 30 Joël Cuissinat
PCWIN7.ac-test.fr:
206 30 Joël Cuissinat
    Minion did not return. [No response]
207 30 Joël Cuissinat
PC-124784.ac-test.fr:
208 30 Joël Cuissinat
    Minion did not return. [No response]
209 30 Joël Cuissinat
</pre>
210 30 Joël Cuissinat
211 30 Joël Cuissinat
=> il faut augmenter le timout et/ou utiliser systématiquement le *mode asynchrone* !
212 30 Joël Cuissinat
<pre>
213 30 Joël Cuissinat
root@scribe:~# salt -t30 *.ac-test.fr test.ping 
214 30 Joël Cuissinat
PCWIN7.ac-test.fr:
215 30 Joël Cuissinat
    True
216 30 Joël Cuissinat
PC-124784.ac-test.fr:
217 30 Joël Cuissinat
    True
218 30 Joël Cuissinat
</pre>
219 30 Joël Cuissinat
220 3 Joël Cuissinat
h2. Autres pistes
221 3 Joël Cuissinat
222 3 Joël Cuissinat
h3. Installeur du client Scribe
223 3 Joël Cuissinat
224 1 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.
225 3 Joël Cuissinat
La nouvelle version du client (et donc salt) sera automatiquement installée grâce au service de maj du client.
226 3 Joël Cuissinat
227 25 Joël Cuissinat
h3. Commande psexec
228 12 Joël Cuissinat
229 12 Joël Cuissinat
"psexec":http://www.tutos.eu/?n=7963 pourrait être utilisé pour exécuter l'installation du minion à distance depuis une station.
230 12 Joël Cuissinat
231 12 Joël Cuissinat
h2. Trucs et astuces
232 12 Joël Cuissinat
233 1 Joël Cuissinat
h3. Process Explorer (procexp)
234 1 Joël Cuissinat
235 1 Joël Cuissinat
Process Explorer permet de surveiller l'activité des processus en cours d'utilisation par le système.
236 1 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".
237 29 Joël Cuissinat
238 29 Joël Cuissinat
h3. Débogage du Minion sous Windows
239 29 Joël Cuissinat
240 29 Joël Cuissinat
Le script suivant permet d'arrêter le service et de lancer le Minion en mode débogage :
241 29 Joël Cuissinat
<pre>
242 29 Joël Cuissinat
C:\salt\salt-minion-debug.bat
243 29 Joël Cuissinat
</pre>
244 29 Joël Cuissinat
245 29 Joël Cuissinat
Par défaut, le log console n'est pas horodaté, nous avons du éditer le fichier de configuration du minion afin de modifier le paramètre : *log_fmt_console*
246 15 Joël Cuissinat
247 32 Joël Cuissinat
h1. Jonction au domaine et gestion des clients
248 32 Joël Cuissinat
249 34 Joël Cuissinat
h2. Jonction au domaine
250 34 Joël Cuissinat
251 34 Joël Cuissinat
h3. Modification forcée du DNS
252 34 Joël Cuissinat
253 34 Joël Cuissinat
*ATTENTION* : Les commandes salt utilisées nécessitent d'abord de connaître le nom de l'interface (ici : "Ethernet", la valeur par défaut étant "Local Area Connection") et elles n'ont pas fonctionné avec mon Windows 7 (traceback) :  
254 34 Joël Cuissinat
<pre>
255 34 Joël Cuissinat
root@scribe:~# salt -t30 PC-124784.ac-test.fr network.get_route 192.168.0.30
256 34 Joël Cuissinat
PC-124784.ac-test.fr:
257 34 Joël Cuissinat
    ----------
258 34 Joël Cuissinat
    destination:
259 34 Joël Cuissinat
        192.168.0.30
260 34 Joël Cuissinat
    gateway:
261 34 Joël Cuissinat
        0.0.0.0
262 34 Joël Cuissinat
    interface:
263 34 Joël Cuissinat
        Ethernet
264 34 Joël Cuissinat
    source:
265 34 Joël Cuissinat
        192.168.0.183
266 34 Joël Cuissinat
root@scribe:~# salt -t30 PC-124784.ac-test.fr win_dns_client.add_dns 192.168.0.30 "Ethernet" 
267 34 Joël Cuissinat
PC-124784.ac-test.fr:
268 34 Joël Cuissinat
    True
269 34 Joël Cuissinat
</pre>
270 34 Joël Cuissinat
271 34 Joël Cuissinat
h3. Jonction au domaine "forcée"
272 34 Joël Cuissinat
273 34 Joël Cuissinat
<pre>
274 34 Joël Cuissinat
root@scribe:~# salt -t120  PC-124784.ac-test.fr system.join_domain domain='ac-test.fr' username='admin' password='eole' account_exists=False restart=True
275 34 Joël Cuissinat
PC-124784.ac-test.fr:
276 34 Joël Cuissinat
    ----------
277 34 Joël Cuissinat
    Domain:
278 34 Joël Cuissinat
        ac-test.fr
279 34 Joël Cuissinat
    Restart:
280 34 Joël Cuissinat
        True
281 34 Joël Cuissinat
</pre>
282 34 Joël Cuissinat
283 32 Joël Cuissinat
284 32 Joël Cuissinat
285 25 Joël Cuissinat
h1. Accompagnement et suivi du déploiement
286 15 Joël Cuissinat
287 25 Joël Cuissinat
h2. Liste des stations connues du domaine NT
288 19 Joël Cuissinat
289 25 Joël Cuissinat
h3. Interroger le client Scribe
290 15 Joël Cuissinat
291 15 Joël Cuissinat
Le script */usr/share/eole/controlevnc/manage_stations.py* permet d'obtenir la liste de toutes les stations.
292 19 Joël Cuissinat
L'option @--list-all@ permet, par exemple de lister toutes les machines du domaine
293 1 Joël Cuissinat
294 19 Joël Cuissinat
<pre>
295 26 Joël Cuissinat
root@scribe:~# /usr/share/eole/controlevnc/manage_stations.py | sed s'/;/\n/'g
296 19 Joël Cuissinat
192.168.0.183, pc-125292, admin
297 19 Joël Cuissinat
192.168.0.186, , 
298 19 Joël Cuissinat
192.168.0.181, pcwin7, admin
299 19 Joël Cuissinat
</pre>
300 19 Joël Cuissinat
301 25 Joël Cuissinat
h3. Interroger l'annuaire via smbldap-tools
302 1 Joël Cuissinat
303 19 Joël Cuissinat
<pre>
304 19 Joël Cuissinat
root@scribe:/home/client_scribe# smbldap-userlist -m
305 19 Joël Cuissinat
uid  |username             
306 19 Joël Cuissinat
307 19 Joël Cuissinat
10066 |pc-125292$           |
308 19 Joël Cuissinat
10067 |pcwin7$   
309 19 Joël Cuissinat
</pre>
310 1 Joël Cuissinat
311 25 Joël Cuissinat
h3. Interroger directement l'annuaire 
312 19 Joël Cuissinat
313 19 Joël Cuissinat
<pre>
314 19 Joël Cuissinat
root@scribe:/home/client_scribe# ldapsearch -x "(sambaAcctFlags=[W          ])" cn | grep ^cn:
315 1 Joël Cuissinat
cn: pc-125292$
316 19 Joël Cuissinat
cn: pcwin7$
317 19 Joël Cuissinat
</pre>
318 19 Joël Cuissinat
319 25 Joël Cuissinat
h2. Liste des stations avec Salt-Minion installé
320 15 Joël Cuissinat
321 15 Joël Cuissinat
La commande *salt-key* permet de connaître la liste des Minons enregistrés ou en attente d'enregistrement.
322 1 Joël Cuissinat
323 28 Joël Cuissinat
324 28 Joël Cuissinat
<pre>
325 28 Joël Cuissinat
root@scribe:~# salt-key 
326 28 Joël Cuissinat
Accepted Keys:
327 28 Joël Cuissinat
Denied Keys:
328 28 Joël Cuissinat
Unaccepted Keys:
329 28 Joël Cuissinat
PC-124784.ac-test.fr
330 28 Joël Cuissinat
PCWIN7.ac-test.fr
331 28 Joël Cuissinat
Rejected Keys:
332 28 Joël Cuissinat
</pre>
333 28 Joël Cuissinat
334 28 Joël Cuissinat
335 28 Joël Cuissinat
TODO : définir la stratégie de déploiement/d'acceptation des clés
336 23 Joël Cuissinat
337 25 Joël Cuissinat
h2. Liste des stations intégrées au domaine AD
338 23 Joël Cuissinat
339 23 Joël Cuissinat
FIXME : '(objectclass=Computer)'