# [Einleitung] In diesem Repo befindet sich ein Ansible Playbook zum ausrollen von Standartsoftware und Einstellungen zum Initialem einrichten eines Clients. # [Ansible] Ansible besteht aus 2 Teilen: einem Management und dem Client. Der Manager berechnet Skripte die dann über eine Shell-Session auf dem Client ausgeführt werden. Dieses Projekt ist darauf ausgelegt einzelne Tags manuell auf den Client zu pushen. Dabei werden die Hostgruppen und Rollen in der Site nacheinander abgearbeitet. Im Inventory befinden sich die Site-abhänigen Parameter des Deployments. Ansible braucht einen Linux oder Mac als Management-Server. Daher ist hier ein Docker-Compose Projekt unter ./ansible_editor hinterlegt dass einen Container mit allem startet was man braucht. Dieser stellt Visual als Weboberffläche bereit um das Playbook von Git zu klonen, an die Site anzupassen und auszuführen. ## [Win11-Deployment] Am einfachsten ist unter Windows11 eine PS-Remote session einzurichten, diese muss Anfangs eingerichtet werden. Da das cmd-let dafür relativ viel macht hab ich ein PS-Skript hinterlegt dass das wieder rückgänig macht wenn man es nicht mehr braucht. # [Deploy Management] Prerequesites: Docker compose cd ansible_editor docker compose up -d Aufrufen: http://localhost:8080/root # [Inventory Vorbereiten] 1. Hosts in Gruppe eintragen (Adresse zu Hosts-Liste zufügen) 2. "ansible_port" eintragen ( auf client: winrm quickconfig -transport:https) 3. Benutzerdaten in Vault eintragen und gegebenenfalls Variablen für Benutzer im Inventory ersetzen ## [Verschlüsselte Zugangsdaten anlegen/ändern] export EDITOR=nano Standartpasswort für vault_pass.yml : 2changeme (Dieses wird beim Ausführen des Playbooks abgefragt) Standart im Ansible-Vault (./ansible_deployment/group_vars/all/vault_pass.yml): --- vault_default_domain: . vault_default_username: user vault_default_userpass: user123 -> Diese Variablen werden im Inventory aufgerufen und zugeordnet ### [ids] Es gibt mehrere Vaults für mehrere Dinge. Der Hauptvault liegt unter /group_vars/all, die anderen in den Rollen die sie benötigen. Dort können z.b. WG-Peers eingepflegt werden. Die secrets für die vaults werden in ./pass in eine textdatei .pass eingetragen - Standart-Vault-ID: main (Standart: 2changeme) - Wireguard-Credentials: wg (Standart: 2changemesecret) ### [Ansible-Vault Befehle] Neuen Vault anlegen: ansible-vault create ./group_vars/all/vault_pass.yml Vault entschlüsseln: ansible-vault view ./group_vars/all/vault_pass.yml --ask-vault-pass Vault bearbeiten: ansible-vault edit ./group_vars/all/vault_pass.yml --ask-vault-pass Passwort von File ändern: ansible-vault rekey ./group_vars/all/vault_pass.yml --ask-vault-pass # [Management Terminal] git config --global user.name "Name" git config --global user.email "email -> oder änderm im Dockerfile für VS-Studio cd ansible_deployment export LANG=C.UTF-8 ansible-playbook -v site.yml ## Tags nutzen: ansible-playbook --tags tools ### Verfügbare Tags für Rollen-Packete: - system (Systemeinstellungen) - tools (Standartprogramme installieren) - office_tools (optional, free office-tools) # [Win11 Client] Als Admin die Poweshell öffnen!!! Netzwerk darf nicht Public sein! Get-NetConnectionProfile Set-NetConnectionProfile -InterfaceAlias "*Ethernet*" -NetworkCategory Private oder Set-NetConnectionProfile -Name "*Ethernet*" -NetworkCategory Private ## Anschalten Powershell-Remotesitzungen: Enable-PSRemoting Einstellungen anzeigen(Port rausfinden): winrm quickconfig -transport:https ## Ausschalten von PS-Remotesession Ausführen als Admin: disable_psremote_script.ps Prüfen: Get-Service WinRM winrm enumerate winrm/config/listener # Notizen: Disable-PSRemoting Stop-Service WinRM -Force Set-Service WinRM -StartupType Disabled Listener löschen: winrm delete winrm/config/Listener?Address=*+Transport=HTTP winrm delete winrm/config/Listener?Address=*+Transport=HTTPS Prüfen: winrm enumerate winrm/config/listener Disable-NetFirewallRule -DisplayGroup "Windows Remote Management" oder löschen: Get-NetFirewallRule -DisplayGroup "Windows Remote Management" | Remove-NetFirewallRule LocalAccountTokenFilterPolicy zurücksetzen Das wird von Remoting oft auf 1 gesetzt. Set-ItemProperty ` -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" ` -Name LocalAccountTokenFilterPolicy ` -Value 0 Oder komplett löschen: Remove-ItemProperty ` -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" ` -Name LocalAccountTokenFilterPolicy Get-PSSessionConfiguration | Unregister-PSSessionConfiguration time: detect role: Wert Rolle 0 Standalone Workstation 1 Domain Workstation 2 Standalone Server 3 Member Server 4 Backup DC 5 Primary DC To:-do: S-1-5-32-556 reg add HKLM\Software\WireGuard /v LimitedOperatorUI /t REG_DWORD /d 1 /f Enter-PSSession -ComputerName 192.168.99.64 -Credential (Get-Credential) /etc/krb5.conf [libdefaults] default_realm = INT.ANSI.INT dns_lookup_realm = false dns_lookup_kdc = false [realms] INT.ANSI.INT = { kdc = 192.168.99.63 } [domain_realm] .int.ansi.int = INT.ANSI.INT int.ansi.int = INT.ANSI.INT kinit Administrator@INT.ANSI.INT