Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter DevOps und Windows Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

Ich werde Ihnen einige Operationen zeigen, die ein Administrator auf einem entfernten Windowssystem mit Hilfe von Ansible-Playbook durchführen kann

Ansible ist heute eines der am häufigsten verwendeten DevOps-Tools auf dem Markt. Es stellt eine Vielzahl von Windows-Modulen zur Verfügung, die zur Konfiguration und Verwaltung des Windows Servers verwendet werden. Ich gehe davon aus, dass Sie Ansible bereits auf Windows installiert haben, von wo aus Sie die Windows Server verwalten möchten

Im Folgenden sind einige der häufig verwendeten Aufgaben aufgeführt, die von Windows-Administratoren täglich ausgeführt werden. Sie werden erstaunt sein, wie einfach es ist, Windows mit Hilfe von Ansible zu verwalten

Die IP-Adresse meines Ansible Windows-Controllers ist 192.168.0.106 und die IP-Adresse meines entfernten Windows-Systems ist 192.168.0.102. Bevor Sie beginnen, stellen Sie sicher, dass Sie ein win_ping Modul ausführen, um zu überprüfen, ob Sie eine Verbindung zu einem Remote-Windows-Server herstellen können oder nicht

Geekflare@MSEDGEWIN10 ~

$

ansible win -m win_ping
192.168.0.102 | SUCCESS => {
 "changed": false,
 "ping": "pong"

}
Meine Verbindung zu einem Remote-Host ist erfolgreich

Beginnen wir auch mit den Ansible Playbooks...

Kopieren von Dateien

win_copy ist ein ansibles Modul, das eine Datei vom lokalen Server auf einen entfernten Windows-Host kopiert. Ich werde dieses Modul verwenden, um eine einzelne PDF-Datei zu kopieren.

Verwenden Sie den unten stehenden YAML-Code, geben Sie den Quell- und Zielpfad an

Geekflare@MSEDGEWIN10 ~

$

vi copy.yml



--- hosts: win

 tasks:

 - name: Copy File

 win_copy:

 src: C:\output.pdf

 dest: C:\ansible_examples\
     
 remote_src: yes

Führen Sie das Ansible-Playbook für win_copy aus

Geekflare@MSEDGEWIN10 ~

$

ansible-playbook copy.yml

PLAY

 <x><x><x><x><x><x><x><x>[win]</x></x></x></x></x></x></x></x> ***********************************************************************************************************************************

TASK

[Gathering Facts] ***********************************************************************************************************************
ok: [192.168.0.102]

AUFGABE [

Copy File] *****************************************************************************************************************************
changed: [192.168.0.102]

PLAY

RECAP ***********************************************************************************************************************************
192.168.0.102
: ok=2 changed=1 unreachable=0 failed=0
skipped=0 rescued=0 i

Die Datei wurde erfolgreich an den Zielort auf einem entfernten Windowssystem kopiert.

ansible Windows-Kopie

MSI installieren/deinstallieren

Um eine Anwendung mit Hilfe der MSI-Datei zu installieren, müssen Sie mit win_get_url den Pfad der herunterzuladenden MSI-Datei angeben und dann das win_package Modul zur Installation verwenden. Der vorliegende Zustand bedeutet, dass das MSI auf dem Rechner installiert wird und die Anwendung sich im gegenwärtigen Zustand befindet.

In diesem Fall installiere ich Apache

YAML-Code muss verwendet werden

Geekflare@MSEDGEWIN10 ~
$ vi msi.yml
---
- name: Installing Apache MSI
 hosts: win
 
 tasks:
 - name: Download the Apache installer
 win_get_url:
 url: https://archive.apache.org/dist/httpd/binaries/win32/httpd-2.

2.

25-win32-x86-no_ssl.msi
 dest: C:ansible_examples\tpd-2.2.25-win32-x86-no_ssl.msi

 - name: Install MSI
 win_package:
 path: C:ansible_examples\tpd-2.2.25-win32-x86-no_ssl.msi
 state: present

Führen Sie das Ansible-Playbook zur Installation mit MSI aus

Geekflare@MSEDGEWIN10 ~
$ ansible-playbook msi.yml

PLAY [Installing Apache MSI] *****************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.0.102]

