Version 2.1 von Christian Germann am 2022/08/09 10:53

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 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}}/var/lib/ld-autoconf/custom/{{/box}} abgelegt werden, damit diese nicht durch Updates überschrieben werden.
6
7 Der Aufbau einer Autoconf-Regel 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.
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 uuid = ID der Autoconf-Regel, muss einmalig sein. Bei einer eigenen Autoconf-Regel sollte der Wert am besten neugeneriert werden. [[https:~~/~~/www.uuidgenerator.net/>>url:https://www.uuidgenerator.net/]]
48
49 tags = beschreibt in welcher Phase die Autoconf-Regel aktiv ist.
50
51 vars = definiert Variablen die den Skripten übergeben werden
52
53 display_name = Name der Variable im ctrl
54
55 optional = bestimmt ob die Option in der Autoconf-Regel  optional ist
56
57 type = bestimmt den Wert der Variable. Mögliche Werte STRING, PASSWORD, BOOLEAN, ENUM, ARRAY, INTEGER
58 ENUM entspricht einem Dropdown-Menü, in dem man aus vordefinierte Werte auswählen kann:
59
60 (% class="box" %)
61 (((
62 globalLogLevel:
63 display_name: Loglevel
64 optional: true
65 type: ENUM
66 values:
67 - none
68 - compact
69 - detailed
70 - full
71 )))
72
73 example = Gibt eine grauen Beispielwert für die Variable vor.
74
75 systems = für welches Betriebssystem existieren Skripte in der Autoconf-Regel
76
77
78 Die eigentliche Skripte liegen direkt unterhalb der Autoconf-Regel im Verzeichnis {{box}}win{{/box}} neben dem Ordner {{box}}meta{{/box}}. Dort kann das Script 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.
79
80
81 ==== **Beispielaufbau der main.ps1** ====
82
83 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.
84 user.ps1 = user Phase, nach der Anmeldung
85
86 custom.ps1 = custom Phase
87
88 audit.ps1 = audit Phase
89
90 setup.ps1 = setup Phase
91
92 main.ps1 = alle Phasen
93
94 root@ctrl-g1:~~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1
95
96 Param
97 (
98 [parameter(Mandatory=$false)]
99 [String]
100 $ssid,
101 [parameter(Mandatory=$false)]
102 [String]
103 $psk
104 )
105 \\if ($ssid -ne '' -and $psk -ne '') {
106 $profile = @'
107 <WLANProfile xmlns="http:~/~/www.microsoft.com/networking/WLAN/profile/v1">
108 <name>{0}</name>
109 <SSIDConfig>
110 <SSID>
111 <name>{0}</name>
112 </SSID>
113 </SSIDConfig>
114 <connectionType>ESS</connectionType>
115 <connectionMode>auto</connectionMode>
116 <MSM>
117 <security>
118 <authEncryption>
119 <authentication>WPA2PSK</authentication>
120 <encryption>AES</encryption>
121 <useOneX>false</useOneX>
122 </authEncryption>
123 <sharedKey>
124 <keyType>passPhrase</keyType>
125 <protected>false</protected>
126 <keyMaterial>{1}</keyMaterial>
127 </sharedKey>
128 </security>
129 </MSM>
130 </WLANProfile>
131 '@ -f $ssid, $psk
132 \\ $file = "$AUTOCONF_TEMP_DIR\ld_wlan_psk\wlan.xml"
133 \\ $profile | Out-File (New-Item $file -Force)
134 \\ Get-NetAdapter | Where-Object { $_.PhysicalMediaType -eq 'Native 802.11' -or `
135 $_.PhysicalMediaType -eq 'Wireless LAN' -or `
136 $_.PhysicalMediaType -eq 'Wireless WAN' } | ForEach-Object {
137 \\ Write-Verbose "Creating wlan profile for '$ssid' on interface '$($_.Name)'"
138 netsh wlan add profile filename= "$file" interface= "$($_.Name)"
139 }
140 \\ Remove-Item -Path $file -Force
141 }
142
143 Param() = hier werden die übergebenen Parameter von meta/logodidact.yml zu lokale Variablen.
144
145 **Neue AutoConf-Regel freigeben**
146
147 Neue Autoconf-Regel müssen mit dem Befehl update-autoconf-archive eingelesen werden. 
148 Ansonsten werden die Autoconfrollen auch zeitbasiert (Alle 4 Stunden) neu eingelesen.
149 Im Controlcenter im Expertenmodus dann folgenden Knopfen drücken, damit dort auch die neuen Autoconf-Regeln eingelesen werden.
150
151
152 [[image:https://wiki.sbe.de/xwiki/bin/download/Main/SBE_intern/LogoDIDACT2.0/Lddeploy/Autoconf%20erstellen/WebHome/autoconf.png?rev=1.1||alt="autoconf.png"]]