Version 11.2 von Tom Altenbrunn am 2023/03/15 09:21

Zeige letzte Bearbeiter
1 Autoconf liegt wie der Vorgänger Ansible im ctrl-g1 Container und dient dazu, Einstellungen oder Konfigurationen auf die deployten Rechner zu übertragen, ohne ein Image dafür zu schreiben.
2
3 Von SBE ausgelieferte Rollen befinden sich Im Pfad {{box}}/usr/lib/ld-autoconf/logodidact/roles/{{/box}}.
4
5 Selbst erstellte Autoconf-Rollen müssen unter {{box}}/data/ld/autoconf/custom{{/box}} (bzw. früher vor Puppet-Version 1.5.x unter {{box}}/var/lib/ld-autoconf/custom/{{/box}}) abgelegt werden, damit diese nicht durch Updates überschrieben werden.
6
7 Der Aufbau einer Autoconf-Rolle muss einer Struktur folgen, damit der Server diese Interpretieren kann.
8
9 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.
10
11
12 ==== **Beispielaufbau der logodidact.yml:** ====
13
14 (% class="box" %)
15 (((
16 root@ctrl-g1:~~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/meta/logodidact.yml
17 )))
18
19 (% class="box" %)
20 (((
21 ld_info:
22 authors:
23 - Marcel Petersen
24 company: SBE network solutions GmbH
25 display_name: WLAN Profil mit PSK anlegen
26 license: SBE
27 uuid: 52318636-c4f5-11ea-baf9-0bff00c66ff4
28 visible: true
29 priority: 0
30 applyAlways: false
31 tags:
32 - CUSTOM
33 vars:
34 ssid:
35 display_name: SSID
36 optional: false
37 type: STRING
38 psk:
39 display_name: Passwort
40 optional: false
41 type: PASSWORD
42 systems:
43 - WINDOWS
44 - LINUX
45 )))
46
47 display_name = Anzeigename der Autoconf-Rolle im LD Control Center
48
49 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/]]
50
51 tags = beschreibt, in welchen Phasen die Autoconf-Regel ausgeführt wird.
52
53 systems = Legt fest, welche Betriebssystem-Typen durch die Autoconf-Rolle unterstützt werden. Gültige Systeme sind: WINDOWS / LINUX
54
55 vars = definiert mögliche Variablen, die den Skripten übergeben werden
56
57 ~* display_name = Name der konfigurierbaren Variable im Control Center
58
59 ~* example = Zeigt einen grau eingefärbten Beispieltext innerhalb Variable an, ohne dass dieser als Wert festgelegt ist (Hilfsmittel für Anwender).
60
61 ~* optional = bestimmt, ob die Variable zwingend mit einem Wert belegt werden muss
62
63 ~* type = bestimmt den Typ der Variable. Gültige Typen sind: STRING, PASSWORD, BOOLEAN, ENUM, ARRAY, INTEGER
64
65
66 **Beispiel für eine Variable:**
67
68 (% class="box" %)
69 (((
70 globalLogLevel:
71 display_name: Loglevel
72 optional: true
73 type: ENUM
74 values:
75 - none
76 - compact
77 - detailed
78 - full
79 )))
80
81 (% style="font-size:12px" %)**Tipp:** Der Variablentyp ENUM aus dem Beispiel entspricht einem Dropdown-Menü, in dem man aus vordefinierte Werte auswählen kann:
82
83
84 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:
85
86 * **main.ps1** - Skript wird in allen Phasen ausgeführt, die innerhalb der Beschreibungsdatei {{box}}meta/logodidact.yml{{/box}} festgelegt sind
87 * (% style="color:#8e44ad" %)**setup.ps1**(%%) - Skript wird ausschließlich in der SETUP-Phase während des Deployments ausgeführt.
88 * (% style="color:#8e44ad" %)**custom.ps1**(%%) - Skript wird ausschließlich in der CUSTOM-Phase während des Deployments ausgeführt.
89 * (% style="color:#8e44ad" %)**user.ps1**(%%) - Skript wird ausschließlich in der USER-Phase während des Deployments ausgeführt.
90 * (% style="color:#8e44ad" %)**audit.ps1**(%%) - Skript wird ausschließlich in der AUDIT-Phase während des Deployments ausgeführt.
91 * **collect.ps1** - Sonderfall. Dieses Skript wird ausgeführt, wenn durch einen Anwender aktiv die Phase COLLECT zum Einsammeln von Einstellungen am Client aufgerufen werden.
92
93 (% 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.
94
95
96 ==== **Beispielaufbau der main.ps1** ====
97
98 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.
99
100 {{code}}
101 user.ps1 = user Phase, nach der Anmeldung
102
103 custom.ps1 = custom Phase
104
105 audit.ps1 = audit Phase
106
107 setup.ps1 = setup Phase
108
109 main.ps1 = alle Phasen
110
111 root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1
112
113 Param
114 (
115 [parameter(Mandatory=$false)]
116 [String]
117 $ssid,
118 [parameter(Mandatory=$false)]
119 [String]
120 $psk
121 )
122
123 if ($ssid -ne '' -and $psk -ne '') {
124 $profile = @'
125 <WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
126 <name>{0}</name>
127 <SSIDConfig>
128 <SSID>
129 <name>{0}</name>
130 </SSID>
131 </SSIDConfig>
132 <connectionType>ESS</connectionType>
133 <connectionMode>auto</connectionMode>
134 <MSM>
135 <security>
136 <authEncryption>
137 <authentication>WPA2PSK</authentication>
138 <encryption>AES</encryption>
139 <useOneX>false</useOneX>
140 </authEncryption>
141 <sharedKey>
142 <keyType>passPhrase</keyType>
143 <protected>false</protected>
144 <keyMaterial>{1}</keyMaterial>
145 </sharedKey>
146 </security>
147 </MSM>
148 </WLANProfile>
149 '@ -f $ssid, $psk
150
151 $file = "$AUTOCONF_TEMP_DIR\ld_wlan_psk\wlan.xml"
152
153 $profile | Out-File (New-Item $file -Force)
154
155 Get-NetAdapter | Where-Object { $_.PhysicalMediaType -eq 'Native 802.11' -or `
156 $_.PhysicalMediaType -eq 'Wireless LAN' -or `
157 $_.PhysicalMediaType -eq 'Wireless WAN' } | ForEach-Object {
158
159 Write-Verbose "Creating wlan profile for '$ssid' on interface '$($_.Name)'"
160 netsh wlan add profile filename= "$file" interface= "$($_.Name)"
161 }
162
163 Remove-Item -Path $file -Force
164 }
165
166 Param() = hier werden die übergebenen Parameter von meta/logodidact.yml zu lokale Variablen.
167 {{/code}}
168
169 ==== ====
170
171 ==== **Neue AutoConf-Regel freigeben** ====
172
173 Neue Autoconf-Regel müssen mit dem Befehl {{box}}update-autoconf-archive{{/box}} eingelesen werden. 
174 Ansonsten werden die Autoconfrollen auch zeitbasiert (Alle 4 Stunden) neu eingelesen.
175 Drücken Sie Im Controlcenter mit aktivieren Expertenmodus folgenden Knopfen, damit dort auch die neuen Autoconf-Regeln verfügbar werden.
176
177 [[image:attach:autoconf.png||data-xwiki-image-style-border="true"]]
178