TASK [Download the Apache installer] *********************************************************************************************************
changed: [192.

168.

0.102]

TASK

[MSI installieren] ***************************************************************************************************************************
changed: [192.168.0.102]

PLAY

RECAP ***********************************************************************************************************************************
192.168.0.102
: ok=3 changed=2 unreachable=0 failed=0
skipped=0 rescued=0 ignored=0

Gehen Sie nun zum Windows-System und prüfen Sie, ob die Apache-Anwendung erfolgreich installiert wurde

C:\sers geekflare>cd C:\gram Files (x86)\Apache Software Foundation\Apache2.2.bbin

C

:\gram Files (x86)\Apache Software Foundation\Apache2.2.bbin>httpd -v
Server version: Apache/2.2.25 (Win32)
Server built: Jul 10 2013 01:52:12

Sie können auch Anwendungen über MSI mit Argumenten installieren. Das folgende Beispiel ist das gleiche wie oben, aber statt eines Zustands verwenden wir ein Installationsargument, um den Apache zu installieren

Zu verwendender YAML-Code

---

- name: Installing Apache MSI

 hosts: win

 tasks:

 - name: Download the Apache installer

 win_get_url:

 url: https://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.msi

 dest: C:\¢ansible_examples\tpd-2.

2.

25-win32-x86-no_ssl.msi


 - name: Install MSI

 win_package:

 path: C:\ansible_examples\httpd-2.2.25-win32-x86-no_ssl.msi

 arguments:

 - /install

 - /passive

 - /norestart

Um eine Anwendung mit Hilfe der MSI-Datei zu deinstallieren, müssen Sie das win_package-Modul verwenden. Der Zustand abwesend bedeutet, dass die Anwendung über die MSI-Datei deinstalliert wird.

Hier bin ich dabei, Apache zu deinstallieren

Geekflare@MSEDGEWIN10 ~

$

vi uninstall_msi.yml



- name: UnInstalling Apache MSI

 hosts: win

 tasks:

 - name: UnInstall MSI

 win_package:

 path: C:\ansible_examples\httpd-2.2.25-win32-x86-no_ssl.msi

 state: absent

Führen Sie das Ansible-Playbook zur Deinstallation mit MSI aus

Geekflare@MSEDGEWIN10 ~
$ ansible-playbook uninstall_msi.yml

PLAY [UnInstalling Apache MSI] *****************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.0.102]

TASK

[UnInstall MSI] *************************************************************************************************************************
changed: [192.168.0.102]

PLAY

RECAP ***********************************************************************************************************************************
192.168.0.102
: ok=2 changed=1 unreachable=0 failed=0
skipped=0 rescued=0 ignored=0

Wenn ich nun die Apache-Version überprüfe, erhalte ich die folgende Ausgabe, da die Anwendung nicht installiert wurde

C:\gram Files (x86)\Apache Software Foundation\Apache2.2\bin>httpd -v 'httpd' wird nicht als interner oder externer Befehl,
operables Programm oder Batchdatei erkannt

Software deinstallieren (.EXE)

Sie können auch Software mit einer .exe-Datei über die Produktidentifikation der Software deinstallieren

Geekflare@MSEDGEWIN10 ~

$

vi uninstall.yml



--- hosts: win

 tasks:

 - name: Uninstall 7-Zip from the exe

 win_package:

 path: C:\gram Files7-Zip\Uninstall.exe

 product_id: 7-Zip

 arguments: /S

 state: absent

Führen Sie das Ansible-Playbook aus, um 7-Zip zu deinstallieren

Geekflare@MSEDGEWIN10 ~
$ ansible-playbook uninstall.yml

PLAY <x><x><x><x><x><x><x><x>[win]</x></x></x></x></x></x></x></x> *************************************************************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************************************
ok: [192.168.0.102]

TASK

[Uninstall 7-Zip from the exe] ***********************************************************************************************************************************************************
changed: [192.168.0.102]

PLAY

RECAP *************************************************************************************************************************************************************************************
192.168.0.102: ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Windows-Dienste anhalten/starten/neustarten

das win_service ansible Modul wird verwendet, um einen Dienst zu starten, zu stoppen oder wieder zu starten. Hier werde ich Ihnen zeigen, wie Sie den Tomcat-Dienst stoppen können

