MigrationAD » Historique » Version 15
Joël Cuissinat, 15/06/2018 14:50
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". |
158 | 15 | Joël Cuissinat | |
159 | 15 | Joël Cuissinat | |
160 | 15 | Joël Cuissinat | h2. Accompagnement et suivi du déploiement |
161 | 15 | Joël Cuissinat | |
162 | 15 | Joël Cuissinat | h3. Liste des stations connues |
163 | 15 | Joël Cuissinat | |
164 | 15 | Joël Cuissinat | Le script */usr/share/eole/controlevnc/manage_stations.py* permet d'obtenir la liste de toutes les stations. |
165 | 15 | Joël Cuissinat | L'option @--list-all@ permet, par exemple de lister toutes les machines du domaine |
166 | 15 | Joël Cuissinat | |
167 | 15 | Joël Cuissinat | h3. Liste des stations avec le Minion |
168 | 15 | Joël Cuissinat | |
169 | 15 | Joël Cuissinat | La commande *salt-key* permet de connaître la liste des Minons enregistrés ou en attente d'enregistrement. |
170 | 15 | Joël Cuissinat | TODO : définir la stratégie de déploiement/d'acceptation des clés |