Autoconf-Konfiguration erstellen

Version 1.1 von Christian Germann am 2022/08/09 10:16

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.
 

autoconf.png