Version 12.6 von Tom Altenbrunn am 2023/03/15 10:54

Zeige letzte Bearbeiter
1 Autoconf liegt wie der Vorgänger Ansible im ctrl-g1 Container und dient dazu, Einstellungen oder Konfigurationen auf bereits deployte Rechner zu übertragen, ohne ein neues Image dafür zu schreiben. Somit lassen sich relativ einfach und flexibel diverse Anpassungen an bestehenden Clients vornehmen.
2
3 Logodidact ist bereits standardmäßig mit zahlreichen eigenen Autoconf-Rollen bestückt, um ein möglichst breites Spektrum verschiedenster Anforderungen des allgemeinen Schulbetriebs abzudecken.
4
5 Vonseiten SBE bereitgestellte Rollen befinden sich im ctrl-g1-Container im Pfad {{box}}/usr/lib/ld-autoconf/logodidact/roles/{{/box}}.
6
7 [[image:image-20230315103418-1.png||height="103" width="1344" class="img-thumbnail"]]
8
9
10 Darüber hinaus ist es Partnern und Kunden möglich für spezielle, schulspezifische Anforderungen eigene Autoconf-Rollen erstellen und im LD Control Center bereitstellen zu können. Dafür steht je nach Puppet-Versionsstand ein eigenes Verzeichnis im ctrl-g1 zur Verfügung, welches nicht durch Server-Updates beeinflusst oder überschrieben wird.
11
12 * bis Puppet-Version **1.4.x** : {{code language="bash"}}/var/lib/ld-autoconf/custom/{{/code}}
13 * Ab Puppet-Version **1.5.x **:  {{code language="bash" layout="LINENUMBERS"}}/data/ld/autoconf/custom{{/code}}
14
15
16 Der Aufbau einer Autoconf-Rolle folgt einer vordefinierten Struktur, damit der Server diese Interpretieren kann.
17
18 Unterhalb der Regel muss ein Ordner mit Namen {{box}}meta{{/box}} mit einer {{box}}logodidact.yml{{/box}} liegen. In dieser Datei sind Name, Beschreibung, Ersteller sowie weitere Informationen zur Autoconf-Rolle festgelegt.
19
20
21 ==== **Beispielaufbau der logodidact.yml:** ====
22
23 (% class="box" %)
24 (((
25 root@ctrl-g1:~~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/meta/logodidact.yml
26 )))
27
28 (% class="box" %)
29 (((
30 ld_info:
31 authors:
32 - Marcel Petersen
33 company: SBE network solutions GmbH
34 display_name: WLAN Profil mit PSK anlegen
35 license: SBE
36 uuid: 52318636-c4f5-11ea-baf9-0bff00c66ff4
37 visible: true
38 priority: 0
39 applyAlways: false
40 tags:
41 - CUSTOM
42 vars:
43 ssid:
44 display_name: SSID
45 optional: false
46 type: STRING
47 psk:
48 display_name: Passwort
49 optional: false
50 type: PASSWORD
51 systems:
52 - WINDOWS
53 - LINUX
54 )))
55
56 display_name = Anzeigename der Autoconf-Rolle im LD Control Center
57
58 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/]]
59
60 tags = beschreibt, in welchen Phasen die Autoconf-Regel ausgeführt wird.
61
62 systems = Legt fest, welche Betriebssystem-Typen durch die Autoconf-Rolle unterstützt werden. Gültige Systeme sind: WINDOWS / LINUX
63
64 vars = definiert mögliche Variablen, die den Skripten übergeben werden
65
66 ~* display_name = Name der konfigurierbaren Variable im Control Center
67
68 ~* example = Zeigt einen grau eingefärbten Beispieltext innerhalb Variable an, ohne dass dieser als Wert festgelegt ist (Hilfsmittel für Anwender).
69
70 ~* optional = bestimmt, ob die Variable zwingend mit einem Wert belegt werden muss
71
72 ~* type = bestimmt den Typ der Variable. Gültige Typen sind: STRING, PASSWORD, BOOLEAN, ENUM, ARRAY, INTEGER
73
74
75 **Beispiel für eine Variable:**
76
77 (% class="box" %)
78 (((
79 globalLogLevel:
80 display_name: Loglevel
81 optional: true
82 type: ENUM
83 values:
84 - none
85 - compact
86 - detailed
87 - full
88 )))
89
90 (% style="font-size:12px" %)**Tipp:** Der Variablentyp ENUM aus dem Beispiel entspricht einem Dropdown-Menü, in dem man aus vordefinierte Werte auswählen kann:
91
92
93 Für die Funktionalität der Autoconf-Rolle ist es nötig, PowerShell-Skripte am Server abzuspeichern, die die Instruktionen an den Arbeitsstationen ausführen. Diese Skripte liegen unterhalb der Autoconf-Rolle im Verzeichnis {{box}}win{{/box}}. Darin sind folgende Dateinamen zulässig:
94
95 * **main.ps1** - Skript wird in allen Phasen ausgeführt, die innerhalb der Beschreibungsdatei {{box}}meta/logodidact.yml{{/box}} festgelegt sind
96 * (% style="color:#8e44ad" %)**setup.ps1**(%%) - Skript wird ausschließlich in der SETUP-Phase während des Deployments ausgeführt.
97 * (% style="color:#8e44ad" %)**custom.ps1**(%%) - Skript wird ausschließlich in der CUSTOM-Phase während des Deployments ausgeführt.
98 * (% style="color:#8e44ad" %)**user.ps1**(%%) - Skript wird ausschließlich in der USER-Phase während des Deployments ausgeführt.
99 * (% style="color:#8e44ad" %)**audit.ps1**(%%) - Skript wird ausschließlich in der AUDIT-Phase während des Deployments ausgeführt.
100 * **collect.ps1** - Sonderfall. Dieses Skript wird ausgeführt, wenn durch einen Anwender aktiv die Phase COLLECT zum Einsammeln von Einstellungen am Client aufgerufen werden.
101
102 (% style="font-size:12px" %)**Hinweis: **Skripte, die durch ihren Dateinamen auf die einzelnen Phasen eingeschränkt sind ((% style="color:#8e44ad; font-size:12px" %)lila eingefärbt(% style="font-size:12px" %)), können sich inhaltlich zueinander unterscheiden. Dadurch kann eine Autoconf-Rolle sehr flexibel gestaltet werden.
103
104
105 ==== **Beispielaufbau der main.ps1** ====
106
107 Im win-Verzeichnis können sich unterschiedliche Powershellskripte befinden. Der jeweilige Name der .ps1 Datei gibt an zu welcher Phase die Datei ausgeführt wird.
108
109 {{code}}
110 user.ps1 = user Phase, nach der Anmeldung
111
112 custom.ps1 = custom Phase
113
114 audit.ps1 = audit Phase
115
116 setup.ps1 = setup Phase
117
118 main.ps1 = alle Phasen
119
120 root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1
121
122 Param
123 (
124 [parameter(Mandatory=$false)]
125 [String]
126 $ssid,
127 [parameter(Mandatory=$false)]
128 [String]
129 $psk
130 )
131
132 if ($ssid -ne '' -and $psk -ne '') {
133 $profile = @'
134 <WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
135 <name>{0}</name>
136 <SSIDConfig>
137 <SSID>
138 <name>{0}</name>
139 </SSID>
140 </SSIDConfig>
141 <connectionType>ESS</connectionType>
142 <connectionMode>auto</connectionMode>
143 <MSM>
144 <security>
145 <authEncryption>
146 <authentication>WPA2PSK</authentication>
147 <encryption>AES</encryption>
148 <useOneX>false</useOneX>
149 </authEncryption>
150 <sharedKey>
151 <keyType>passPhrase</keyType>
152 <protected>false</protected>
153 <keyMaterial>{1}</keyMaterial>
154 </sharedKey>
155 </security>
156 </MSM>
157 </WLANProfile>
158 '@ -f $ssid, $psk
159
160 $file = "$AUTOCONF_TEMP_DIR\ld_wlan_psk\wlan.xml"
161
162 $profile | Out-File (New-Item $file -Force)
163
164 Get-NetAdapter | Where-Object { $_.PhysicalMediaType -eq 'Native 802.11' -or `
165 $_.PhysicalMediaType -eq 'Wireless LAN' -or `
166 $_.PhysicalMediaType -eq 'Wireless WAN' } | ForEach-Object {
167
168 Write-Verbose "Creating wlan profile for '$ssid' on interface '$($_.Name)'"
169 netsh wlan add profile filename= "$file" interface= "$($_.Name)"
170 }
171
172 Remove-Item -Path $file -Force
173 }
174
175 Param() = hier werden die übergebenen Parameter von meta/logodidact.yml zu lokale Variablen.
176 {{/code}}
177
178 ==== ====
179
180 ==== **Neue AutoConf-Rollen freigeben** ====
181
182 Neue Autoconf-Rollen müssen am Server durch Aufruf des Befehls {{box}}update-autoconf-archive{{/box}} im LXC ctrl-g1 aktualisiert werden. Der Aufruf dieses Kommandos ist auch nach Änderungen an Autoconf-Rollen nötig.
183 Alternativ werden alle Autoconf-Rollen auch zeitbasiert alle 4 Stunden am Server eingelesen. Dies passiert automatisch im Hintergrund.
184
185 Betätigen Sie außerdem im LD Control Center (mit aktiviertem Expertenmodus) folgenden Knopf, damit selbst hinzugefügte Autoconf-Rollen verfügbar werden.
186
187 [[image:attach:autoconf.png||data-xwiki-image-style-border="true"]]
188