Ansible je populární bezplatný systém správy konfigurace s otevřeným zdrojovým kódem používaný především ke správě hostitelů Linuxu. Tento článek popisuje, jak používat Ansible ke vzdálené správě konfigurace serverů Windows a hostitelů pracovních stanic.
Obsah:
- Konfigurace hostitelů Windows pro Ansible
- Správa hostitelů Windows pomocí Ansible
- Příklady Ansible Playbook pro správu Windows
Konfigurace hostitelů Windows pro Ansible
Ansible vám umožňuje vzdáleně spravovat hostitele Windows se všemi podporovanými verzemi OS, počínaje Windows 7/Windows Server 2008 a až po nejnovější Windows 11/Windows Server 2022. Ve Windows musíte mít nainstalované PowerShell 3.0 (nebo novější) a .NET 4.0+.
Zkontrolujte verzi PowerShell a .Net Framework v systému Windows a v případě potřeby je aktualizujte (viz Jak aktualizovat PowerShell ve Windows).
Ansible používá WinRM pro připojení k operačnímu systému Windows. Proto musíte povolit a nakonfigurovat naslouchání WinRM na všech spravovaných hostitelích Windows.
Ansible 2.8 a novější má experimentální možnost vzdálené správy klientů Windows 10/11 a Windows Server 2019/2022 prostřednictvím vestavěného serveru OpenSSH.
- Zásady skupiny lze použít ke konfiguraci služby WinRM na počítačích domény v AD;
- Spuštěním následujícího příkazu PowerShell povolte WinRM na samostatném hostiteli Windows:
Enable-PSRemoting –Force
Pokud máte na hostitelích se systémem Windows povolenou a nakonfigurovanou službu WinRM, zkontrolujte, zda je port TCP/5985 nebo TCP/5986 (pokud používáte HTTPS) dostupný ze serveru Ansible pro správu:
$ nc -zv 192.168.13.122 5985

