Wiki-Quellcode von Eigene Autoconf-Rolle erstellen
Version 6.1 von Jonas Mayer am 2023/03/15 08:44
Zeige letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
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 heißen oder je nach dem in welcher Phase des Deployment es ausgeführt werden soll auch custom.ps1, setup.ps1, audit.ps1. | ||
87 | |||
88 | |||
89 | ==== **Beispielaufbau der main.ps1** ==== | ||
90 | |||
91 | 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. | ||
92 | |||
93 | {{code}} | ||
94 | user.ps1 = user Phase, nach der Anmeldung | ||
95 | |||
96 | custom.ps1 = custom Phase | ||
97 | |||
98 | audit.ps1 = audit Phase | ||
99 | |||
100 | setup.ps1 = setup Phase | ||
101 | |||
102 | main.ps1 = alle Phasen | ||
103 | |||
104 | root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1 | ||
105 | |||
106 | Param | ||
107 | ( | ||
108 | [parameter(Mandatory=$false)] | ||
109 | [String] | ||
110 | $ssid, | ||
111 | [parameter(Mandatory=$false)] | ||
112 | [String] | ||
113 | $psk | ||
114 | ) | ||
115 | |||
116 | if ($ssid -ne '' -and $psk -ne '') { | ||
117 | $profile = @' | ||
118 | <WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"> | ||
119 | <name>{0}</name> | ||
120 | <SSIDConfig> | ||
121 | <SSID> | ||
122 | <name>{0}</name> | ||
123 | </SSID> | ||
124 | </SSIDConfig> | ||
125 | <connectionType>ESS</connectionType> | ||
126 | <connectionMode>auto</connectionMode> | ||
127 | <MSM> | ||
128 | <security> | ||
129 | <authEncryption> | ||
130 | <authentication>WPA2PSK</authentication> | ||
131 | <encryption>AES</encryption> | ||
132 | <useOneX>false</useOneX> | ||
133 | </authEncryption> | ||
134 | <sharedKey> | ||
135 | <keyType>passPhrase</keyType> | ||
136 | <protected>false</protected> | ||
137 | <keyMaterial>{1}</keyMaterial> | ||
138 | </sharedKey> | ||
139 | </security> | ||
140 | </MSM> | ||
141 | </WLANProfile> | ||
142 | '@ -f $ssid, $psk | ||
143 | |||
144 | $file = "$AUTOCONF_TEMP_DIR\ld_wlan_psk\wlan.xml" | ||
145 | |||
146 | $profile | Out-File (New-Item $file -Force) | ||
147 | |||
148 | Get-NetAdapter | Where-Object { $_.PhysicalMediaType -eq 'Native 802.11' -or ` | ||
149 | $_.PhysicalMediaType -eq 'Wireless LAN' -or ` | ||
150 | $_.PhysicalMediaType -eq 'Wireless WAN' } | ForEach-Object { | ||
151 | |||
152 | Write-Verbose "Creating wlan profile for '$ssid' on interface '$($_.Name)'" | ||
153 | netsh wlan add profile filename= "$file" interface= "$($_.Name)" | ||
154 | } | ||
155 | |||
156 | Remove-Item -Path $file -Force | ||
157 | } | ||
158 | |||
159 | Param() = hier werden die übergebenen Parameter von meta/logodidact.yml zu lokale Variablen. | ||
160 | {{/code}} | ||
161 | |||
162 | ==== ==== | ||
163 | |||
164 | ==== **Neue AutoConf-Regel freigeben** ==== | ||
165 | |||
166 | Neue Autoconf-Regel müssen mit dem Befehl {{box}}update-autoconf-archive{{/box}} eingelesen werden. | ||
167 | Ansonsten werden die Autoconfrollen auch zeitbasiert (Alle 4 Stunden) neu eingelesen. | ||
168 | Drücken Sie Im Controlcenter mit aktivieren Expertenmodus folgenden Knopfen, damit dort auch die neuen Autoconf-Regeln verfügbar werden. | ||
169 | |||
170 | [[image:attach:autoconf.png||data-xwiki-image-style-border="true"]] | ||
171 |