Änderungen von Dokument Eigene Autoconf-Rolle erstellen

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

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

Zusammenfassung

Details

Seiteneigenschaften
Dokument-Autor
... ... @@ -1,1 +1,1 @@
1 -XWiki.jonasmayer@sbede
1 +XWiki.TomAltenbrunn@sbede
Inhalt
... ... @@ -1,5 +1,6 @@
1 1  {{toc depth="3"/}}
2 2  
3 +----
3 3  
4 4  = (% style="font-size:22px" %)__**Allgemeines**__(%%) =
5 5  
... ... @@ -39,9 +39,9 @@
39 39  (% 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.
40 40  )))
41 41  
42 -
43 43  ----
44 44  
45 +
45 45  = (% style="font-size:22px" %)__**Beispielaufbau einer logodidact.yml**__(%%) =
46 46  
47 47  
... ... @@ -72,9 +72,9 @@
72 72  **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.
73 73  )))
74 74  
75 -
76 76  ----
77 77  
78 +
78 78  = (% style="font-size:22px" %)__**Neue AutoConf-Rollen nach Fertigstellung freigeben**__(%%) =
79 79  
80 80  
... ... @@ -91,12 +91,12 @@
91 91  [[image:attach:autoconf.png||data-xwiki-image-style-border="true" class="img-thumbnail"]]
92 92  
93 93  
94 -
95 95  ----
96 96  
97 -= (% style="font-size:22px" %)__**Weiteres, funktionsfertiges Beispiel: Rolle „WLAN Profil mit PSK anlegen“**__(%%) =
98 98  
98 += (% style="font-size:22px" %)__**Funktionsfertiges Beispiel: Rolle „WLAN Profil mit PSK anlegen“**__(%%) =
99 99  
100 +
100 100  Zum besseren Verständnis wird nachfolgend eine feste Autoconf-Rolle zur Konfiguration eines WLAN-Profils (SSID inkl. PSK) an Clients näher beleuchtet.
101 101  
102 102  (% class="box" %)
... ... @@ -112,13 +112,13 @@
112 112   authors:
113 113   - Marcel Petersen
114 114   company: SBE network solutions GmbH
115 -(% style="color:#1abc9c" %)display_name:(%%) WLAN Profil mit PSK anlegen
116 +(% style="color:#1abc9c" %) display_name:(%%) WLAN Profil mit PSK anlegen
116 116   license: SBE
117 -(% style="color:#8e44ad" %) uuid:(%%) 52318636-c4f5-11ea-baf9-0bff00c66ff4
118 +(% style="color:#8e44ad" %) uuid:(%%) 52318636-c4f5-11ea-baf9-0bff00c66ff4
118 118   visible: true
119 - priority: 0
120 +(% style="color:#19177c" %) priority:(%%) 0
120 120   applyAlways: false
121 -(% style="color:#f1c40f" %) tags:(%%)
122 +(% style="color:#f1c40f" %) tags:(%%)
122 122   - CUSTOM
123 123  (% style="color:#e74c3c" %) vars:(%%)
124 124   ssid:
... ... @@ -129,7 +129,7 @@
129 129   display_name: Passwort
130 130   optional: false
131 131   type: PASSWORD
132 -(% style="color:#2980b9" %)systems:(%%)
133 +(% style="color:#2980b9" %) systems:(%%)
133 133   - WINDOWS
134 134   - LINUX
135 135  )))
... ... @@ -138,6 +138,8 @@
138 138  
139 139  (% 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/]]
140 140  
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 +
141 141  (% style="color:#f1c40f" %)**tags**(%%) = beschreibt, in welchen Phasen die Autoconf-Regel ausgeführt wird.
142 142  
143 143  (% style="color:#e74c3c" %)**vars**(%%)** **= definiert mögliche Variablen, die den Skripten übergeben werden
... ... @@ -147,19 +147,24 @@
147 147  * type = bestimmt den Typ der Variable. Gültige Typen sind: STRING, PASSWORD, BOOLEAN, ENUM, ARRAY, INTEGER
148 148  * example = Zeigt einen grau eingefärbten Beispieltext innerhalb der definierten Variable an, ohne dass dieser als Wert festgelegt ist (Hilfsmittel für Anwender).
149 149  
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.
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.
151 151  
152 -
153 153  ----
154 154  
157 +
155 155  == (% style="font-size:16px" %)**Inhalt des PowerShell-Skripts main.ps1, das die Variablen entgegennimmt**(%%) ==
156 156  
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.
157 157  
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.
159 159  
160 -{{code width="50%"}}
164 +(% style="color:#19177c" %)**Windows Variante**
165 +
166 +{{code language="text" width="50%"}}
161 161  root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1
168 +{{/code}}
162 162  
170 +{{code width="50%" language="powershell"}}
163 163  Param
164 164  (
165 165   [parameter(Mandatory=$false)]
... ... @@ -212,22 +212,158 @@
212 212  
213 213   Remove-Item -Path $file -Force
214 214  }
223 +{{/code}}
215 215  
216 -Param() = hier werden die übergebenen Parameter von meta/logodidact.yml zu lokalen Variablen.
225 +
226 +(% style="color:#19177c" %)**Linux Variante (Network Manager)**
227 +
228 +{{code language="text" width="50%"}}
229 +root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/lin/main.ps1
217 217  {{/code}}
218 218  
219 -==== ====
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 +)
220 220  
221 -==== ====
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"
222 222  
223 -==== ====
260 + if (Test-Path -Path $config) {
261 + Write-Verbose "Removing '$config'"
262 + Remove-Item -Path $config -Recurse -Force
263 + }
224 224  
225 -==== ====
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"""
226 226  
227 -==== ====
273 + if ($LASTEXITCODE -ne 0) {
274 + Write-Verbose "Error: Credentials wrong?"
228 228  
229 -==== ====
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 + }
230 230  
231 -==== ====
287 + Write-Verbose "No suitable implementation found"
288 + exit 1
289 +}
290 +{{/code}}
232 232  
233 -==== ====
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 +)))
image-20230316094933-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,0 +1,1 @@
1 +43.3 KB
Inhalt
image-20230316095106-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,0 +1,1 @@
1 +47.8 KB
Inhalt
image-20230316102252-3.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,0 +1,1 @@
1 +166.3 KB
Inhalt
image-20230316102302-4.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,0 +1,1 @@
1 +166.3 KB
Inhalt
image-20230316103224-1.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,0 +1,1 @@
1 +166.3 KB
Inhalt
image-20230316103442-2.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.TomAltenbrunn@sbede
Größe
... ... @@ -1,0 +1,1 @@
1 +201.2 KB
Inhalt