ansible fenster tomcat

Sie müssen den Namen des Dienstes in der YAML-Datei angeben und den Status auf Stop setzen.

Geekflare@MSEDGEWIN10 ~

$

vi service.yml


- hosts: win

 tasks:

 - name: Stop service Tomcat

 win_service:

 name: Tomcat8

 state: stopped

Führen Sie das Ansible-Playbook aus, um den Tomcat-Dienst zu stoppen

Geekflare@MSEDGEWIN10 ~
$ ansible-playbook service.yml

PLAY <x><x><x><x><x><x><x><x>[win]</x></x></x></x></x></x></x></x> ***********************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.0.102]

TASK

[Stop service Tomcat] ****************************************************************************************************************
changed: [192.168.0.102]

PLAY

RECAP ***********************************************************************************************************************************
192.168

.0.102


:
ok=2 changed=1 unreachable=0 failed=0
skipped=0 rescued=0 ignored=0

Wenn Sie den Tomcat-Dienst auf dem Windows-System überprüfen, befindet er sich jetzt im gestoppten Status

ansible windows tomcat stoppen

Sie können den Status auf gestartet oder wieder gestartet oder pausiert setzen, um den Status des Dienstes zu ändern.

Sammeln von Fakten

Mit Hilfe des Moduls win_disk_facts ansible können Sie alle Festplatteninformationen des Zielhosts abrufen

Geekflare@MSEDGEWIN10 ~
$ vi disk.yml
---
- hosts: win
 tasks:
 - name: Get disk facts
 win_disk_facts:

 - name: Output first disk size
 debug:
 var: ansible_facts.disks<x>[0]</x>.size

 - name: Konvertiert erste Systemplatte in verschiedene Formate
 debug:
 msg: '{{ disksize_gib }} vs {{ disksize_gib_human }}'
 vars:
 # Get first system disk
 disk: '{{ ansible_facts.disks|selectattr("system_disk")|first }}'

 # Show disk size in Gibibytes
 disksize_gib_human: '{{ disk.size|filesizeformat(true) }}'
 disksize_gib: '{{ (disk.size/1024|pow(3))|round|int }} GiB'

Führen Sie das Ansible-Playbook aus, um die Platteninformationen zu erhalten

Geekflare@MSEDGEWIN10 ~
$ ansible-playbook disk.yml

PLAY [ <x><x><x><x><x><x><x><x>win]</x></x></x></x></x></x></x></x> ***********************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.0.102]

TASK [Get disk facts] ************************************************************************************************************************
ok: [192.168.0.102]

TASK [Output first disk size] ****************************************************************************************************************
ok: [192.168.0.102] => {

"ansible_facts.disks<x>[0]</x>.size": "1000204886016"
}

TASK [Convert first system disk into various formats] ****************************************************************************************
ok: [192.168.0.102] => { "ansible_facts.disks[0].size": "1000204886016" } TASK [Convert first system disk into various formats] **************************************************************************************** ok: [192.

168.

0.102] => {
"msg": "932 GiB vs 931.5 GiB"

}



PLAY
RECAP ***********************************************************************************************************************************
192.168.0.102
: ok=4 changed=0 unreachable=0 failed=0
skipped=0 rescued=0 ignored=0

Mit Hilfe des Moduls win_Befehl ansible können Sie Befehle auf dem entfernten Host ausführen und CPU-Informationen, Gerätedetails und vieles mehr erhalten

Geekflare@MSEDGEWIN10 ~

$

vi check.yml


- hosts: win
 tasks:
 - name: Get disk facts
 win_command: wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status
 register: usage

 - debug: msg="{{ usage.stdout }}


Führen Sie das Ansible-Playbook aus, um Remote-System-Informationen zu erhalten

Geekflare@MSEDGEWIN10 ~
$ ansible-playbook check.yml

PLAY [ <x><x><x><x><x><x><x><x>win]</x></x></x></x></x></x></x></x> ***********************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.0.102]

TASK [Get facts] ************************************************************************************************************************
changed: [192.168.0.102] TASK [Get facts] ************************************************************************************************************************ changed: [192.168.0.102]

