Änderungen von Dokument Eigene Autoconf-Rolle erstellen
Zuletzt geändert von Tom Altenbrunn am 2023/03/17 08:03
Von Version 25.1
bearbeitet von Jonas Mayer
am 2023/03/15 21:53
am 2023/03/15 21:53
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Auf Version 28.1
bearbeitet von Jonas Mayer
am 2023/03/16 07:55
am 2023/03/16 07:55
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -1,6 +1,8 @@ 1 1 {{toc depth="3"/}} 2 2 3 +---- 3 3 5 + 4 4 = (% style="font-size:22px" %)__**Allgemeines**__(%%) = 5 5 6 6 ... ... @@ -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 46 + 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 79 + 78 78 = (% style="font-size:22px" %)__**Neue AutoConf-Rollen nach Fertigstellung freigeben**__(%%) = 79 79 80 80 ... ... @@ -91,9 +91,9 @@ 91 91 [[image:attach:autoconf.png||data-xwiki-image-style-border="true" class="img-thumbnail"]] 92 92 93 93 94 - 95 95 ---- 96 96 98 + 97 97 = (% style="font-size:22px" %)__**Weiteres, funktionsfertiges Beispiel: Rolle „WLAN Profil mit PSK anlegen“**__(%%) = 98 98 99 99 ... ... @@ -116,7 +116,7 @@ 116 116 license: SBE 117 117 (% style="color:#8e44ad" %) uuid:(%%) 52318636-c4f5-11ea-baf9-0bff00c66ff4 118 118 visible: true 119 - priority: 0 121 +(% style="color:#19177c" %) priority:(%%) 0 120 120 applyAlways: false 121 121 (% style="color:#f1c40f" %) tags:(%%) 122 122 - CUSTOM ... ... @@ -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 143 +(% 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. 144 + 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" %) 154 +(% 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 158 + 155 155 == (% style="font-size:16px" %)**Inhalt des PowerShell-Skripts main.ps1, das die Variablen entgegennimmt**(%%) == 156 156 161 +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. 162 +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%"}} 165 +(% style="color:#19177c" %)**Windows Variante** 166 + 167 +{{code language="text" width="50%"}} 161 161 root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1 169 +{{/code}} 162 162 171 +{{code width="50%" language="powershell"}} 163 163 Param 164 164 ( 165 165 [parameter(Mandatory=$false)] ... ... @@ -212,22 +212,71 @@ 212 212 213 213 Remove-Item -Path $file -Force 214 214 } 215 - 216 -Param() = hier werden die übergebenen Parameter von meta/logodidact.yml zu lokalen Variablen. 217 217 {{/code}} 218 218 219 -==== ==== 220 220 221 -= =======227 +(% style="color:#19177c" %)**Linux Variante (Network Manager)** 222 222 223 -==== ==== 229 +{{code width="50%" language="text"}} 230 +root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1 231 +{{/code}} 224 224 225 -==== ==== 233 +{{code language="powershell" width="50%"}} 234 +Param 235 +( 236 + [parameter(Mandatory=$false)] 237 + [String] 238 + $ssid, 239 + [parameter(Mandatory=$false)] 240 + [String] 241 + $psk 242 +) 226 226 227 -==== ==== 244 +if ($ssid -ne '' -and $psk -ne '') { 245 + if (Get-Command "nmcli" -ErrorAction SilentlyContinue) { 246 + # Check if kernel modules are up 247 + nmcli dev wifi rescan 248 + if ($LASTEXITCODE -ne 0) { 249 + Start-Sleep -Seconds 30 250 + } 251 + 252 + # Check again 253 + nmcli dev wifi rescan 254 + if ($LASTEXITCODE -ne 0) { 255 + Write-Verbose "Skipping role. There might be no WiFi device installed." 256 + exit 0 257 + } 258 + 259 + $config = "/etc/NetworkManager/system-connections/$ssid" 228 228 229 -==== ==== 261 + if (Test-Path -Path $config) { 262 + Write-Verbose "Removing '$config'" 263 + Remove-Item -Path $config -Recurse -Force 264 + } 230 230 231 -==== ==== 266 + Write-Verbose "Connecting to '$ssid'" 267 + 268 + nmcli device wifi connect """$ssid""" password """$psk""" 269 + 270 + if ($LASTEXITCODE -eq 0) { 271 + Start-Sleep -Seconds 5 272 + nmcli con up """$ssid""" 232 232 233 -==== ==== 274 + if ($LASTEXITCODE -ne 0) { 275 + Write-Verbose "Error: Credentials wrong?" 276 + 277 + if (Test-Path -Path $config) { 278 + Write-Verbose "Removing '$config'" 279 + Remove-Item -Path $config -Recurse -Force 280 + } 281 + } 282 + } 283 + 284 + Write-Verbose "Exiting with code: $LASTEXITCODE" 285 + exit $LASTEXITCODE 286 + } 287 + 288 + Write-Verbose "No suitable implementation found" 289 + exit 1 290 +} 291 +{{/code}}