Ä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
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 28.1
bearbeitet von Jonas Mayer
am 2023/03/16 07:55
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

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" %) **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 +(% 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}}