TASK [Debug ] *********************************************************************************************************************************
ok: [192.168.0.102] => {
"msg": "Caption DeviceID MaxClockSpeed
Name
NumberOfCores Status \r\r\rIntel64 Family 6 Model 142 Stepping 9 CPU0 2712 Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz 2 OK \rr\rr\rr" \rr

}



PLAY
RECAP ***********************************************************************************************************************************
192.168.0.102
: ok=3 changed=1 unreachable=0 failed=0
skipped=0 rescued=0
ignored=0

Laufende Befehle

Alle Befehle, die Sie auf einem Fenster ausführen, können über das ansible win_Befehl Modul ausgeführt werden. Sie müssen nur den Befehl in Ihrer YAML-Datei angeben. Hier habe ich nur ein Verzeichnis erstellt

Geekflare@MSEDGEWIN10 ~

$

vi commands.yml



--- hosts: win

 tasks:

 - name: run an executable using win_command

 win_command: whoami.exe


 - name: run a cmd command

 win_command: cmd.exe /c mkdir C:\test

Starten Sie das Ansible-Playbook, um die win_command-Operation auszuführen

Geekflare@MSEDGEWIN10 ~
$ ansible-playbook commands.yml

PLAY <x><x><x><x><x><x><x><x>[win]</x></x></x></x></x></x></x></x> ***********************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.0.102]

TASK [run an executable using win_command] ***************************************************************************************************
changed: [192.

168.

0.102]

TASK

[run a cmd command] *********************************************************************************************************************
changed: [192.168.0.102]

PLAY

RECAP ***********************************************************************************************************************************
192.168.0.102
: ok=3 changed=2 unreachable=0 failed=0
skipped=0 rescued=0 ignored=0

Umgebungsvariablen

Ein Windows-System hat mehrere Umgebungsvariablen, z.B. JAVA_HOME. Mit Hilfe des Moduls win_umwelt ansible können Sie Umgebungsvariablen auf einem Windowssystem hinzufügen oder ändern. In diesem Beispiel füge ich eine neue Variable zur Liste der Windows-Umgebungsvariablen hinzu

Geekflare@MSEDGEWIN10 ~

$

vi env.yml


- hosts: win
 tasks:
 - name: Set an environment variable for all users
 win_environment:
 state: present
 name: NewVariable
 value: New Value
 level: machine

Führen Sie das Ansible-Playbook aus, um die Umgebungsvariable auf einem Remote-Windows-Rechner hinzuzufügen

Geekflare@MSEDGEWIN10 ~
$ ansible-playbook env.yml

PLAY <x><x><x><x><x><x><x><x>[win]</x></x></x></x></x></x></x></x> ***********************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************** ***********************************************************************************************************************
ok: [192.168.0.102]

TASK

[Set an environment variable for all users] *********************************************************************************************
 changed: [192.168.0.102]

PLAY

RECAP ***********************************************************************************************************************************
192.168.0.102
: ok=2 changed=1 unreachable=0 failed=0
skipped=0 rescued=0 ignored=0

Gehen Sie zum Fenster Umgebungsvariablen; Sie werden sehen, dass die neu hinzugefügte Variable hier vorhanden ist

ansible-Variablen für Fenster

Registry hinzufügen/bearbeiten

das Modul win_regedit ansible wird verwendet, um Registrierungsdaten auf einem entfernten Windows-Rechner hinzuzufügen oder zu bearbeiten. Sie müssen den Pfad der Registry und den Inhalt angeben, der hinzugefügt/aktualisiert werden soll. Hier erstelle ich einen neuen Registry-Eintrag GeekFlare im Pfad HKLM:\SOFTWARE und füge dann den Namen und die Daten zu dieser Registry hinzu

Geekflare@MSEDGEWIN10 ~
$ vi registry.yml



- hosts: win

 tasks:

 - name: Creating a registry

 win_regedit:

 path: HKLM:\SFTWARE\GeekFlare

 - name: Modifying a registry, adding name and data

 win_regedit:

 path: HKLM:\SFTWARE\GeekFlare

 name: Geek

 data: Flare

Führen Sie das Ansible-Playbook aus, um die Registry hinzuzufügen

Geekflare@MSEDGEWIN10 ~
$ ansible-playbook registry.yml

PLAY [ <x><x><x><x><x><x><x><x>win]</x></x></x></x></x></x></x></x> ***********************************************************************************************************************************

