Ansible är det populära gratis konfigurationshanteringssystemet med öppen källkod som främst används för att hantera Linux-värdar. Den här artikeln beskriver hur du använder Ansible för att fjärrstyra konfigurationen av Windows-servrar och arbetsstationsvärdar.
Innehåll:
- Konfigurera Windows Hosts för Ansible
- Hantera Windows-värdar med Ansible
- Ansible Playbook-exempel för Windows-administration
Konfigurera Windows Hosts för Ansible
Ansible låter dig fjärrhantera Windows-värdar med alla operativsystem som stöds, från Windows 7/Windows Server 2008 och upp till den senaste Windows 11/Windows Server 2022. På Windows måste du ha PowerShell 3.0 (eller nyare) och .NET 4.0+ installerade.
Kontrollera versionen av PowerShell och .Net Framework på Windows och uppdatera dem vid behov (se Hur man uppdaterar PowerShell i Windows).
Ansible använder WinRM för att ansluta till Windows operativsystem. Därför måste du aktivera och konfigurera WinRM-lyssnaren på alla hanterade Windows-värdar.
Ansible 2.8 och nyare har ett experimentellt alternativ för att fjärrhantera Windows 10/11- och Windows Server 2019/2022-klienter via den inbyggda OpenSSH-servern.
- Grupppolicyer kan användas för att konfigurera WinRM på domändatorer i AD;
- Kör följande PowerShell-kommando för att aktivera WinRM på en fristående Windows-värd:
Enable-PSRemoting –Force
Om du har WinRM aktiverat och konfigurerat på Windows-värdar, kontrollera att TCP/5985- eller TCP/5986-porten (om du använder HTTPS) är tillgänglig från hanteringsservern Ansible:
$ nc -zv 192.168.13.122 5985

Sedan måste du välja autentiseringsmetod. Detta beror på miljön du använder Ansible.
- För en fristående dator eller arbetsgruppsmiljö kan du använda HTTPS för WinRM med självsignerade certifikat och autentisering med ett lokalt Windows-konto med administratörsbehörighet. För snabb konfiguration av en Windows-värd kan du användaConfigureRemotingForAnsible.ps1(https://github.com/ansible/ansible-documentation/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1);
- I mitt fall är alla Windows-värdar anslutna till Active Directory-domänen, så jag använder mitt AD-konto för att autentisera till Ansible. Detta kräver att Kerberos-autentisering konfigureras på Ansible-servern (se nedan).
Vid det här laget antar vi att Ansible redan är installerat på din Linux-hanteringsvärd.
Installera paketen som krävs för Kerberos-autentisering:
- För RHEL/Rocky Linux/CentOS via yum/dnf-pakethanteraren:
$ sudo yum -y install python-devel krb5-devel krb5-libs krb5-workstation - För Ubuntu/Debian:
$ sudo apt-get -y install python-dev libkrb5-dev krb5-user
Installera sedan Python-paketet via pip:
$ sudo pip3 install requests-kerberos
Ange anslutningsinställningarna för din domän i Kerberos conf-fil:
$ 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
Kontrollera att du kan autentisera till din AD-domän och få en Kerberos-biljett:
kinit -C [email protected]
Ange ditt AD-användarlösenord och se om biljetten har tagits emot.
klist


Hantera Windows-värdar med Ansible
Lägg sedan till alla dina Windows-värdar till Ansible-inventeringsfilen:
$ 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
Kontrollera att alla dina Windows-värdar (min lista inkluderar två Windows Server 2019 och en Windows 11-dator) är tillgängliga från Ansible:
$ ansible windows_all -m win_ping


Värdar kan returnera ett fel:
"msg": "kerberos: Bad HTTP response returned from server. Code 500", "unreachable": true


Detta beror på att WinRM i detta exempel använder HTTP istället för HTTPS för att ansluta. För att ignorera felet måste du tillåta okrypterad trafik på Windows-värdar
Set-Item -Path WSMan:localhostServiceAllowUnencrypted -Value true
Nu kan du använda Ansible för att köra ett godtyckligt kommando på alla dina Windows-värdar. Till exempel vill jag återställa DNS-cachen på alla mina Windows-maskiner:
$ ansible windows_all -m win_shell -a "ipconfig /flushdns"


Ansible Playbook-exempel för Windows-administration
Dina Windows-värdar är nu redo att köra Ansible playbooks.
Till exempel måste du köra ett PowerShell-skript på alla värdar som använder Ansible (i det här exemplet kommer vi att använda PowerShell för att få de aktuella IP- eller DNS-inställningarna på värdarna). Skapa en spelboksfil:
$ 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:


Kör spelboken:
$ ansible-playbook /etc/ansible/playbooks/win-exec-powershell.yml
I det här exemplet kördes spelboken framgångsrikt på alla Windows-värdar och de aktuella DNS-inställningarna returnerades.


Låt oss ta en titt på några typiska Ansible-spelböcker för vanliga Windows-värdhanteringsuppgifter.
Se även:Fasta virtuella maskiner har inget fel på internetåtkomst
Kopiera en fil:
- name: Copy a single file
win_copy:
src: /home/sysops/files/test.ps1"
dest: C:Temptest.ps1
Skapa en fil:
- name: Create file
win_file:
path: C:Tempfile.txt
state: touch
Ta bort en fil:
- name: Delete file
win_file:
path: C:Tempfile.txt
state: absent
Skapa en registerparameter:
- name: Create reg dword
win_regedit:
path: HKLM:SOFTWAREMicrosoftWindowsCurrentVersionPoliciesDataCollection
name: AllowTelemetry
data: 0
type: dword
Installera ett program från MSI:
- name: Install MSI package
win_package:
path: C:Distradobereader.msi
arguments:
- /install
- /passive
- /norestart
Kör en Windows-tjänst:
- name: Run Windows Service
win_service:
name: wuauserv
state: started


Installera en Windows Server-roll:
- name: Install Windows Feature
win_feature:
name: SNMP-Service
state: present
Öppna en port i Windows Defender-brandväggen:
- name: Open SSH Port
win_firewall_rule:
name: port 22
localport: 22
action: allow
direction: in
protocol: tcp
state: present
enabled: yes
Kör ett PowerShell-skript:
- name: Run PowerShell Script win_command: powershell.exe -ExecutionPolicy ByPass -File C:/temp/powershellscript.ps1
Genom hela den här artikeln har du lärt dig hur du hanterar konfigurationen av dina Windows-värdar genom Ansible. Om dina Windows-värdar inte är anslutna till en Active Directory-domän (de är i en arbetsgrupp) kan fjärrkonfigurationshantering av Windows-värdar med Ansible vara ett bra alternativ till konfiguration med domängrupppolicyer.
Du kan också installera Ansible i Windows-undersystemet för Linux (WSL). Detta skulle tillåta dig att köra playbooks utan att behöva distribuera en separat Linux-värd för Ansible.


![Titta på "To Your Eternity" Anime online gratis [alla avsnitt]](https://elsefix.com/tech/afton/wp-content/uploads/cache/2025/05/watch-to-your-eternity-for-free.jpg)












