Initialize with private Repo
This commit is contained in:
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
|
||||||
|
#To dos
|
||||||
|
|
||||||
|
/To-dos.txt
|
||||||
|
|
||||||
|
ansible_deployment/logs/*
|
||||||
|
|
||||||
|
ansible_deployment/pass/*
|
||||||
255
README.md
Normal file
255
README.md
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
# [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 <ID>.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
|
||||||
4
ansible_deployment/ansible.cfg
Normal file
4
ansible_deployment/ansible.cfg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[defaults]
|
||||||
|
inventory = ./inventory.yml
|
||||||
|
vault_identity_list = wg@./pass/wg.pass,main@./pass/main.pass
|
||||||
|
log_path = ./logs/ansible.log
|
||||||
17
ansible_deployment/group_vars/all/vault_pass.yml
Normal file
17
ansible_deployment/group_vars/all/vault_pass.yml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
66643239373234383936333931383238636131353736653131626465633863373764343035643362
|
||||||
|
3339613237613539346335643939646136306438376136650a623033313736653933373939373733
|
||||||
|
36353230666535663236363961313562633032363831353930396664633135613935326236663661
|
||||||
|
3836333963313132350a653432656438323935323762623336366363616666653532383864306363
|
||||||
|
35626561656164336361623036306266323133313339623433373661343863383335366131306239
|
||||||
|
35623437333830316432643961393165383531316237386133303262303166396535323939373932
|
||||||
|
32336433313939333034623437386239356332626564336165613362316561393763373663633432
|
||||||
|
61356362373137323366306335306133303462353664393734363635666136663533613664333166
|
||||||
|
31326563393937373838353730663435393833346231303939366630303532613833313137336532
|
||||||
|
38353264323535653864326137393164396536623964383531306363383564643537306461656636
|
||||||
|
66643165333639386462363131303461323463393632383432383964333563383238633536353138
|
||||||
|
65343366353261643865383464313637373632633937373764346130396561373637623937343633
|
||||||
|
61393232313761643730613666666238343630613438633566396130366232633535393164653339
|
||||||
|
38323739356236376664313036616265636631326136346538396533653939306630636566633635
|
||||||
|
31636166373262636438626565396536626165326263356463616233383962326339663536336161
|
||||||
|
63353361656466383764
|
||||||
117
ansible_deployment/inventory.yml
Normal file
117
ansible_deployment/inventory.yml
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# Generell
|
||||||
|
|
||||||
|
all:
|
||||||
|
vars:
|
||||||
|
|
||||||
|
# Ansible-Connection and Credentials
|
||||||
|
|
||||||
|
ansible_connection: winrm
|
||||||
|
ansible_winrm_transport: ntlm
|
||||||
|
|
||||||
|
ansible_user: '{{ vault_default_domain }}\{{ vault_default_username }}'
|
||||||
|
username: '{{ vault_default_username }}'
|
||||||
|
ansible_password: '{{ vault_default_userpass }}'
|
||||||
|
|
||||||
|
# Windows Geo/Language Settings
|
||||||
|
|
||||||
|
windows_language: de-DE
|
||||||
|
windows_keyboard: 0407:00000407
|
||||||
|
windows_geo_id: 94
|
||||||
|
|
||||||
|
# Windows NTP Settings
|
||||||
|
|
||||||
|
ntp_servers:
|
||||||
|
- "0.pool.ntp.org"
|
||||||
|
- "1.pool.ntp.org"
|
||||||
|
|
||||||
|
# Energiesparoptionen
|
||||||
|
|
||||||
|
powermanagement:
|
||||||
|
power_plan: "High performance"
|
||||||
|
lid_close_action: 0 # 0 = Do nothing
|
||||||
|
sleep_timeout_ac: 0 # 0 = Never
|
||||||
|
sleep_timeout_dc: 0 # 0 = Never
|
||||||
|
monitor_timeout_ac: 20 # Bildschirm darf ausgehen
|
||||||
|
monitor_timeout_dc: 10
|
||||||
|
|
||||||
|
# Windows RDP Settings
|
||||||
|
|
||||||
|
rdp:
|
||||||
|
rdp_port: 3389
|
||||||
|
enable_nla: true
|
||||||
|
custommember: false
|
||||||
|
member:
|
||||||
|
- membername: "" #Group-Name or Account-Name
|
||||||
|
|
||||||
|
|
||||||
|
# Windows Tools Uninstall Parameters
|
||||||
|
|
||||||
|
uninstall365:
|
||||||
|
m365_match_patterns:
|
||||||
|
- "Microsoft 365"
|
||||||
|
- "Microsoft Office"
|
||||||
|
- "Office 365"
|
||||||
|
- "Microsoft Teams"
|
||||||
|
- "OneDrive"
|
||||||
|
|
||||||
|
remove_onedrive: true
|
||||||
|
remove_store_apps: true
|
||||||
|
remove_click_to_run: true
|
||||||
|
|
||||||
|
m365_log_path: "C:\\Temp\\m365_removal.log"
|
||||||
|
|
||||||
|
reboot_if_required: true
|
||||||
|
|
||||||
|
|
||||||
|
# Testdeployment
|
||||||
|
test_domain_vm_client:
|
||||||
|
hosts:
|
||||||
|
test-vm-002.int.ansi.int:
|
||||||
|
hostname: "test-vm-002.int.ansi.int"
|
||||||
|
|
||||||
|
ansible_port: 5986
|
||||||
|
domain_member: true
|
||||||
|
|
||||||
|
ansible_user: '{{ vault_domain_default_domain }}\{{ vault_domain_default_username }}'
|
||||||
|
username: '{{ vault_domain_default_username }}'
|
||||||
|
ansible_password: '{{ vault_domain_default_userpass }}'
|
||||||
|
|
||||||
|
local_user: '{{ vault_default_domain }}\{{ vault_default_username }}'
|
||||||
|
|
||||||
|
|
||||||
|
wg:
|
||||||
|
non_admin: false
|
||||||
|
users:
|
||||||
|
- username: ""
|
||||||
|
|
||||||
|
private_key: '{{ wg_private_key }}'
|
||||||
|
address: "10.66.66.13/32,fd42:42:42::13/128"
|
||||||
|
dns: "192.168.19.244,192.168.19.244"
|
||||||
|
|
||||||
|
wireguard_peers:
|
||||||
|
- public_key: '{{ wg_p1_public_key }}'
|
||||||
|
preshared_key: '{{ wg_p1_preshared_key }}'
|
||||||
|
allowed_ips: "172.16.4.0/24"
|
||||||
|
endpoint: "93.93.202.133:56483"
|
||||||
|
|
||||||
|
|
||||||
|
# Client-Gruppen zum Deployen
|
||||||
|
|
||||||
|
notebooks_client:
|
||||||
|
hosts:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
workstation_client:
|
||||||
|
hosts:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Server-Gruppen zum Deployen
|
||||||
|
|
||||||
|
domainmember_server:
|
||||||
|
hosts:
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
- name: Configure all adapters to use DHCP-assigned DNS values
|
||||||
|
ansible.windows.win_dns_client:
|
||||||
|
adapter_names: '*'
|
||||||
|
dns_servers: []
|
||||||
|
|
||||||
|
#optional:
|
||||||
|
|
||||||
|
# - name: Set multiple lookup addresses on all visible adapters (usually physical adapters that are in the Up state), with debug logging to a file
|
||||||
|
# ansible.windows.win_dns_client:
|
||||||
|
# adapter_names: '*'
|
||||||
|
# dns_servers:
|
||||||
|
# - 192.168.34.5
|
||||||
|
# - 192.168.34.6
|
||||||
|
# suffix_search_list:
|
||||||
|
# - "corp.contoso.com"
|
||||||
|
# - "na.corp.contoso.com"
|
||||||
|
# log_path: C:\dns_log.txt
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Configure German regional settings for system
|
||||||
|
win_shell: |
|
||||||
|
$lang="{{ windows_language }}"
|
||||||
|
|
||||||
|
Set-WinUILanguageOverride -Language $lang
|
||||||
|
Set-WinSystemLocale $lang
|
||||||
|
Set-Culture $lang
|
||||||
|
Set-WinHomeLocation -GeoId {{ windows_geo_id }}
|
||||||
|
|
||||||
|
$list = New-WinUserLanguageList $lang
|
||||||
|
$list[0].InputMethodTips.Clear()
|
||||||
|
$list[0].InputMethodTips.Add("{{ windows_keyboard }}")
|
||||||
|
|
||||||
|
Set-WinUserLanguageList $list -Force
|
||||||
|
register: lang_config
|
||||||
|
|
||||||
|
- name: Configure German language for user {{ username }}
|
||||||
|
win_shell: |
|
||||||
|
$lang="{{ windows_language }}"
|
||||||
|
|
||||||
|
$list = New-WinUserLanguageList $lang
|
||||||
|
$list[0].InputMethodTips.Clear()
|
||||||
|
$list[0].InputMethodTips.Add("{{ windows_keyboard }}")
|
||||||
|
|
||||||
|
Set-WinUserLanguageList $list -Force
|
||||||
|
Set-Culture $lang
|
||||||
|
Set-WinUILanguageOverride -Language $lang
|
||||||
|
become: yes
|
||||||
|
become_method: runas
|
||||||
|
become_user: "{{ username }}"
|
||||||
|
register: user_lang_config
|
||||||
|
|
||||||
|
- name: Apply language to welcome screen and new users
|
||||||
|
win_shell: |
|
||||||
|
Copy-UserInternationalSettingsToSystem `
|
||||||
|
-WelcomeScreen $true `
|
||||||
|
-NewUser $true
|
||||||
|
register: welcome_config
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
- name: Install German language pack
|
||||||
|
win_shell: |
|
||||||
|
$features = @(
|
||||||
|
"Language.Basic~~~{{ windows_language }}~0.0.1.0",
|
||||||
|
"Language.Handwriting~~~{{ windows_language }}~0.0.1.0",
|
||||||
|
"Language.OCR~~~{{ windows_language }}~0.0.1.0",
|
||||||
|
"Language.Speech~~~{{ windows_language }}~0.0.1.0",
|
||||||
|
"Language.TextToSpeech~~~{{ windows_language }}~0.0.1.0"
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach ($feature in $features) {
|
||||||
|
$cap = Get-WindowsCapability -Online |
|
||||||
|
Where-Object Name -like $feature
|
||||||
|
|
||||||
|
if ($cap.State -ne "Installed") {
|
||||||
|
Add-WindowsCapability -Online -Name $feature
|
||||||
|
}
|
||||||
|
}
|
||||||
|
register: lang_install
|
||||||
|
become: yes
|
||||||
|
become_method: runas
|
||||||
|
become_user: SYSTEM
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
- name: Check if German language pack is installed
|
||||||
|
win_shell: |
|
||||||
|
$cap = Get-WindowsCapability -Online |
|
||||||
|
Where-Object { $_.Name -like "Language.Basic~~~{{ windows_language }}*" }
|
||||||
|
|
||||||
|
if ($cap -and $cap.State -eq "installed") {
|
||||||
|
exit 0
|
||||||
|
} else {
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
register: german_installed
|
||||||
|
changed_when: false
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Install German language components
|
||||||
|
import_tasks: install.yml
|
||||||
|
when: german_installed.rc != 0
|
||||||
|
|
||||||
|
- name: Configure German system settings
|
||||||
|
import_tasks: configure.yml
|
||||||
|
when: german_installed.rc != 0
|
||||||
|
|
||||||
|
- name: Reboot if required
|
||||||
|
import_tasks: reboot.yml
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Reboot system if language changes occurred
|
||||||
|
win_reboot:
|
||||||
|
reboot_timeout: 1800
|
||||||
|
when: >
|
||||||
|
lang_install.changed or
|
||||||
|
lang_config.changed or
|
||||||
|
user_lang_config.changed or
|
||||||
|
welcome_config.changed
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Set Windows hostname
|
||||||
|
ansible.windows.win_hostname:
|
||||||
|
name: "{{ hostname }}"
|
||||||
|
register: hostname_result
|
||||||
|
when: not domain_member | bool
|
||||||
|
|
||||||
|
- name: Reboot if hostname changed
|
||||||
|
ansible.windows.win_reboot:
|
||||||
|
when: not domain_member | bool and hostname_result.reboot_required
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
---
|
||||||
|
- name: Set power plan to high performance
|
||||||
|
win_shell: |
|
||||||
|
powercfg /setactive SCHEME_MIN
|
||||||
|
|
||||||
|
- name: Disable sleep (AC)
|
||||||
|
win_shell: |
|
||||||
|
powercfg /change standby-timeout-ac {{ powermanagement.sleep_timeout_ac }}
|
||||||
|
|
||||||
|
- name: Disable sleep (Battery)
|
||||||
|
win_shell: |
|
||||||
|
powercfg /change standby-timeout-dc {{ powermanagement.sleep_timeout_dc }}
|
||||||
|
|
||||||
|
- name: Set monitor timeout (AC)
|
||||||
|
win_shell: |
|
||||||
|
powercfg /change monitor-timeout-ac {{ powermanagement.monitor_timeout_ac }}
|
||||||
|
|
||||||
|
- name: Set monitor timeout (Battery)
|
||||||
|
win_shell: |
|
||||||
|
powercfg /change monitor-timeout-dc {{ powermanagement.monitor_timeout_dc }}
|
||||||
|
|
||||||
|
- name: Set lid close action to do nothing (AC)
|
||||||
|
win_shell: |
|
||||||
|
powercfg /setacvalueindex SCHEME_CURRENT SUB_BUTTONS LIDACTION {{ powermanagement.lid_close_action }}
|
||||||
|
|
||||||
|
- name: Set lid close action to do nothing (Battery)
|
||||||
|
win_shell: |
|
||||||
|
powercfg /setdcvalueindex SCHEME_CURRENT SUB_BUTTONS LIDACTION {{ powermanagement.lid_close_action }}
|
||||||
|
|
||||||
|
- name: Apply power settings
|
||||||
|
win_shell: |
|
||||||
|
powercfg /setactive SCHEME_CURRENT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Disable NIC power saving features
|
||||||
|
win_shell: |
|
||||||
|
Get-NetAdapterAdvancedProperty | Where-Object {
|
||||||
|
$_.DisplayName -match "Energy|EEE"
|
||||||
|
} | Set-NetAdapterAdvancedProperty -DisplayValue "Disabled" -NoRestart
|
||||||
|
args:
|
||||||
|
executable: powershell
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
- name: Enable Remote Desktop in registry
|
||||||
|
ansible.windows.win_regedit:
|
||||||
|
path: HKLM:\System\CurrentControlSet\Control\Terminal Server
|
||||||
|
name: fDenyTSConnections
|
||||||
|
data: 0
|
||||||
|
type: dword
|
||||||
|
|
||||||
|
- name: Configure Network Level Authentication
|
||||||
|
ansible.windows.win_regedit:
|
||||||
|
path: HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
|
||||||
|
name: UserAuthentication
|
||||||
|
data: "{{ (rdp.enable_nla | default(true)) | ternary(1, 0) }}"
|
||||||
|
type: dword
|
||||||
|
|
||||||
|
- name: Enable Remote Desktop firewall rule
|
||||||
|
win_firewall_rule:
|
||||||
|
name: RemoteDesktop-UserMode-In-TCP
|
||||||
|
localport: "{{ rdp.rdp_port | default(3389) }}"
|
||||||
|
action: allow
|
||||||
|
direction: in
|
||||||
|
protocol: tcp
|
||||||
|
state: present
|
||||||
|
enabled: yes
|
||||||
|
|
||||||
|
- name: Ensure RDP service is running
|
||||||
|
ansible.windows.win_service:
|
||||||
|
name: TermService
|
||||||
|
start_mode: auto
|
||||||
|
state: started
|
||||||
|
|
||||||
|
|
||||||
|
- name: Get all local groups
|
||||||
|
ansible.windows.win_shell: Get-LocalGroup | Select-Object -ExpandProperty Name
|
||||||
|
register: local_groups
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Find Remote Desktop Users group (eng/de)
|
||||||
|
set_fact:
|
||||||
|
rdp_group_name: "{{ local_groups.stdout_lines | select('match','(?i)Remote.*Desktop.*Users|Remotedesktopbenutzer') | first }}"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Add my user to RDP access
|
||||||
|
ansible.windows.win_group_membership:
|
||||||
|
name: "{{ rdp_group_name }}"
|
||||||
|
members:
|
||||||
|
- "{{ local_user }}" # hier die Gruppe, die RDP-Zugang bekommen soll
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Add my custom group to RDP access
|
||||||
|
ansible.windows.win_group_membership:
|
||||||
|
name: "{{ rdp_group_name }}"
|
||||||
|
members:
|
||||||
|
- "{{ item.membername }}" # hier die Gruppe, die RDP-Zugang bekommen soll
|
||||||
|
state: present
|
||||||
|
when: rdp.custommember == true
|
||||||
|
loop: "{{ rdp.member }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: item
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
ntp_type: "NTP"
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: restart time service
|
||||||
|
win_service:
|
||||||
|
name: w32time
|
||||||
|
state: restarted
|
||||||
|
|
||||||
|
- name: restart time service
|
||||||
|
win_service:
|
||||||
|
name: w32time
|
||||||
|
state: restarted
|
||||||
|
|
||||||
|
- name: force resync
|
||||||
|
win_shell: w32tm /resync
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Build NTP server string
|
||||||
|
set_fact:
|
||||||
|
ntp_server_string: "{{ ntp_servers | join(',') }}"
|
||||||
|
|
||||||
|
- name: Configure DC NTP servers
|
||||||
|
win_shell: |
|
||||||
|
w32tm /config /manualpeerlist:"{{ ntp_server_string }}" /syncfromflags:manual /reliable:yes /update
|
||||||
|
notify: restart time service
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Set timezone
|
||||||
|
win_timezone:
|
||||||
|
timezone: "W. Europe Standard Time"
|
||||||
|
|
||||||
|
- name: Configure time sync from domain hierarchy
|
||||||
|
win_shell: |
|
||||||
|
w32tm /config /syncfromflags:domhier /update
|
||||||
|
notify: restart time service
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Set timezone
|
||||||
|
win_timezone:
|
||||||
|
timezone: "W. Europe Standard Time"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Build NTP server string
|
||||||
|
set_fact:
|
||||||
|
ntp_server_string: "{{ ntp_servers | join(',') }}"
|
||||||
|
|
||||||
|
- name: Configure NTP servers
|
||||||
|
win_regedit:
|
||||||
|
path: HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
|
||||||
|
name: NtpServer
|
||||||
|
data: "{{ ntp_server_string }}"
|
||||||
|
type: string
|
||||||
|
notify: restart time service
|
||||||
|
|
||||||
|
- name: Set sync type
|
||||||
|
win_regedit:
|
||||||
|
path: HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
|
||||||
|
name: Type
|
||||||
|
data: NTP
|
||||||
|
type: string
|
||||||
|
notify: restart time service
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Detect Windows domain role
|
||||||
|
win_shell: |
|
||||||
|
(Get-CimInstance Win32_ComputerSystem).DomainRole
|
||||||
|
register: domain_role
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Set role fact
|
||||||
|
set_fact:
|
||||||
|
windows_domain_role: "{{ domain_role.stdout | int }}"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Detect Windows domain role
|
||||||
|
include_tasks: detect_role.yml
|
||||||
|
|
||||||
|
- name: Configure NTP for domain controller
|
||||||
|
include_tasks: configure_domain_controller.yml
|
||||||
|
when: windows_domain_role | int in [4,5]
|
||||||
|
|
||||||
|
- name: Configure NTP for domain member
|
||||||
|
include_tasks: configure_domain_member.yml
|
||||||
|
when: windows_domain_role | int in [1,3]
|
||||||
|
|
||||||
|
- name: Configure NTP for standalone host
|
||||||
|
include_tasks: configure_standalone.yml
|
||||||
|
when: windows_domain_role | trim == "0"
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
- name: Install Windows updates until system is fully patched
|
||||||
|
ansible.windows.win_updates:
|
||||||
|
category_names:
|
||||||
|
- SecurityUpdates
|
||||||
|
- CriticalUpdates
|
||||||
|
- UpdateRollups
|
||||||
|
- Updates
|
||||||
|
- DefinitionUpdates
|
||||||
|
- ServicePacks
|
||||||
|
- Drivers
|
||||||
|
- FeaturePacks
|
||||||
|
- Tools
|
||||||
|
- Connectors
|
||||||
|
- Application
|
||||||
|
- Guidance
|
||||||
|
state: installed
|
||||||
|
reboot: true
|
||||||
|
reboot_timeout: 900
|
||||||
Binary file not shown.
@@ -0,0 +1,56 @@
|
|||||||
|
---
|
||||||
|
- name: Check if 7-Zip is installed
|
||||||
|
win_shell: |
|
||||||
|
$paths = @(
|
||||||
|
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
|
||||||
|
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
|
||||||
|
)
|
||||||
|
|
||||||
|
$app = Get-ItemProperty $paths -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.DisplayName -like "*7-Zip*" }
|
||||||
|
|
||||||
|
if ($app) { Write-Output "installed" }
|
||||||
|
register: sevenzip_installed
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp
|
||||||
|
state: directory
|
||||||
|
when: sevenzip_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: directory
|
||||||
|
when: sevenzip_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy MSI installer to Windows host
|
||||||
|
win_copy:
|
||||||
|
src: 7z2600-x64.msi
|
||||||
|
dest: C:\temp\setup\7z.msi
|
||||||
|
force: yes
|
||||||
|
when: sevenzip_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure 7-Zip is installed through win_package
|
||||||
|
win_package:
|
||||||
|
path: C:\temp\setup\7z.msi
|
||||||
|
state: present
|
||||||
|
when: sevenzip_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
# - name: Ensure 7-Zip is not installed through win_package
|
||||||
|
# win_package:
|
||||||
|
# path: C:\temp\7z.msi
|
||||||
|
# state: absent
|
||||||
|
|
||||||
|
- name: Ensure setup directory is deleted
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
- name: Check if Firefox is installed
|
||||||
|
win_shell: |
|
||||||
|
$paths = @(
|
||||||
|
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
|
||||||
|
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
|
||||||
|
)
|
||||||
|
|
||||||
|
$app = Get-ItemProperty $paths -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.DisplayName -like "*Firefox*" }
|
||||||
|
|
||||||
|
if ($app) { Write-Output "installed" }
|
||||||
|
register: browser_installed
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp
|
||||||
|
state: directory
|
||||||
|
when: browser_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: directory
|
||||||
|
when: browser_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy MSI installer to Windows host
|
||||||
|
win_copy:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: C:\temp\setup\{{ item }}
|
||||||
|
force: yes
|
||||||
|
with_items:
|
||||||
|
- Firefox_Setup_148.0.msi
|
||||||
|
- googlechromestandaloneenterprise64.msi
|
||||||
|
when: browser_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure Browser is installed through win_package
|
||||||
|
win_package:
|
||||||
|
path: C:\temp\setup\{{ item }}
|
||||||
|
state: present
|
||||||
|
with_items:
|
||||||
|
- Firefox_Setup_148.0.msi
|
||||||
|
- googlechromestandaloneenterprise64.msi
|
||||||
|
when: browser_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure setup directory is deleted
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
- name: Check if keypass is installed
|
||||||
|
win_shell: |
|
||||||
|
$paths = @(
|
||||||
|
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
|
||||||
|
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
|
||||||
|
)
|
||||||
|
|
||||||
|
$app = Get-ItemProperty $paths -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.DisplayName -like "*keypass*" }
|
||||||
|
|
||||||
|
if ($app) { Write-Output "installed" }
|
||||||
|
register: keypass_installed
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp
|
||||||
|
state: directory
|
||||||
|
when: keypass_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: directory
|
||||||
|
when: keypass_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy MSI installer to Windows host
|
||||||
|
win_copy:
|
||||||
|
src: KeePassXC-2.7.12-Win64.msi
|
||||||
|
dest: C:\temp\setup\keypass.msi
|
||||||
|
force: yes
|
||||||
|
when: keypass_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure keypass is installed through win_package
|
||||||
|
win_package:
|
||||||
|
path: C:\temp\setup\keypass.msi
|
||||||
|
state: present
|
||||||
|
when: keypass_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
- name: Ensure setup directory is deleted
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
- name: Check if LibreOffice is installed
|
||||||
|
win_shell: |
|
||||||
|
$paths = @(
|
||||||
|
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
|
||||||
|
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
|
||||||
|
)
|
||||||
|
|
||||||
|
$app = Get-ItemProperty $paths -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.DisplayName -like "*LibreOffice*" }
|
||||||
|
|
||||||
|
if ($app) { Write-Output "installed" }
|
||||||
|
register: libre_installed
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp
|
||||||
|
state: directory
|
||||||
|
when: libre_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: directory
|
||||||
|
when: libre_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy MSI installer to Windows host
|
||||||
|
win_copy:
|
||||||
|
src: LibreOffice_26.2.1_Win_x86-64.msi
|
||||||
|
dest: C:\temp\setup\libre.msi
|
||||||
|
force: yes
|
||||||
|
when: libre_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure Libre Office is installed through win_package
|
||||||
|
win_package:
|
||||||
|
path: C:\temp\setup\libre.msi
|
||||||
|
state: present
|
||||||
|
when: libre_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
- name: Ensure setup directory is deleted
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
- name: Check if pdf24 is installed
|
||||||
|
win_shell: |
|
||||||
|
$paths = @(
|
||||||
|
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
|
||||||
|
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
|
||||||
|
)
|
||||||
|
|
||||||
|
$app = Get-ItemProperty $paths -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.DisplayName -like "*pdf24*" }
|
||||||
|
|
||||||
|
if ($app) { Write-Output "installed" }
|
||||||
|
register: pdf24_installed
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp
|
||||||
|
state: directory
|
||||||
|
when: pdf24_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: directory
|
||||||
|
when: pdf24_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy MSI installer to Windows host
|
||||||
|
win_copy:
|
||||||
|
src: pdf24-creator-11.29.1-x64.msi
|
||||||
|
dest: C:\temp\setup\pdf24.msi
|
||||||
|
force: yes
|
||||||
|
when: pdf24_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure PDF24 is installed through win_package
|
||||||
|
win_package:
|
||||||
|
path: C:\temp\setup\pdf24.msi
|
||||||
|
state: present
|
||||||
|
when: pdf24_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
- name: Ensure setup directory is deleted
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# Handler zum Neustarten des RustDesk-Dienstes
|
||||||
|
- name: Restart RustDesk service
|
||||||
|
win_service:
|
||||||
|
name: RustDesk # Name des Windows-Dienstes
|
||||||
|
state: restarted
|
||||||
|
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
---
|
||||||
|
- name: Check if Rustdesk is installed
|
||||||
|
win_shell: |
|
||||||
|
$paths = @(
|
||||||
|
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
|
||||||
|
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
|
||||||
|
)
|
||||||
|
|
||||||
|
$app = Get-ItemProperty $paths -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.DisplayName -like "*rustdesk*" }
|
||||||
|
|
||||||
|
if ($app) { Write-Output "installed" }
|
||||||
|
register: rustdesk_installed
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp
|
||||||
|
state: directory
|
||||||
|
when: rustdesk_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
- name: Ensure setup directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: directory
|
||||||
|
when: rustdesk_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy rustdesk MSI installer to Windows host
|
||||||
|
win_copy:
|
||||||
|
src: rustdesk-1.4.6-x86_64.msi
|
||||||
|
dest: C:\temp\setup\rustdesk.msi
|
||||||
|
force: yes
|
||||||
|
when: rustdesk_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure rustdesk is installed through win_package
|
||||||
|
win_package:
|
||||||
|
path: C:\temp\setup\rustdesk.msi
|
||||||
|
state: present
|
||||||
|
when: rustdesk_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure RustDesk service is enabled
|
||||||
|
win_service:
|
||||||
|
name: RustDesk
|
||||||
|
state: started
|
||||||
|
start_mode: auto
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Start RustDesk application
|
||||||
|
win_shell: |
|
||||||
|
Start-Process "C:\Program Files\RustDesk\rustdesk.exe"
|
||||||
|
args:
|
||||||
|
executable: powershell
|
||||||
|
become: yes
|
||||||
|
become_method: runas
|
||||||
|
become_user: "{{ username }}"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Wait until RustDesk process is running
|
||||||
|
win_wait_for_process:
|
||||||
|
process_name_pattern: rustdesk
|
||||||
|
state: present
|
||||||
|
timeout: 30
|
||||||
|
become: yes
|
||||||
|
become_method: runas
|
||||||
|
become_user: "{{ username }}"
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# - name: Start RustDesk interactively in user context
|
||||||
|
# win_shell: |
|
||||||
|
# schtasks /create /tn "StartRustDesk" /tr '"C:\Program Files\RustDesk\RustDesk.exe"' /sc once /st 00:00 /rl highest /f /ru "{{ rustdesk.rustdesk_user }}" /rp "{{ rustdesk.rustdesk_user_password }}"
|
||||||
|
# schtasks /run /tn "StartRustDesk"
|
||||||
|
# schtasks /delete /tn "StartRustDesk" /f
|
||||||
|
# args:
|
||||||
|
# executable: powershell.exe
|
||||||
|
# when: rustdesk_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
- name: Wait until RustDesk processes are there
|
||||||
|
win_wait_for_process:
|
||||||
|
process_name_pattern: rustdesk
|
||||||
|
state: present
|
||||||
|
timeout: 30
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Copy/Check RustDesk config template
|
||||||
|
win_template:
|
||||||
|
src: RustDesk2.toml
|
||||||
|
dest: C:\Users\{{ username }}\AppData\Roaming\RustDesk\config\RustDesk2.toml
|
||||||
|
register: rustdesk_template_check
|
||||||
|
when: not domain_member | bool
|
||||||
|
|
||||||
|
- name: Stop RustDesk service
|
||||||
|
win_service:
|
||||||
|
name: RustDesk
|
||||||
|
state: stopped
|
||||||
|
start_mode: disabled
|
||||||
|
when: rustdesk_template_check.changed
|
||||||
|
|
||||||
|
- name: Stop RustDesk process if running
|
||||||
|
win_shell: |
|
||||||
|
if (Get-Process rustdesk -ErrorAction SilentlyContinue) {
|
||||||
|
Stop-Process -Name rustdesk -Force
|
||||||
|
}
|
||||||
|
when: rustdesk_template_check.changed
|
||||||
|
|
||||||
|
|
||||||
|
- name: Wait until RustDesk processes are gone
|
||||||
|
win_wait_for_process:
|
||||||
|
process_name_pattern: rustdesk
|
||||||
|
state: absent
|
||||||
|
timeout: 30
|
||||||
|
when: rustdesk_template_check.changed
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy RustDesk config template
|
||||||
|
win_template:
|
||||||
|
src: RustDesk2.toml
|
||||||
|
dest: C:\Users\{{ username }}\AppData\Roaming\RustDesk\config\RustDesk2.toml
|
||||||
|
notify: Restart RustDesk service
|
||||||
|
when: rustdesk_template_check.changed
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure RustDesk service is enabled
|
||||||
|
win_service:
|
||||||
|
name: RustDesk
|
||||||
|
state: started
|
||||||
|
start_mode: auto
|
||||||
|
when: rustdesk_template_check.changed
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure setup directory is deleted
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: absent
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
rendezvous_server = '93.93.202.41:21116'
|
||||||
|
serial = ''
|
||||||
|
unlock_pin = ''
|
||||||
|
trusted_devices = ''
|
||||||
|
|
||||||
|
[options]
|
||||||
|
custom-rendezvous-server = '93.93.202.41'
|
||||||
|
key = 'NEthYaFbhCVTWMj4ZV2elX8Ux2GdYZLb0yTzcTm015E='
|
||||||
|
stop-service = 'Y'
|
||||||
|
relay-server = '93.93.202.41'
|
||||||
|
av1-test = 'Y'
|
||||||
|
local-ip-addr = ''
|
||||||
Binary file not shown.
@@ -0,0 +1,51 @@
|
|||||||
|
---
|
||||||
|
- name: Check if Thunderbird is installed
|
||||||
|
win_shell: |
|
||||||
|
$paths = @(
|
||||||
|
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
|
||||||
|
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
|
||||||
|
)
|
||||||
|
|
||||||
|
$app = Get-ItemProperty $paths -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.DisplayName -like "*Thunderbird*" }
|
||||||
|
|
||||||
|
if ($app) { Write-Output "installed" }
|
||||||
|
register: thunderbird_installed
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp
|
||||||
|
state: directory
|
||||||
|
when: thunderbird_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: directory
|
||||||
|
when: thunderbird_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy MSI installer to Windows host
|
||||||
|
win_copy:
|
||||||
|
src: Thunderbird_Setup_148.0.1.msi
|
||||||
|
dest: C:\temp\setup\thunderbird.msi
|
||||||
|
force: yes
|
||||||
|
when: thunderbird_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure thunderbird is installed through win_package
|
||||||
|
win_package:
|
||||||
|
path: C:\temp\setup\thunderbird.msi
|
||||||
|
state: present
|
||||||
|
when: thunderbird_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
- name: Ensure setup directory is deleted
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
- name: Remove Store apps (Teams, Office)
|
||||||
|
win_shell: |
|
||||||
|
Get-AppxPackage -AllUsers |
|
||||||
|
Where-Object {
|
||||||
|
$_.Name -like "*Office*" -or $_.Name -like "*Teams*"
|
||||||
|
} | Remove-AppxPackage -AllUsers
|
||||||
|
when: uninstall365.remove_store_apps
|
||||||
|
args:
|
||||||
|
executable: powershell
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Remove OneDrive
|
||||||
|
win_shell: |
|
||||||
|
taskkill /f /im OneDrive.exe
|
||||||
|
%SystemRoot%\SysWOW64\OneDriveSetup.exe /uninstall
|
||||||
|
when: uninstall365.remove_onedrive
|
||||||
|
args:
|
||||||
|
executable: cmd
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Remove leftover directories
|
||||||
|
win_file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: absent
|
||||||
|
loop:
|
||||||
|
- "C:\\Program Files\\Microsoft Office"
|
||||||
|
- "C:\\Program Files (x86)\\Microsoft Office"
|
||||||
|
- "C:\\ProgramData\\Microsoft\\Office"
|
||||||
|
ignore_errors: true
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
- name: Scan registry for installed software
|
||||||
|
win_shell: |
|
||||||
|
$patterns = @({{ uninstall365.m365_match_patterns | map('to_json') | join(',') }})
|
||||||
|
$results = @()
|
||||||
|
|
||||||
|
foreach ($path in @({{ registry_paths | map('to_json') | join(',') }})) {
|
||||||
|
if (Test-Path $path) {
|
||||||
|
Get-ChildItem $path | ForEach-Object {
|
||||||
|
$disp = $_.GetValue("DisplayName")
|
||||||
|
$uninstall = $_.GetValue("UninstallString")
|
||||||
|
|
||||||
|
if ($disp) {
|
||||||
|
foreach ($p in $patterns) {
|
||||||
|
if ($disp -like "*$p*") {
|
||||||
|
$results += [PSCustomObject]@{
|
||||||
|
Name = $disp
|
||||||
|
UninstallString = $uninstall
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$results | ConvertTo-Json -Compress
|
||||||
|
args:
|
||||||
|
executable: powershell
|
||||||
|
register: m365_detect_raw
|
||||||
|
|
||||||
|
- name: Parse detected apps
|
||||||
|
set_fact:
|
||||||
|
m365_installed: "{{ m365_detect_raw.stdout | default('[]') | from_json }}"
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure log directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\Temp
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
- name: Detect installed M365 products
|
||||||
|
include_tasks: detect.yml
|
||||||
|
|
||||||
|
- name: Uninstall via registry
|
||||||
|
include_tasks: uninstall_registry.yml
|
||||||
|
when: m365_installed | length > 0
|
||||||
|
|
||||||
|
- name: Remove Click-to-Run installations
|
||||||
|
include_tasks: uninstall_c2r.yml
|
||||||
|
when: uninstall365.remove_click_to_run
|
||||||
|
|
||||||
|
- name: Cleanup leftovers
|
||||||
|
include_tasks: cleanup.yml
|
||||||
|
|
||||||
|
- name: Reboot if required
|
||||||
|
include_tasks: reboot.yml
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
- name: Check if reboot is required
|
||||||
|
win_shell: |
|
||||||
|
if (Test-Path "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WindowsUpdate\\Auto Update\\RebootRequired") {
|
||||||
|
exit 1
|
||||||
|
} else {
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
register: reboot_check
|
||||||
|
failed_when: reboot_check.rc == 1
|
||||||
|
changed_when: reboot_check.rc == 1
|
||||||
|
|
||||||
|
- name: Reboot system if needed
|
||||||
|
win_reboot:
|
||||||
|
msg: "Reboot after M365 removal"
|
||||||
|
pre_reboot_delay: 10
|
||||||
|
when: uninstall365.reboot_if_required and reboot_check.rc == 1
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
- name: Check if Click-to-Run exists
|
||||||
|
win_stat:
|
||||||
|
path: "{{ click_to_run_exe }}"
|
||||||
|
register: c2r_stat
|
||||||
|
|
||||||
|
- name: Remove Click-to-Run Office
|
||||||
|
win_shell: |
|
||||||
|
"{{ click_to_run_exe }}" scenario=install scenariosubtype=ARP sourcetype=None productstoremove=AllProducts displaylevel=false
|
||||||
|
when: c2r_stat.stat.exists
|
||||||
|
args:
|
||||||
|
executable: cmd
|
||||||
|
register: c2r_remove
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Log C2R removal
|
||||||
|
win_lineinfile:
|
||||||
|
path: "{{ uninstall365.m365_log_path }}"
|
||||||
|
line: "Click-to-Run removal executed"
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
- name: Uninstall detected applications
|
||||||
|
win_shell: |
|
||||||
|
$apps = {{ m365_installed | to_json }}
|
||||||
|
|
||||||
|
foreach ($app in $apps) {
|
||||||
|
if ($app.UninstallString) {
|
||||||
|
$cmd = $app.UninstallString
|
||||||
|
|
||||||
|
if ($cmd -notmatch "/quiet") {
|
||||||
|
$cmd += " /quiet /norestart"
|
||||||
|
}
|
||||||
|
|
||||||
|
Start-Process -FilePath "cmd.exe" -ArgumentList "/c $cmd" -Wait
|
||||||
|
}
|
||||||
|
}
|
||||||
|
args:
|
||||||
|
executable: powershell
|
||||||
|
register: uninstall_result
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Log uninstall results
|
||||||
|
win_lineinfile:
|
||||||
|
path: "{{ uninstall365.m365_log_path }}"
|
||||||
|
line: "Registry uninstall executed at {{ ansible_date_time.iso8601 }}"
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
registry_paths:
|
||||||
|
- HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall
|
||||||
|
- HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
|
||||||
|
|
||||||
|
click_to_run_exe: "C:\\Program Files\\Common Files\\Microsoft Shared\\ClickToRun\\OfficeClickToRun.exe"
|
||||||
Binary file not shown.
@@ -0,0 +1,67 @@
|
|||||||
|
---
|
||||||
|
- name: Check if wireguard is installed
|
||||||
|
win_shell: |
|
||||||
|
$paths = @(
|
||||||
|
"HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
|
||||||
|
"HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
|
||||||
|
)
|
||||||
|
|
||||||
|
$app = Get-ItemProperty $paths -ErrorAction SilentlyContinue |
|
||||||
|
Where-Object { $_.DisplayName -like "*wireguard*" }
|
||||||
|
|
||||||
|
if ($app) { Write-Output "installed" }
|
||||||
|
register: wireguard_installed
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp
|
||||||
|
state: directory
|
||||||
|
when: wireguard_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure temp directory exists
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: directory
|
||||||
|
when: wireguard_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Copy MSI installer to Windows host
|
||||||
|
win_copy:
|
||||||
|
src: wireguard-amd64-0.5.3.msi
|
||||||
|
dest: C:\temp\setup\wg.msi
|
||||||
|
force: yes
|
||||||
|
when: wireguard_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Ensure wireguard is installed through win_package
|
||||||
|
win_package:
|
||||||
|
path: C:\temp\setup\wg.msi
|
||||||
|
state: present
|
||||||
|
when: wireguard_installed.stdout | trim != "installed"
|
||||||
|
|
||||||
|
- name: Copy/Check wireguard config template
|
||||||
|
win_template:
|
||||||
|
src: wg.conf
|
||||||
|
dest: C:\Users\{{ username }}\Documents
|
||||||
|
|
||||||
|
- name: Add User to Netzwerkkonfigurationsoperatoren
|
||||||
|
ansible.windows.win_group_membership:
|
||||||
|
name: "S-1-5-32-556"
|
||||||
|
members:
|
||||||
|
- "{{ item.username }}"
|
||||||
|
state: present
|
||||||
|
when: wg.non_admin == true
|
||||||
|
loop: "{{ wg.users }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: item
|
||||||
|
|
||||||
|
- name: Ensure setup directory is deleted
|
||||||
|
win_file:
|
||||||
|
path: C:\temp\setup
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
[Interface]
|
||||||
|
PrivateKey = {{ wg.private_key }}
|
||||||
|
Address = {{ wg.address }}
|
||||||
|
DNS = {{ wg.dns }}
|
||||||
|
|
||||||
|
{% for peer in wg.wireguard_peers %}
|
||||||
|
[Peer]
|
||||||
|
PublicKey = {{ peer.public_key }}
|
||||||
|
PreSharedKey = {{ peer.preshared_key }}
|
||||||
|
AllowedIPs = {{ peer.allowed_ips }}
|
||||||
|
Endpoint = {{ peer.endpoint }}
|
||||||
|
PersistentKeepalive = 25
|
||||||
|
{% endfor %}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
$ANSIBLE_VAULT;1.2;AES256;wg
|
||||||
|
63663332616565356139353765316636313435623339333663373363333964316335323966636538
|
||||||
|
3061653236383236383530333131306130613435623032390a616533613632326465653330373861
|
||||||
|
33303566363461383763393638663465373162323461336136386339303838336433383436313739
|
||||||
|
3736373166353030660a363730613363666166356332303931303134336463306637376266353864
|
||||||
|
36373461303363643239333864613865633934616364353635643539666163663330373261646166
|
||||||
|
64333363623661346232386461656137643239376562666461353762646436326434386537326237
|
||||||
|
61366131376138643932366639363530396565363838363061333036663931333463396534303633
|
||||||
|
61346530653531343863313739353939363834383166313530303933313430336534663136313963
|
||||||
|
66383539643735313638373736613839393961303266363034343332373738626462366461623539
|
||||||
|
64313038306534306339663766323964346262663131366134666634633132356234616363623433
|
||||||
|
63353637626661393533666665363236653334613266666533656630343130356431633037373330
|
||||||
|
36313833313964383836393233316461323332623538663431653632626230333533643665613330
|
||||||
|
34363438363939356432323164303761326464333961666334356230626335323263663133663034
|
||||||
|
6165653064343433376233313236343961393434333465346365
|
||||||
157
ansible_deployment/site.yml
Normal file
157
ansible_deployment/site.yml
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
- name: Generic setups
|
||||||
|
hosts: all
|
||||||
|
gather_facts: false
|
||||||
|
vars_files:
|
||||||
|
- ./group_vars/all/vault_pass.yml
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Completely Tested Setup!!!
|
||||||
|
|
||||||
|
- name: specific setups for test-vm
|
||||||
|
hosts: test_domain_vm_client
|
||||||
|
gather_facts: false
|
||||||
|
roles:
|
||||||
|
- role: windows_roles/system_roles/german_language
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- language
|
||||||
|
- role: windows_roles/system_roles/hostname
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- hostname
|
||||||
|
- role: windows_roles/system_roles/dns
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- dns
|
||||||
|
- role: windows_roles/system_roles/time
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- time
|
||||||
|
- role: windows_roles/system_roles/powersaver_off
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- powersaver_off
|
||||||
|
- role: windows_roles/system_roles/rdp
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- rdp
|
||||||
|
- role: windows_roles/system_roles/updates
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- updates
|
||||||
|
- role: windows_roles/tools_roles/7zip
|
||||||
|
tags:
|
||||||
|
- 7zip
|
||||||
|
- tools
|
||||||
|
- role: windows_roles/tools_roles/rustdesk
|
||||||
|
tags:
|
||||||
|
- rustdesk
|
||||||
|
- tools
|
||||||
|
- role: windows_roles/tools_roles/browser
|
||||||
|
tags:
|
||||||
|
- browser
|
||||||
|
- tools
|
||||||
|
|
||||||
|
|
||||||
|
- role: windows_roles/tools_roles/pdf24
|
||||||
|
tags:
|
||||||
|
- pdf
|
||||||
|
- office_tools
|
||||||
|
- role: windows_roles/tools_roles/libre
|
||||||
|
tags:
|
||||||
|
- office
|
||||||
|
- office_tools
|
||||||
|
- role: windows_roles/tools_roles/thunderbird
|
||||||
|
tags:
|
||||||
|
- mail
|
||||||
|
- office_tools
|
||||||
|
- role: windows_roles/tools_roles/wireguard
|
||||||
|
tags:
|
||||||
|
- wg
|
||||||
|
- tools
|
||||||
|
- role: windows_roles/tools_roles/keypass
|
||||||
|
tags:
|
||||||
|
- passvault
|
||||||
|
- tools
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# windows notebooks
|
||||||
|
- name: specific setups for nbk
|
||||||
|
hosts: notebooks_client
|
||||||
|
gather_facts: false
|
||||||
|
roles:
|
||||||
|
- role: windows_roles/system_roles/german_language
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- language
|
||||||
|
- role: windows_roles/system_roles/hostname
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- hostname
|
||||||
|
- role: windows_roles/system_roles/dns
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- dns
|
||||||
|
- role: windows_roles/system_roles/time
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- time
|
||||||
|
- role: windows_roles/system_roles/powersaver_off
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- powersaver_off
|
||||||
|
- role: windows_roles/system_roles/rdp
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- rdp
|
||||||
|
- role: windows_roles/system_roles/updates
|
||||||
|
tags:
|
||||||
|
- system
|
||||||
|
- updates
|
||||||
|
- role: windows_roles/tools_roles/7zip
|
||||||
|
tags:
|
||||||
|
- 7zip
|
||||||
|
- tools
|
||||||
|
- role: windows_roles/tools_roles/rustdesk
|
||||||
|
tags:
|
||||||
|
- rustdesk
|
||||||
|
- tools
|
||||||
|
- role: windows_roles/tools_roles/browser
|
||||||
|
tags:
|
||||||
|
- browser
|
||||||
|
- tools
|
||||||
|
- role: windows_roles/tools_roles/wireguard
|
||||||
|
tags:
|
||||||
|
- wg
|
||||||
|
- tools
|
||||||
|
|
||||||
|
- role: windows_roles/tools_roles/pdf24
|
||||||
|
tags:
|
||||||
|
- pdf
|
||||||
|
- office_tools
|
||||||
|
- role: windows_roles/tools_roles/keypass
|
||||||
|
tags:
|
||||||
|
- passvault
|
||||||
|
- tools
|
||||||
|
|
||||||
|
|
||||||
|
# windows workstations
|
||||||
|
- name: specific setups for wks
|
||||||
|
hosts: workstation_client
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
|
||||||
|
# windows Domainmember-server
|
||||||
|
- name: specific setups for Member-Server
|
||||||
|
hosts: domainmember_server
|
||||||
|
gather_facts: false
|
||||||
32
disable_psremote_script.ps1
Normal file
32
disable_psremote_script.ps1
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
Write-Host "Deaktiviere PowerShell Remoting..." -ForegroundColor Yellow
|
||||||
|
|
||||||
|
# Autostart deaktivieren
|
||||||
|
Write-Host "Deaktiviere WinRM Autostart..."
|
||||||
|
Set-Service WinRM -StartupType Disabled
|
||||||
|
|
||||||
|
# WinRM Dienst stoppen
|
||||||
|
if (Get-Service WinRM -ErrorAction SilentlyContinue) {
|
||||||
|
Write-Host "Stoppe WinRM Dienst..."
|
||||||
|
Stop-Service WinRM -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
# Listener entfernen
|
||||||
|
Write-Host "Entferne WinRM Listener..."
|
||||||
|
winrm delete winrm/config/Listener?Address=*+Transport=HTTP 2>$null
|
||||||
|
winrm delete winrm/config/Listener?Address=*+Transport=HTTPS 2>$null
|
||||||
|
|
||||||
|
# Firewallregeln deaktivieren
|
||||||
|
Write-Host "Deaktiviere Firewall Regeln..."
|
||||||
|
Disable-NetFirewallRule -DisplayGroup "Windows Remote Management"
|
||||||
|
|
||||||
|
# LocalAccountTokenFilterPolicy zurücksetzen
|
||||||
|
Write-Host "Setze LocalAccountTokenFilterPolicy zurück..."
|
||||||
|
$path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
|
||||||
|
|
||||||
|
if (Test-Path $path) {
|
||||||
|
Set-ItemProperty -Path $path -Name LocalAccountTokenFilterPolicy -Value 0 -Type DWord
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "PowerShell Remoting wurde deaktiviert." -ForegroundColor Green
|
||||||
|
|
||||||
Reference in New Issue
Block a user