TASK [Gathering Facts] ***********************************************************************************************************************
ok: [192.168.0.102]

TASK [Creating a registry] *******************************************************************************************************************
changed: [192.168.0.102] TASK [Creating a registry] ******************************************************************************************************************* changed: [192.

168.

0.102]

TASK

[Modifying a registry, adding name and data] ********************************************************************************************
changed: [192.168.0.102]

PLAY

RECAP ***********************************************************************************************************************************
192.168.0.102
: ok=3 changed=2 unreachable=0 failed=0
skipped=0 rescued=0 ignored=0

Wenn Sie auf dem entfernten System den Registrierungs-Editor aufrufen, können Sie sehen, dass diese Registrierung erfolgreich mit Namen und Datenparametern ergänzt wurde

anpassbare Windows-Registrierung

Log löschen

das Modul win_eventlog ansible wird zum Hinzufügen, Löschen oder Entfernen von Windows-Ereignisprotokollen aus dem Windowssystem verwendet

Gehen Sie zu Windows Powershell und hören Sie die Ereignisprotokolle auf, die auf dem entfernten Windows-Rechner vorhanden sind

PS C:\/Users\/Users Geekflare>. Get-EventLog -List
 Max(K) Retain OverflowAction Entries Log
 ------ ------ -------------- ------- ---
 20,480 0 OverwriteAsNeeded 33,549 Application
 20,480 0 OverwriteAsNeeded 0 HardwareEvents
 512 7 OverwriteOlder 20 Internet Explorer
 20,480 0 OverwriteAsNeeded 0 Key Management Service
 128 0 OverwriteAsNeeded 190 OAlerts
 Security
 20,480 0 OverwriteAsNeeded 44,828 System
 15,360 0 OverwriteAsNeeded 3,662 Windows PowerShell

Nun werde ich Ihnen zeigen, wie Sie Logs aus allen Quellen für den Internet Explorer entfernen können

Geekflare@MSEDGEWIN10 ~

$

vi log.yml


- hosts: win
 tasks:
 - name: Remove Internet Explorer Logs
 win_eventlog:
 name: Internet Explorer
 state: absent

Führen Sie das Ansible-Playbook aus, um den Internet Explorer vom Remote-Windows-Rechner zu entfernen


Geekflare@MSEDGEWIN10 ~

$

ansible-playbook log.yml

PLAY

[ <x><x><x><x><x><x><x><x>win]</x></x></x></x></x></x></x></x> *************************************************************************************************************************************************************************************

TASK

[Gathering Facts] *************************************************************************************************************************************************************************
ok: [192.168.0.102]

TASK

[Remove Internet Explorer Logs] **********************************************************************************************************************************************
changed: [192.168.0.102]

PLAY

RECAP ***********************************************************************************************************************************************************

Wenn Sie nun die EventLogs erneut auflisten, werden Sie sehen, dass die Internet Explorer Logs entfernt wurden

PS C:\/Users\/Users Geekflare>. Get-EventLog -List

 Max(K) Retain OverflowAction Entries Log
 ------ ------ -------------- ------- ---
 20,480 0 OverwriteAsNeeded 33,549 Application
 20,480 0 OverwriteAsNeeded 0 HardwareEvents
 20,480 0 OverwriteAsNeeded 0 HardwareEvents 20,480 0 OverwriteAsNeeded 0 Key Management Service
 128 0 OverwriteAsNeeded 190 OAlerts
 Security
 20,480 0 OverwriteAsNeeded 44,835 System
 15,360 0 OverwriteAsNeeded 56 Windows PowerShell

So, das war alles über Ansible Playbooks, die für die Remote-Windows-Verwaltung verwendet werden können. Gehen Sie vor und probieren Sie diese Playbooks aus. Sie können auch andere verfügbare Ansible Windows-Modul ausprobieren.

  • Avi
    Autor
    Avi ist ein Technik-Enthusiast mit Fachkenntnissen in Trendtechnologien wie DevOps, Cloud Computing, Big Data und vielen mehr. Seine Leidenschaft ist es, Spitzentechnologien zu lernen und sein Wissen mit anderen zu teilen, indem er... mehr lesen
Dank an unsere Sponsoren
Weitere großartige Lektüre über DevOps
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder