Änderungen von Dokument Eigene Autoconf-Rolle erstellen

Zuletzt geändert von Tom Altenbrunn am 2023/03/17 08:03

Von Version 50.3
bearbeitet von Tom Altenbrunn
am 2023/03/16 16:53
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 24.1
bearbeitet von Jonas Mayer
am 2023/03/15 21:41
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Dokument-Autor
... ... @@ -1,1 +1,1 @@
1 -XWiki.TomAltenbrunn@sbede
1 +XWiki.jonasmayer@sbede
Inhalt
... ... @@ -1,6 +1,5 @@
1 1  {{toc depth="3"/}}
2 2  
3 -----
4 4  
5 5  = (% style="font-size:22px" %)__**Allgemeines**__(%%) =
6 6  
... ... @@ -13,7 +13,7 @@
13 13  [[image:image-20230315103418-1.png||height="103" width="1344" class="img-thumbnail"]]
14 14  
15 15  
16 -Darüber hinaus ist es Partnern und Kunden möglich, für spezielle / anwendungsspezifische Anforderungen eigene AutoConf-Rollen zu erstellen und im LD Control Center mit Clients zu verknüpfen. Dafür steht am LD-Server ein eigenes Verzeichnis zur Verfügung, welches sich ebenfalls im LXC-Container ctrl-g1 befindet und nicht durch Server-Updates beeinflusst oder überschrieben wird. Der genaue Speicherpfad hängt von der Puppet-Version des Servers ab:
15 +Darüber hinaus ist es Partnern und Kunden möglich, für spezielle / anwendungsspezifische Anforderungen eigene Autoconf-Rollen zu erstellen und im LD Control Center mit Clients zu verknüpfen. Dafür steht am LD-Server ein eigenes Verzeichnis zur Verfügung, welches sich ebenfalls im LXC-Container ctrl-g1 befindet und nicht durch Server-Updates beeinflusst oder überschrieben wird. Der genaue Speicherpfad hängt von der Puppet-Version des Servers ab:
17 17  
18 18  * bis Puppet-Version **1.4.x** : {{code language="bash"}}/var/lib/ld-autoconf/custom/{{/code}}
19 19  * ab Puppet-Version **1.5.x **:  {{code language="bash" layout="LINENUMBERS"}}/data/ld/autoconf/custom/{{/code}}
... ... @@ -28,7 +28,7 @@
28 28  
29 29  Für die Funktionalität der Autoconf-Rolle ist es also nötig, PowerShell-Skripte am Server abzuspeichern, die die Instruktionen an den Arbeitsstationen ausführen. Für diese Skripte sind folgende Dateinamen zulässig:
30 30  
31 -* **main.ps1** - Skript wird in allen Phasen ausgeführt, die innerhalb der Beschreibungsdatei (% data-xwiki-non-generated-content="java.util.List" %){{box}}meta/logodidact.yml{{/box}}(%%) festgelegt sind. Eine solche Datei folgt dem Prinzip „in jeder Phase soll genau das gleiche stattfinden“.
30 +* **main.ps1** - Skript wird in allen Phasen ausgeführt, die innerhalb der Beschreibungsdatei {{box}}meta/logodidact.yml{{/box}} festgelegt sind
32 32  * (% style="color:#8e44ad" %)**setup.ps1**(%%) - Skript wird ausschließlich in der SETUP-Phase während des Deployments ausgeführt. In der Setup-Phase ist der Client noch veränderlich und besitzt noch keine Schutzfunktion, selbst wenn der Schutz aktiviert ist.
33 33  * (% style="color:#8e44ad" %)**custom.ps1**(%%) - Skript wird ausschließlich in der CUSTOM-Phase ausgeführt. Dies geschieht sowohl 1x während des Deployments als auch später nach jedem Hochfahren des PCs 1x im Hintergrund.
34 34  * (% style="color:#8e44ad" %)**user.ps1**(%%) - Skript wird ausschließlich in der USER-Phase ausgeführt. Diese Phase wird nicht direkt während des Deployments durchlaufen, sondern erst später während der Benutzeranmeldung an betriebsbereiten PCs.
... ... @@ -41,13 +41,8 @@
41 41  )))
42 42  
43 43  
44 - Nachfolgend sind grafisch die diversen Deploy-Phasen dargestellt, welche ein Client während des Imaging-Vorgangs durchläuft. Die Abarbeitung von AutoConf-Rollen beginnen ab der Phase "**Re-Setup**" . Anhand der Deploy-Phase kann somit auf die Verarbeitungsphase der Rolle rückgeschlossen werden.
45 -
46 - [[image:image-20230316155817-1.png||class="img-thumbnail"]]
47 -
48 48  ----
49 49  
50 -
51 51  = (% style="font-size:22px" %)__**Beispielaufbau einer logodidact.yml**__(%%) =
52 52  
53 53  
... ... @@ -78,9 +78,9 @@
78 78  **Tipp:** Der Variablentyp ENUM aus dem Beispiel ergibt ein Dropdown-Menü, in dem man aus den vordefinierten 4 Werten (none / compact / detailed / verbose) auswählen kann.
79 79  )))
80 80  
75 +
81 81  ----
82 82  
83 -
84 84  = (% style="font-size:22px" %)__**Neue AutoConf-Rollen nach Fertigstellung freigeben**__(%%) =
85 85  
86 86  
... ... @@ -97,12 +97,12 @@
97 97  [[image:attach:autoconf.png||data-xwiki-image-style-border="true" class="img-thumbnail"]]
98 98  
99 99  
94 +
100 100  ----
101 101  
97 += (% style="font-size:22px" %)__**Weiteres, funktionsfertiges Beispiel: Rolle „WLAN Profil mit PSK anlegen“**__(%%) =
102 102  
103 -= (% style="font-size:22px" %)__**Funktionsfertiges Beispiel: Rolle „WLAN Profil mit PSK anlegen“**__(%%) =
104 104  
105 -
106 106  Zum besseren Verständnis wird nachfolgend eine feste Autoconf-Rolle zur Konfiguration eines WLAN-Profils (SSID inkl. PSK) an Clients näher beleuchtet.
107 107  
108 108  (% class="box" %)
... ... @@ -118,13 +118,13 @@
118 118   authors:
119 119   - Marcel Petersen
120 120   company: SBE network solutions GmbH
121 -(% style="color:#1abc9c" %) display_name:(%%) WLAN Profil mit PSK anlegen
115 +(% style="color:#1abc9c" %)display_name:(%%) WLAN Profil mit PSK anlegen
122 122   license: SBE
123 -(% style="color:#8e44ad" %) uuid:(%%) 52318636-c4f5-11ea-baf9-0bff00c66ff4
117 +(% style="color:#8e44ad" %) uuid:(%%) 52318636-c4f5-11ea-baf9-0bff00c66ff4
124 124   visible: true
125 -(% style="color:#19177c" %) priority:(%%) 0
126 - apply_always: false
127 -(% style="color:#f1c40f" %) tags:(%%)
119 + priority: 0
120 + applyAlways: false
121 +(% style="color:#f1c40f" %) tags:(%%)
128 128   - CUSTOM
129 129  (% style="color:#e74c3c" %) vars:(%%)
130 130   ssid:
... ... @@ -135,7 +135,7 @@
135 135   display_name: Passwort
136 136   optional: false
137 137   type: PASSWORD
138 -(% style="color:#2980b9" %) systems:(%%)
132 +(% style="color:#2980b9" %)systems:(%%)
139 139   - WINDOWS
140 140   - LINUX
141 141  )))
... ... @@ -144,8 +144,6 @@
144 144  
145 145  (% style="color:#8e44ad" %)**uuid**(%%) = ID der Autoconf-Regel. Muss einmalig sein. Bei einer eigenen Autoconf-Rolle sollte der Wert am besten neu generiert werden. [[https:~~/~~/www.uuidgenerator.net/>>url:https://www.uuidgenerator.net/]]
146 146  
147 -(% style="color:#19177c" %)**priority**(% style="color:#2980b9" %)** **(%%)= Legt die Verarbeitungsreihenfolge der Autoconf-Rolle gegenüber weiteren Rollen fest, die in derselben Phase ausgeführt werden. Bei gleicher Priorität findet die Abarbeitung alphabetisch statt. Eine höhere Priorität führt zu früherer Ausführung.
148 -
149 149  (% style="color:#f1c40f" %)**tags**(%%) = beschreibt, in welchen Phasen die Autoconf-Regel ausgeführt wird.
150 150  
151 151  (% style="color:#e74c3c" %)**vars**(%%)** **= definiert mögliche Variablen, die den Skripten übergeben werden
... ... @@ -155,24 +155,19 @@
155 155  * type = bestimmt den Typ der Variable. Gültige Typen sind: STRING, PASSWORD, BOOLEAN, ENUM, ARRAY, INTEGER
156 156  * example = Zeigt einen grau eingefärbten Beispieltext innerhalb der definierten Variable an, ohne dass dieser als Wert festgelegt ist (Hilfsmittel für Anwender).
157 157  
158 -(% style="color:#2980b9" %)**systems **(%%)= Legt fest, welche Betriebssystem-Typen durch die Autoconf-Rolle unterstützt werden. Gültige Systeme sind WINDOWS / LINUX. Die Rolle aus dem Beispiel unterstützt beide Betriebssysteme gleichzeitig.
150 +(% style="color:#2980b9" %) **systems **(%%)= Legt fest, welche Betriebssystem-Typen durch die Autoconf-Rolle unterstützt werden. Gültige Systeme sind WINDOWS / LINUX. Die Rolle aus dem Beispiel unterstützt beide Betriebssysteme gleichzeitig.
159 159  
152 +
160 160  ----
161 161  
162 -
163 163  == (% style="font-size:16px" %)**Inhalt des PowerShell-Skripts main.ps1, das die Variablen entgegennimmt**(%%) ==
164 164  
165 -Im Unterverzeichnis {{box}} win/ {{/box}} oder {{box}} lin/ {{/box}} der Autoconf-Rolle können sich wie erläutert unterschiedliche PowerShell-Skripte zur Ausführung in den verschiedenen Phasen befinden.
166 -In dieser Rolle liegt konkret das allgemeingültige Skript {{box}}main.ps1{{/box}} vor, welches die Variablen als Parameter ##$ssid## und ##$psk## intern verwendet.
167 167  
158 +Im Verzeichnis {{box}} win/ {{/box}} können sich unterschiedliche Powershell-Skripte befinden. In dieser Rolle liegt das allgemeingültige Skript main.ps1 vor, welches die Variablen als Parameter ##$ssid## und ##$psk## intern verwendet.
168 168  
169 -(% style="color:#19177c" %)**Windows Variante**
170 -
171 -{{code language="text" width="50%"}}
160 +{{code width="50%"}}
172 172  root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1
173 -{{/code}}
174 174  
175 -{{code width="50%" language="powershell"}}
176 176  Param
177 177  (
178 178   [parameter(Mandatory=$false)]
... ... @@ -225,159 +225,22 @@
225 225  
226 226   Remove-Item -Path $file -Force
227 227  }
228 -{{/code}}
229 229  
230 -
231 -(% style="color:#19177c" %)**Linux Variante (Network Manager)**
232 -
233 -{{code language="text" width="50%"}}
234 -root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/lin/main.ps1
216 +Param() = hier werden die übergebenen Parameter von meta/logodidact.yml zu lokalen Variablen.
235 235  {{/code}}
236 236  
237 -{{code language="powershell" width="50%"}}
238 -Param
239 -(
240 - [parameter(Mandatory=$false)]
241 - [String]
242 - $ssid,
243 - [parameter(Mandatory=$false)]
244 - [String]
245 - $psk
246 -)
219 +==== ====
247 247  
248 -if ($ssid -ne '' -and $psk -ne '') {
249 - if (Get-Command "nmcli" -ErrorAction SilentlyContinue) {
250 - # Check if kernel modules are up
251 - nmcli dev wifi rescan
252 - if ($LASTEXITCODE -ne 0) {
253 - Start-Sleep -Seconds 30
254 - }
255 -
256 - # Check again
257 - nmcli dev wifi rescan
258 - if ($LASTEXITCODE -ne 0) {
259 - Write-Verbose "Skipping role. There might be no WiFi device installed."
260 - exit 0
261 - }
262 -
263 - $config = "/etc/NetworkManager/system-connections/$ssid"
221 +==== ====
264 264  
265 - if (Test-Path -Path $config) {
266 - Write-Verbose "Removing '$config'"
267 - Remove-Item -Path $config -Recurse -Force
268 - }
223 +==== ====
269 269  
270 - Write-Verbose "Connecting to '$ssid'"
271 -
272 - nmcli device wifi connect """$ssid""" password """$psk"""
273 -
274 - if ($LASTEXITCODE -eq 0) {
275 - Start-Sleep -Seconds 5
276 - nmcli con up """$ssid"""
225 +==== ====
277 277  
278 - if ($LASTEXITCODE -ne 0) {
279 - Write-Verbose "Error: Credentials wrong?"
227 +==== ====
280 280  
281 - if (Test-Path -Path $config) {
282 - Write-Verbose "Removing '$config'"
283 - Remove-Item -Path $config -Recurse -Force
284 - }
285 - }
286 - }
287 -
288 - Write-Verbose "Exiting with code: $LASTEXITCODE"
289 - exit $LASTEXITCODE
290 - }
229 +==== ====
291 291  
292 - Write-Verbose "No suitable implementation found"
293 - exit 1
294 -}
295 -{{/code}}
231 +==== ====
296 296  
297 -----
298 -
299 -
300 -
301 -= (% style="font-size:22px" %)__**Weiteres Beispiel: eigene AutoConf-Rolle zur „Deaktivierung der Suchhervorhebung in Windows“**__(%%) =
302 -
303 -Im nachfolgenden Beispiel wird eine einfache Rolle zur Deaktivierung der Suchvorhebung in Windows deklariert.
304 -\\[[image:image-20230316103442-2.png||height="530" width="1142" class="img-thumbnail"]]
305 -
306 -----
307 -
308 -== (% style="font-size:16px" %)**Aufbau der logodidact.yml**(%%) ==
309 -
310 -Neben den allgemeinen Informationen über die Autoren (authors), Unternehmen (company), einer Beschreibung (description), dem Anzeigenamen (display_name) im LD Control Center, usw, beginnt im Abschnitt {{code language="bash"}}vars{{/code}} die eigentliche Definition der Variable
311 -"**{{code}}disableSearchHighlight{{/code}}**".
312 -
313 -
314 -{{code language="yaml" width="45%"}}
315 -#logodidact.yml
316 -
317 -ld_info:
318 - authors:
319 - - Tom Altenbrunn
320 - - Olav Krapp
321 - - Marcel Petersen
322 - - Kerim Ekin
323 - company: SBE network solutions GmbH
324 - description: | #Beschreibung
325 - Die Suchhervorhebung in der Windows Suchleiste wird deaktiviert
326 - display_name: Windows Suchhervorhebung #Anzeigename im LD Control Center
327 - license: SBE
328 - uuid: fec4ff30-b2a6-407f-a6b3-0a621cd7eaf7 #einmalige UUID
329 - vars: #Deklaration der Variablen
330 - disableSearchHighlight: #Name der Variable
331 - display_name: Suchhervorhebung im Suchfeld deaktivieren #Anzeigename im LD Control Center
332 - optional: true #Auswahl optional
333 - type: BOOLEAN #Variablentyp Boolean = True/False
334 - value: false #Standardwert false
335 - visible: true #Sichtbarkeit der Variable im LD Control Center
336 - priority: 0 #Abarbeitungspriorität
337 - apply_always: false
338 - tags:
339 - - CUSTOM #Ausführungszeitpunkt während der/den Phase(n)
340 - systems:
341 - - WINDOWS #Betriebssystem
342 -{{/code}}
343 -
344 -----
345 -
346 -== (% style="font-size:16px" %)**Aufbau der main.ps1**(%%) ==
347 -
348 -Danach erfolgt die Erstellung des ausführbaren Codes per Powershell. Im ersten Abschnitt (% style="color:#008000" %)**Param** (%%)werden die in der im vorigen Abschnitt definierten Variablen {{code}}vars{{/code}} aus der logodidact.yml aufgeführt und definiert. Bei der Variable "**{{code}}disableSearchHighlight{{/code}}**" handelt es sich um ein Boolean (True/False). Die Bedingung "**[parameter(Mandatory=$false)]**" setzt das Vorhandensein der Variable während dem Ablauf des Skriptes nicht als zwingend notwendig voraus, sodass bei einem darauffolgenden Verarbeitungsfehler o.ä. die Abarbeitung weiter erfolgt.
349 -
350 -{{code language="powershell"}}
351 -#main.ps1
352 -
353 -Param
354 -(
355 - [parameter(Mandatory=$false)] #Variable zwingend erforderlich?
356 - [bool] #Variablentyp
357 - $disableSearchHighlight #Name der def. Variable aus logodidact.yml
358 -)
359 -
360 -$SystemVersion=[System.Environment]::OSVersion.Version #Hole Windows Systemversion
361 -
362 -#Beginn des eigentlichen Codes
363 -if ($SystemVersion.Major -eq 10 -and $SystemVersion.Build -ge 19044) {
364 - $val = [int]!$disableSearchHighlight
365 - Write-Verbose "Setting EnableDynamicContentInWSB to '$val'"
366 - [Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Windows Search","EnableDynamicContentInWSB",$val,[Microsoft.Win32.RegistryValueKind]::DWord)
367 -} else {
368 - Write-Host "Feature ist erst ab dem Release 21H2 verfügbar."
369 -}
370 -{{/code}}
371 -
372 -----
373 -
374 -== (% style="font-size:16px" %)**Einlesen der AutoConf-Rollen am Server**(%%) ==
375 -
376 -[[image:image-20230316110425-1.png||height="124" width="1186" class="img-thumbnail"]]
377 -
378 -
379 -== (% style="font-size:16px" %)**Ansicht im LD Control Center**(%%) ==
380 -
381 -[[image:image-20230316110525-2.png||class="img-thumbnail"]]
382 -
383 -
233 +==== ====
image-20230316094933-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,1 +1,0 @@
1 -43.3 KB
Inhalt
image-20230316095106-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,1 +1,0 @@
1 -47.8 KB
Inhalt
image-20230316102252-3.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,1 +1,0 @@
1 -166.3 KB
Inhalt
image-20230316102302-4.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,1 +1,0 @@
1 -166.3 KB
Inhalt
image-20230316103224-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,1 +1,0 @@
1 -166.3 KB
Inhalt
image-20230316103442-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,1 +1,0 @@
1 -201.2 KB
Inhalt
image-20230316110425-1.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,1 +1,0 @@
1 -166.3 KB
Inhalt
image-20230316110525-2.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,1 +1,0 @@
1 -48.3 KB
Inhalt