Wiki-Quellcode von Eigene Autoconf-Rolle erstellen
Version 12.1 von Jonas Mayer am 2023/03/15 09:28
Verstecke letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
![]() |
5.1 | 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. |
![]() |
1.1 | 2 | |
![]() |
2.1 | 3 | Von SBE ausgelieferte Rollen befinden sich Im Pfad {{box}}/usr/lib/ld-autoconf/logodidact/roles/{{/box}}. |
![]() |
1.1 | 4 | |
![]() |
6.1 | 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. |
![]() |
2.1 | 6 | |
![]() |
6.1 | 7 | Der Aufbau einer Autoconf-Rolle muss einer Struktur folgen, damit der Server diese Interpretieren kann. |
![]() |
2.1 | 8 | |
![]() |
11.2 | 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. |
![]() |
2.1 | 10 | |
11 | |||
12 | ==== **Beispielaufbau der logodidact.yml:** ==== | ||
13 | |||
14 | (% class="box" %) | ||
15 | ((( | ||
![]() |
1.1 | 16 | root@ctrl-g1:~~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/meta/logodidact.yml |
![]() |
2.1 | 17 | ))) |
![]() |
1.1 | 18 | |
![]() |
2.1 | 19 | (% class="box" %) |
20 | ((( | ||
![]() |
1.1 | 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 | ||
![]() |
2.1 | 45 | ))) |
![]() |
1.1 | 46 | |
![]() |
6.1 | 47 | display_name = Anzeigename der Autoconf-Rolle im LD Control Center |
![]() |
1.1 | 48 | |
![]() |
6.1 | 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/]] |
![]() |
1.1 | 50 | |
![]() |
6.1 | 51 | tags = beschreibt, in welchen Phasen die Autoconf-Regel ausgeführt wird. |
![]() |
1.1 | 52 | |
![]() |
6.1 | 53 | systems = Legt fest, welche Betriebssystem-Typen durch die Autoconf-Rolle unterstützt werden. Gültige Systeme sind: WINDOWS / LINUX |
![]() |
1.1 | 54 | |
![]() |
6.1 | 55 | vars = definiert mögliche Variablen, die den Skripten übergeben werden |
![]() |
1.1 | 56 | |
![]() |
6.1 | 57 | ~* display_name = Name der konfigurierbaren Variable im Control Center |
![]() |
1.1 | 58 | |
![]() |
6.1 | 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 | |||
![]() |
2.1 | 68 | (% class="box" %) |
69 | ((( | ||
![]() |
1.1 | 70 | globalLogLevel: |
71 | display_name: Loglevel | ||
72 | optional: true | ||
73 | type: ENUM | ||
74 | values: | ||
75 | - none | ||
76 | - compact | ||
77 | - detailed | ||
78 | - full | ||
![]() |
2.1 | 79 | ))) |
![]() |
1.1 | 80 | |
![]() |
9.1 | 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: |
![]() |
1.1 | 82 | |
83 | |||
![]() |
6.1 | 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: |
![]() |
1.1 | 85 | |
![]() |
8.1 | 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. | ||
![]() |
2.1 | 92 | |
![]() |
9.1 | 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. |
![]() |
2.1 | 94 | |
![]() |
7.1 | 95 | |
![]() |
2.1 | 96 | ==== **Beispielaufbau der main.ps1** ==== |
97 | |||
![]() |
1.1 | 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. |
![]() |
3.1 | 99 | |
100 | {{code}} | ||
![]() |
1.1 | 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 | |||
![]() |
3.1 | 111 | root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1 |
![]() |
1.1 | 112 | |
113 | Param | ||
114 | ( | ||
115 | [parameter(Mandatory=$false)] | ||
116 | [String] | ||
117 | $ssid, | ||
118 | [parameter(Mandatory=$false)] | ||
119 | [String] | ||
120 | $psk | ||
121 | ) | ||
![]() |
3.1 | 122 | |
123 | if ($ssid -ne '' -and $psk -ne '') { | ||
![]() |
1.1 | 124 | $profile = @' |
![]() |
3.1 | 125 | <WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"> |
![]() |
1.1 | 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 | ||
![]() |
3.1 | 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 ` | ||
![]() |
1.1 | 156 | $_.PhysicalMediaType -eq 'Wireless LAN' -or ` |
157 | $_.PhysicalMediaType -eq 'Wireless WAN' } | ForEach-Object { | ||
![]() |
3.1 | 158 | |
159 | Write-Verbose "Creating wlan profile for '$ssid' on interface '$($_.Name)'" | ||
![]() |
1.1 | 160 | netsh wlan add profile filename= "$file" interface= "$($_.Name)" |
161 | } | ||
![]() |
3.1 | 162 | |
163 | Remove-Item -Path $file -Force | ||
![]() |
1.1 | 164 | } |
165 | |||
166 | Param() = hier werden die übergebenen Parameter von meta/logodidact.yml zu lokale Variablen. | ||
![]() |
3.1 | 167 | {{/code}} |
![]() |
1.1 | 168 | |
![]() |
4.1 | 169 | ==== ==== |
![]() |
1.1 | 170 | |
![]() |
12.1 | 171 | ==== **Neue AutoConf-Rollen freigeben** ==== |
![]() |
4.1 | 172 | |
![]() |
12.1 | 173 | 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. |
174 | Alternativ werden alle Autoconf-Rollen auch zeitbasiert alle 4 Stunden am Server eingelesen. Dies passiert automatisch im Hintergrund. | ||
![]() |
3.1 | 175 | |
![]() |
12.1 | 176 | Betätigen Sie außerdem im LD Control Center (mit aktiviertem Expertenmodus) folgenden Knopf, damit selbst hinzugefügte Autoconf-Rollen verfügbar werden. |
177 | |||
![]() |
3.1 | 178 | [[image:attach:autoconf.png||data-xwiki-image-style-border="true"]] |
![]() |
1.1 | 179 |