Autoconf-Konfiguration erstellen
Autoconf liegt wie der Vorgänger Ansible im ctrl-g1 Container.
Dort im Pfad /usr/lib/ld-autoconf/logodidact/roles/ finden sich die bestehenden Rollen.
Für eigene Rollen sollte die Rolle unter /var/lib/ld-autoconf/custom abgelegt werden. Nach einem LD-Update geht so die Arbeit nicht verloren!
Eine Autoconf-Regel besteht aus den Informationen zur Regel, die in der logodidact.yml im Ordner meta liegen und den jeweiligen Skripten für Windows im Unterordner win.
Linux-Skripte würden sich im Unterordner lin befinden.
Beispielaufbau der logodidact.yml:
root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/meta/logodidact.yml
ld_info:
authors:
- Marcel Petersen
company: SBE network solutions GmbH
display_name: WLAN Profil mit PSK anlegen
license: SBE
uuid: 52318636-c4f5-11ea-baf9-0bff00c66ff4
visible: true
priority: 0
applyAlways: false
tags:
- CUSTOM
vars:
ssid:
display_name: SSID
optional: false
type: STRING
psk:
display_name: Passwort
optional: false
type: PASSWORD
systems:
- WINDOWS
- LINUX
uuid = ID der Autoconf-Regel, muss einmalig sein. Bei einer eigenen Autoconf-Regel muss der Wert am besten neugeniert werden. https://www.uuidgenerator.net/
tags = beschreibt in welcher Phase die Autoconf-Regel aktiv ist.
vars = definiert Variablen die den Skripten übergeben werden
display_name = Name der Variable im ctrl
optional = bestimmt ob die Option in der Autoconf-Regel optional ist
type = bestimmt den Wert der Variable. Mögliche Werte STRING, PASSWORD, BOOLEAN, ENUM, ARRAY, INTEGER
ENUM entspricht einem Dropdown-Menü, in dem man aus vordefinierte Werte auswählen kann:
globalLogLevel:
display_name: Loglevel
optional: true
type: ENUM
values:
- none
- compact
- detailed
- full
example = Gibt eine grauen Beispielwert für die Variable vor.
systems = für welches Betriebssystem existieren Skripte in der Autoconf-Regel
Beispielaufbau der main.ps1
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.
user.ps1 = user Phase, nach der Anmeldung
custom.ps1 = custom Phase
audit.ps1 = audit Phase
setup.ps1 = setup Phase
main.ps1 = alle Phasen
root@ctrl-g1:~ # cat /usr/lib/ld-autoconf/logodidact/roles/ld_wlan_psk/win/main.ps1
Param
(
[parameter(Mandatory=$false)]
[String]
$ssid,
[parameter(Mandatory=$false)]
[String]
$psk
)
if ($ssid -ne '' -and $psk -ne '') {
$profile = @'
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
<name>{0}</name>
<SSIDConfig>
<SSID>
<name>{0}</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>auto</connectionMode>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>false</protected>
<keyMaterial>{1}</keyMaterial>
</sharedKey>
</security>
</MSM>
</WLANProfile>
'@ -f $ssid, $psk
$file = "$AUTOCONF_TEMP_DIR\ld_wlan_psk\wlan.xml"
$profile | Out-File (New-Item $file -Force)
Get-NetAdapter | Where-Object { $_.PhysicalMediaType -eq 'Native 802.11' -or `
$_.PhysicalMediaType -eq 'Wireless LAN' -or `
$_.PhysicalMediaType -eq 'Wireless WAN' } | ForEach-Object {
Write-Verbose "Creating wlan profile for '$ssid' on interface '$($_.Name)'"
netsh wlan add profile filename= "$file" interface= "$($_.Name)"
}
Remove-Item -Path $file -Force
}
Param() = hier werden die übergebenen Parameter von meta/logodidact.yml zu lokale Variablen.
Neue AutoConf-Regel freigeben
Neue Autoconf-Regel müssen mit dem Befehl update-autoconf-archive eingelesen werden.
Ansonsten werden die Autoconfrollen auch zeitbasiert (Alle 4 Stunden) neu eingelesen.
Im Controlcenter im Expertenmodus dann folgenden Knopfen drücken, damit dort auch die neuen Autoconf-Regeln eingelesen werden.