Änderungen von Dokument Eigene Autoconf-Rolle erstellen

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

Von Version 31.1
bearbeitet von Tom Altenbrunn
am 2023/03/16 10:39
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 26.1
bearbeitet von Jonas Mayer
am 2023/03/15 21:54
Ä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  
... ... @@ -40,9 +40,9 @@
40 40  (% style="font-size:12px" %)**Hinweis: **Skripte, die durch ihren Dateinamen auf einzelne Phasen eingeschränkt sind ((% style="color:#8e44ad; font-size:12px" %)lila eingefärbt(% style="font-size:12px" %)), dürfen sich inhaltlich zueinander unterscheiden. Dadurch kann eine Autoconf-Rolle sehr flexibel gestaltet werden und in den verschiedenen Phasen des Deployments unterschiedliche Aktionen ausführen.
41 41  )))
42 42  
42 +
43 43  ----
44 44  
45 -
46 46  = (% style="font-size:22px" %)__**Beispielaufbau einer logodidact.yml**__(%%) =
47 47  
48 48  
... ... @@ -73,9 +73,9 @@
73 73  **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.
74 74  )))
75 75  
75 +
76 76  ----
77 77  
78 -
79 79  = (% style="font-size:22px" %)__**Neue AutoConf-Rollen nach Fertigstellung freigeben**__(%%) =
80 80  
81 81  
... ... @@ -92,12 +92,12 @@
92 92  [[image:attach:autoconf.png||data-xwiki-image-style-border="true" class="img-thumbnail"]]
93 93  
94 94  
94 +
95 95  ----
96 96  
97 += (% style="font-size:22px" %)__**Weiteres, funktionsfertiges Beispiel: Rolle „WLAN Profil mit PSK anlegen“**__(%%) =
97 97  
98 -= (% style="font-size:22px" %)__**Funktionsfertiges Beispiel: Rolle „WLAN Profil mit PSK anlegen“**__(%%) =
99 99  
100 -
101 101  Zum besseren Verständnis wird nachfolgend eine feste Autoconf-Rolle zur Konfiguration eines WLAN-Profils (SSID inkl. PSK) an Clients näher beleuchtet.
102 102  
103 103  (% class="box" %)
... ... @@ -117,7 +117,7 @@
117 117   license: SBE
118 118  (% style="color:#8e44ad" %) uuid:(%%) 52318636-c4f5-11ea-baf9-0bff00c66ff4
119 119   visible: true
120 -(% style="color:#19177c" %) priority:(%%) 0
119 + priority: 0
121 121   applyAlways: false
122 122  (% style="color:#f1c40f" %) tags:(%%)
123 123   - CUSTOM
... ... @@ -139,8 +139,6 @@
139 139  
140 140  (% 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/]]
141 141  
142 -(% 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.
143 -
144 144  (% style="color:#f1c40f" %)**tags**(%%) = beschreibt, in welchen Phasen die Autoconf-Regel ausgeführt wird.
145 145  
146 146  (% style="color:#e74c3c" %)**vars**(%%)** **= definiert mögliche Variablen, die den Skripten übergeben werden
... ... @@ -150,24 +150,19 @@
150 150  * type = bestimmt den Typ der Variable. Gültige Typen sind: STRING, PASSWORD, BOOLEAN, ENUM, ARRAY, INTEGER
151 151  * example = Zeigt einen grau eingefärbten Beispieltext innerhalb der definierten Variable an, ohne dass dieser als Wert festgelegt ist (Hilfsmittel für Anwender).
152 152  
153 -(% 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.
154 154  
152 +
155 155  ----
156 156  
157 -
158 158  == (% style="font-size:16px" %)**Inhalt des PowerShell-Skripts main.ps1, das die Variablen entgegennimmt**(%%) ==
159 159  
160 -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.
161 -In dieser Rolle liegt konkret das allgemeingültige Skript {{box}}main.ps1{{/box}} vor, welches die Variablen als Parameter ##$ssid## und ##$psk## intern verwendet.
162 162  
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.
163 163  
164 -(% style="color:#19177c" %)**Windows Variante**
165 -
166 -{{code language="text" width="50%"}}
160 +{{code width="50%"}}
167 167  root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1
168 -{{/code}}
169 169  
170 -{{code width="50%" language="powershell"}}
171 171  Param
172 172  (
173 173   [parameter(Mandatory=$false)]
... ... @@ -222,156 +222,18 @@
222 222  }
223 223  {{/code}}
224 224  
217 +==== ====
225 225  
226 -(% style="color:#19177c" %)**Linux Variante (Network Manager)**
219 +==== ====
227 227  
228 -{{code language="text" width="50%"}}
229 -root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/lin/main.ps1
230 -{{/code}}
221 +==== ====
231 231  
232 -{{code language="powershell" width="50%"}}
233 -Param
234 -(
235 - [parameter(Mandatory=$false)]
236 - [String]
237 - $ssid,
238 - [parameter(Mandatory=$false)]
239 - [String]
240 - $psk
241 -)
223 +==== ====
242 242  
243 -if ($ssid -ne '' -and $psk -ne '') {
244 - if (Get-Command "nmcli" -ErrorAction SilentlyContinue) {
245 - # Check if kernel modules are up
246 - nmcli dev wifi rescan
247 - if ($LASTEXITCODE -ne 0) {
248 - Start-Sleep -Seconds 30
249 - }
250 -
251 - # Check again
252 - nmcli dev wifi rescan
253 - if ($LASTEXITCODE -ne 0) {
254 - Write-Verbose "Skipping role. There might be no WiFi device installed."
255 - exit 0
256 - }
257 -
258 - $config = "/etc/NetworkManager/system-connections/$ssid"
225 +==== ====
259 259  
260 - if (Test-Path -Path $config) {
261 - Write-Verbose "Removing '$config'"
262 - Remove-Item -Path $config -Recurse -Force
263 - }
227 +==== ====
264 264  
265 - Write-Verbose "Connecting to '$ssid'"
266 -
267 - nmcli device wifi connect """$ssid""" password """$psk"""
268 -
269 - if ($LASTEXITCODE -eq 0) {
270 - Start-Sleep -Seconds 5
271 - nmcli con up """$ssid"""
229 +==== ====
272 272  
273 - if ($LASTEXITCODE -ne 0) {
274 - Write-Verbose "Error: Credentials wrong?"
275 -
276 - if (Test-Path -Path $config) {
277 - Write-Verbose "Removing '$config'"
278 - Remove-Item -Path $config -Recurse -Force
279 - }
280 - }
281 - }
282 -
283 - Write-Verbose "Exiting with code: $LASTEXITCODE"
284 - exit $LASTEXITCODE
285 - }
286 -
287 - Write-Verbose "No suitable implementation found"
288 - exit 1
289 -}
290 -{{/code}}
291 -
292 -----
293 -
294 -= (% style="font-size:22px" %)__**Beispiel: eigene AutoConf-Rolle zur "Deaktivierung der Suchhervorhebung in Windows"**__(%%) =
295 -
296 -= =
297 -
298 -(((
299 -Im nachfolgenden Beispiel wird eine einfache Rolle zur Deaktivierung der Suchvorhebung in Windows deklariert. 
300 -\\[[image:image-20230316103442-2.png||height="530" width="1142" class="img-thumbnail"]]
301 -
302 -----
303 -
304 -== (% style="font-size:16px" %)**Aufbau der Logodidact.yml:**(%%) ==
305 -
306 -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
307 -"**{{code language="bash"}}disableSearchHighlight{{/code}}**".
308 -
309 -
310 -{{code language="yaml" width="45%"}}
311 -#logodidact.yml
312 -
313 -ld_info:
314 - authors:
315 - - Olav Krapp
316 - - Marcel Petersen
317 - - Kerim Ekin
318 - company: SBE network solutions GmbH
319 - description: | #Beschreibung
320 - Die Suchhervorhebung in der Windows Suchleiste wird deaktiviert
321 - display_name: Windows Suchhervorhebung #Anzeigename im LD Control Center
322 - license: SBE
323 - uuid: fec4ff30-b2a6-407f-a6b3-0a621cd7eaf7 #einmalige UUID
324 - vars: #Deklaration der Variablen
325 - disableSearchHighlight: #Name der Variable
326 - display_name: Suchhervorhebung im Suchfeld deaktivieren #Anzeigename im LD Control Center
327 - optional: true #Auswahl optional
328 - type: BOOLEAN #Variablentyp Boolean = True/False
329 - value: false #Standardwert false
330 - visible: true #Sichtbarkeit der Variable im LD Control Center
331 - priority: 0 #Abarbeitungspriorität
332 - applyAlways: false #Rolle immer ausführen oder einmalig
333 - tags:
334 - - CUSTOM #Ausführungszeitpunkt während der/den Phase(n)
335 - systems:
336 - - WINDOWS #Betriebssystem
337 -{{/code}}
338 -
339 -== ==
340 -
341 -----
342 -
343 -== (% style="font-size:16px" %)**Aufbau der main.ps1:**(%%) ==
344 -
345 -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 Variaben  {{code language="bash"}}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.
346 -\\{{code language="powershell"}}#main.ps1
347 -
348 -Param
349 -(
350 - [parameter(Mandatory=$false)] #Variable zwingend erforderlich?
351 - [bool] #Variablentyp
352 - $disableSearchHighlight #Name der def. Variable aus logodidact.yml
353 -)
354 -
355 -$SystemVersion=[System.Environment]::OSVersion.Version #Hole Windows Systemversion
356 -
357 -if ($SystemVersion.Major -eq 10 -and $SystemVersion.Build -ge 19044) {
358 - $val = [int]!$disableSearchHighlight
359 - Write-Verbose "Setting EnableDynamicContentInWSB to '$val'"
360 - [Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Windows Search","EnableDynamicContentInWSB",$val,[Microsoft.Win32.RegistryValueKind]::DWord)
361 -} else {
362 - Write-Host "Feature ist erst ab dem Release 21H2 verfügbar."
363 -}{{/code}}
364 -
365 -----
366 -
367 -== (% style="font-size:16px" %)**Einlesen der AutoConf-Rollen am Server:**(%%) ==
368 -
369 -[[image:image-20230316103224-1.png||height="128" width="1226" class="img-thumbnail"]]
370 -
371 -----
372 -
373 -== (% style="font-size:16px" %)**Ansicht im LD Control Center:**(%%) ==
374 -
375 -(% class="wikigeneratedid" %)
376 - [[image:image-20230316095106-2.png||class="img-thumbnail"]]
377 -)))
231 +==== ====
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