Windows Makinelerini Yönetmek İçin Ansible Nasıl Kullanılır
Ansible, öncelikle Linux ana bilgisayarlarını yönetmek için kullanılan popüler ücretsiz açık kaynaklı konfigürasyon yönetim sistemidir. Bu makalede, Windows sunucularının ve iş istasyonu ana bilgisayarlarının yapılandırmasını uzaktan yönetmek için Ansible'ın nasıl kullanılacağı açıklanmaktadır.
Ansible için Windows Ana Bilgisayarlarını Yapılandırma
Ansible, Windows 7/Windows Server 2008'den başlayarak en son Windows 11/Windows Server 2022'ye kadar desteklenen tüm işletim sistemi sürümlerine sahip Windows ana bilgisayarlarını uzaktan yönetmenize olanak tanır. Windows'ta PowerShell 3.0 (veya daha yenisi) ve .NET 4.0'a sahip olmanız gerekir. + yüklü.
Windows'ta PowerShell ve .Net Framework sürümünü kontrol edin ve gerekiyorsa bunları güncelleyin (bkz. Windows'ta PowerShell nasıl güncelleştirilir).
Ansible, Windows işletim sistemine bağlanmak için WinRM'yi kullanır. Bu nedenle, yönetilen tüm Windows ana bilgisayarlarında WinRM dinleyicisini etkinleştirmeniz ve yapılandırmanız gerekir.
Ansible 2.8 ve daha yenisi, Windows 10/11 ve Windows Server 2019/2022 istemcilerini yerleşik OpenSSH sunucusu aracılığıyla uzaktan yönetmek için deneysel bir seçeneğe sahiptir.
-
Grup İlkeleri, AD'deki etki alanı bilgisayarlarında WinRM'yi yapılandırmak için kullanılabilir;
Tek başına bir Windows ana bilgisayarında WinRM'yi etkinleştirmek için aşağıdaki PowerShell komutunu çalıştırın:
Enable-PSRemoting -Force
Windows ana bilgisayarlarında WinRM'yi etkinleştirdiyseniz ve yapılandırdıysanız, TCP/5985 veya TCP/5986 bağlantı noktasının (HTTPS kullanılıyorsa) yönetim Ansible sunucusundan erişilebilir olduğunu kontrol edin:
$ nc -zv 192.168.13.122 5985Daha sonra kimlik doğrulama yöntemini seçmeniz gerekir. Bu, Ansible'ı kullandığınız ortama bağlı olacaktır.
Bağımsız bir bilgisayar veya çalışma grubu ortamı için, WinRM için HTTPS'yi kendinden imzalı sertifikalarla ve yönetici ayrıcalıklarına sahip yerel bir Windows hesabı kullanarak kimlik doğrulamayla kullanabilirsiniz. Bir Windows ana bilgisayarının hızlı yapılandırılması için ConfigureRemotingForAnsible.ps1 (https://github.com/ansible/ansible-documentation/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 ) komutunu kullanabilirsiniz;
Benim durumumda, tüm Windows ana bilgisayarları Active Directory etki alanına katılmıştır, bu nedenle Ansible'da kimlik doğrulaması yapmak için AD hesabımı kullanacağım. Bu, Ansible sunucusunda Kerberos kimlik doğrulamasının yapılandırılmasını gerektirir (aşağıya bakın).
Bu noktada Ansible'ın Linux yönetim ana makinenizde zaten kurulu olduğunu varsayıyoruz.
Kerberos kimlik doğrulaması için gereken paketleri yükleyin:
RHEL/Rocky Linux/CentOS için yum/dnf paket yöneticisi aracılığıyla:
$ sudo yum -y install python-devel krb5-devel krb5-libs krb5-workstation-
Ubuntu/Debian için:
$ sudo apt-get -y install python-dev libkrb5-dev krb5-user
Ardından Python paketini pip aracılığıyla yükleyin:
$ sudo pip3 install requests-kerberosKerberos conf dosyasında alan adınız için bağlantı ayarlarını belirtin:
$ 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.a-d.loc
kdc = dc01.a-d.loc
}
[domain_realm]
a-d.loc = WOSHUB.LOC
.WOSHUB.LOC = WOSHUB.LOC
AD etki alanınızda kimlik doğrulaması yapıp yapamadığınızı kontrol edin ve bir Kerberos bileti alın:
kinit -C [email AD kullanıcı şifrenizi girin ve biletin alınıp alınmadığına bakın.
klistAnsible ile Windows Ana Bilgisayarlarını Yönetme
Ardından tüm Windows ana bilgisayarlarınızı Ansible envanter dosyasına ekleyin:
$ sudo mcedit /etc/ansible/hostsmun-rds1.a-d.loc
mun-dc02.a-d.loc
wks-test1.a-d.loc
[windows_all:vars]
ansible_port=5985
[email
ansible_connection=winrm
ansible_winrm_transport=kerberos
ansible_winrm_scheme=http
ansible_winrm_server_cert_validation=ignore
Tüm Windows ana bilgisayarlarınızın (listemde iki Windows Server 2019 ve bir Windows 11 makinesi bulunmaktadır) Ansible'dan erişilebilir olup olmadığını kontrol edin:
$ ansible windows_all -m win_pingToplantı sahipleri bir hata döndürebilir:
"msg": "kerberos: Bad HTTP response returned from server. Code 500",
"unreachable": true
Bunun nedeni, WinRM'nin bu örnekte bağlanmak için HTTPS yerine HTTP kullanmasıdır. Hatayı yok saymak için Windows ana bilgisayarlarında şifrelenmemiş trafiğe izin vermelisiniz
Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value trueArtık tüm Windows ana bilgisayarlarınızda isteğe bağlı bir komut çalıştırmak için Ansible'ı kullanabilirsiniz. Örneğin, tüm Windows makinelerimde DNS önbelleğini sıfırlamak istiyorum:
$ ansible windows_all -m win_shell -a "ipconfig /flushdns"Windows Yönetimi için Ansible Playbook Örnekleri
Windows ana bilgisayarlarınız artık Ansible playbook'larını çalıştırmaya hazır.
Örneğin, Ansible'ı kullanarak tüm ana bilgisayarlarda bir PowerShell betiği çalıştırmanız gerekir (bu örnekte, ana bilgisayarlardaki geçerli IP veya DNS ayarlarını almak için PowerShell'i kullanacağız). Bir başucu kitabı dosyası oluşturun:
$ 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:
Başucu kitabını çalıştırın:
$ ansible-playbook /etc/ansible/playbooks/win-exec-powershell.ymlBu örnekte, oynatma kitabı tüm Windows ana bilgisayarlarında başarıyla yürütüldü ve geçerli DNS ayarları döndürüldü.
Standart Windows ana bilgisayar yönetimi görevleri için bazı tipik Ansible oyun kitaplarına bir göz atalım.
Dosya kopyalama:
- name: Copy a single file
win_copy:
src: /home/sysops/files/test.ps1"
dest: C:\Temp\test.ps1
Dosya oluşturun:
- name: Create file
win_file:
path: C:\Temp\file.txt
state: touch
Dosyayı silme:
- name: Delete file
win_file:
path: C:\Temp\file.txt
state: absent
Bir kayıt defteri parametresi oluşturun:
- name: Create reg dword
win_regedit:
path: HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection
name: AllowTelemetry
data: 0
type: dword
MSI'dan bir program yükleyin:
- name: Install MSI package
win_package:
path: C:\Distr\adobereader.msi
arguments:
- /install
- /passive
- /norestart
Bir Windows hizmeti çalıştırın:
- name: Run Windows Service
win_service:
name: wuauserv
state: started
Bir Windows Sunucu rolü yükleyin:
- name: Install Windows Feature
win_feature:
name: SNMP-Service
state: present
Windows Defender Güvenlik Duvarı'nda bir bağlantı noktası açın:
- name: Open SSH Port
win_firewall_rule:
name: port 22
localport: 22
action: allow
direction: in
protocol: tcp
state: present
enabled: yes
Bir PowerShell betiği çalıştırın:
- name: Run PowerShell Script
win_command: powershell.exe -ExecutionPolicy ByPass -File C:/temp/powershellscript.ps1
Bu makale boyunca Windows ana bilgisayarlarınızın yapılandırmasını Ansible aracılığıyla nasıl yöneteceğinizi öğrendiniz. Windows ana bilgisayarlarınız bir Active Directory etki alanına katılmamışsa (bir çalışma grubunda yer alıyorlarsa), Windows ana bilgisayarlarının Ansible kullanılarak uzaktan yapılandırma yönetimi, etki alanı Grup İlkeleri kullanılarak yapılan yapılandırmaya iyi bir alternatif olabilir.
Ansible'ı Linux için Windows alt sistemine (WSL) de yükleyebilirsiniz. Bu, Ansible için ayrı bir Linux ana bilgisayarı dağıtmaya gerek kalmadan oyun kitaplarını çalıştırmanıza olanak tanır.