Poté musíte zvolit metodu ověření. To bude záviset na prostředí, ve kterém Ansible používáte.
- Pro prostředí samostatného počítače nebo pracovní skupiny můžete použít HTTPS pro WinRM s certifikáty s vlastním podpisem a ověřováním pomocí místního účtu Windows s oprávněními správce. Pro rychlou konfiguraci hostitele Windows můžete použítConfigureRemotingForAnsible.ps1(https://github.com/ansible/ansible-documentation/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1);
- V mém případě jsou všichni hostitelé Windows připojeni k doméně Active Directory, takže k ověření u Ansible použiji svůj účet AD. To vyžaduje konfiguraci ověřování Kerberos na serveru Ansible (viz níže).
V tomto okamžiku předpokládáme, že Ansible je již nainstalován na vašem hostiteli správy Linuxu.
Nainstalujte balíčky požadované pro ověřování Kerberos:
- Pro RHEL/Rocky Linux/CentOS prostřednictvím správce balíčků yum/dnf:
$ sudo yum -y install python-devel krb5-devel krb5-libs krb5-workstation - Pro Ubuntu/Debian:
$ sudo apt-get -y install python-dev libkrb5-dev krb5-user
Poté nainstalujte balíček Python přes pip:
$ sudo pip3 install requests-kerberos
Zadejte nastavení připojení pro vaši doménu v souboru Kerberos conf:
$ sudo mcedit /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_realm = WOSHUB.LOC
[realms]
WOSHUB.LOC = {
admin_server = dc01.woshub.loc
kdc = dc01.woshub.loc
}
[domain_realm]
woshub.loc = WOSHUB.LOC
.WOSHUB.LOC = WOSHUB.LOC
Zkontrolujte, zda se můžete ověřit ke své doméně AD a získat lístek Kerberos:
kinit -C [email protected]
Zadejte heslo uživatele AD a zjistěte, zda byl lístek přijat.
klist


Správa hostitelů Windows pomocí Ansible
Dále přidejte všechny své hostitele Windows do souboru inventáře Ansible:
$ sudo mcedit /etc/ansible/hosts
mun-rds1.woshub.loc mun-dc02.woshub.loc wks-test1.woshub.loc [windows_all:vars] ansible_port=5985 [email protected] ansible_connection=winrm ansible_winrm_transport=kerberos ansible_winrm_scheme=http ansible_winrm_server_cert_validation=ignore
Zkontrolujte, zda jsou všichni vaši hostitelé Windows (můj seznam obsahuje dva Windows Server 2019 a jeden počítač s Windows 11) přístupní z Ansible:
$ ansible windows_all -m win_ping


Hostitelé mohou vrátit chybu:
"msg": "kerberos: Bad HTTP response returned from server. Code 500", "unreachable": true


Důvodem je, že WinRM v tomto příkladu používá k připojení HTTP místo HTTPS. Chcete-li chybu ignorovat, musíte povolit nešifrovaný provoz na hostitelích Windows
Set-Item -Path WSMan:localhostServiceAllowUnencrypted -Value true
Nyní můžete použít Ansible ke spuštění libovolného příkazu na všech vašich hostitelích Windows. Například chci resetovat mezipaměť DNS na všech svých počítačích se systémem Windows:
$ ansible windows_all -m win_shell -a "ipconfig /flushdns"


Příklady Ansible Playbook pro správu Windows
Vaši hostitelé Windows jsou nyní připraveni spustit Ansible playbooky.
Například musíte spustit skript PowerShell na všech hostitelích pomocí Ansible (v tomto příkladu použijeme PowerShell k získání aktuálního nastavení IP nebo DNS na hostitelích). Vytvořte soubor playbooku:
$ sudo mcedit /etc/ansible/playbooks/win-exec-powershell.yml
---
- name: win_powershell_exec
hosts: windows_all
tasks:
- name: check DNS
win_shell: |
Get-DnsClientServerAddress -InterfaceIndex (Get-NetAdapter|where Status -eq "Up").ifindex -ErrorAction SilentlyContinue
register: command_output
- name: command output
ansible.builtin.debug:


Spusťte příručku:
$ ansible-playbook /etc/ansible/playbooks/win-exec-powershell.yml
V tomto příkladu byla příručka úspěšně spuštěna na všech hostitelích Windows a byla vrácena aktuální nastavení DNS.


Podívejme se na některé typické příručky Ansible pro standardní úlohy správy hostitelů Windows.
Zkopírujte soubor:
- name: Copy a single file
win_copy:
src: /home/sysops/files/test.ps1"
dest: C:Temptest.ps1
Vytvořte soubor:
Další informace:Globální výpadek: Aktualizace CrowdStrike havaruje počítače se systémem Windows – klíčové informace a řešení
- name: Create file
win_file:
path: C:Tempfile.txt
state: touch
Smazat soubor:
- name: Delete file
win_file:
path: C:Tempfile.txt
state: absent
Vytvořte parametr registru:
- name: Create reg dword
win_regedit:
path: HKLM:SOFTWAREMicrosoftWindowsCurrentVersionPoliciesDataCollection
name: AllowTelemetry
data: 0
type: dword
Nainstalujte program od MSI:
- name: Install MSI package
win_package:
path: C:Distradobereader.msi
arguments:
- /install
- /passive
- /norestart
Spusťte službu Windows:
- name: Run Windows Service
win_service:
name: wuauserv
state: started


Instalace role Windows Server:
- name: Install Windows Feature
win_feature:
name: SNMP-Service
state: present
Otevřete port v bráně Windows Defender Firewall:
- name: Open SSH Port
win_firewall_rule:
name: port 22
localport: 22
action: allow
direction: in
protocol: tcp
state: present
enabled: yes
Spusťte skript PowerShellu:
- name: Run PowerShell Script win_command: powershell.exe -ExecutionPolicy ByPass -File C:/temp/powershellscript.ps1
V tomto článku jste se naučili, jak spravovat konfiguraci hostitelů Windows pomocí Ansible. Pokud vaši hostitelé Windows nejsou připojeni k doméně Active Directory (jsou v pracovní skupině), pak vzdálená správa konfigurace hostitelů Windows pomocí Ansible může být dobrou alternativou ke konfiguraci pomocí zásad skupiny domény.
Ansible můžete také nainstalovat do podsystému Windows pro Linux (WSL). To by vám umožnilo spouštět playbooky bez nutnosti nasazení samostatného hostitele Linuxu pro Ansible.













