Ik zal je verschillende bewerkingen laten zien die een beheerder kan uitvoeren op een extern Windows-systeem met ansible-playbook.
Ansible is een van de meest gebruikte DevOps-tools die momenteel op de markt zijn. Het biedt een aantal Windows-modules die worden gebruikt om de Windows-server te configureren en te beheren. Ik neem aan dat je Ansible al op Windows hebt geïnstalleerd van waaruit je de Windows-servers wilt beheren.
Hieronder volgen enkele van de meest gebruikte taken die dagelijks door Windows-beheerders worden uitgevoerd. Je zult versteld staan hoe gemakkelijk het is om Windows te beheren met Ansible.
Het IP-adres van mijn Ansible Windows-controller is 192.168.0.106 en het IP-adres van mijn externe Windows-systeem is 192.168.0.102. Voordat u begint, moet u ervoor zorgen dat u een win_ping-module uitvoert om te controleren of u verbinding kunt maken met de externe Windows-server of niet.
[email beveiligd] ~
$ ansible win -m win_ping
192.168.0.102 | SUCCES => {
"veranderd": false,
"ping": "pong"
}
Mijn verbinding met een externe host is geslaagd.
Laten we dus aan de slag gaan met Ansible Playbooks …
Contents
Bestanden kopiëren
win_copy is een weerbare module die een bestand van de lokale server naar een externe Windows-host kopieert. Ik zal deze module gebruiken om een enkele PDF te kopiëren.
Gebruik de onderstaande YAML-code, geef de bron- en bestemmingspaden op.
[email beveiligd] ~
$ vi copy.yml
—
– hosts: winnen
taken:
– naam: Bestand kopiëren
win_copy:
src: C: \ output.pdf
dest: C: \ ansible_examples \
remote_src: ja
Voer het ansible-playbook uit voor win_copy.
[email beveiligd] ~
$ ansible-playbook copy.yml
SPEEL [win] *********************************************** *************************************************** ************************************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** ************************
ok: [192.168.0.102]
TAAK [Bestand kopiëren] ********************************************* *************************************************** *******************************
gewijzigd: [192.168.0.102]
AFSPELEN AFSPELEN ************************************************* *************************************************** **********************************
192.168.0.102
: ok = 2 gewijzigd = 1 onbereikbaar = 0 mislukt = 0
overgeslagen = 0 gered = 0 genegeerd = 0
Het bestand is met succes gekopieerd op de doellocatie op een extern Windows-systeem.
Installeer / UnInstall MSI
Om een applicatie te installeren met behulp van het MSI-bestand, moet u win_get_url gebruiken om het pad van het te downloaden MSI-bestand te vermelden en vervolgens de win_package-module te gebruiken om het te installeren. De huidige status betekent dat de MSI op de machine wordt geïnstalleerd en dat de applicatie zich in de huidige staat bevindt.
Hier installeer ik Apache.
YAML-code die moet worden gebruikt:
[email beveiligd] ~
$ vi msi.yml
—
– naam: Apache MSI installeren
hosts: winnen
taken:
– naam: Download het Apache-installatieprogramma
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 \ httpd-2.2.25-win32-x86-no_ssl.msi
– naam: Installeer MSI
win_package:
pad: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
staat: aanwezig
Voer het ansible-playbook uit om te installeren met MSI.
[email beveiligd] ~
$ ansible-playbook msi.yml
SPEEL [Apache MSI installeren] ******************************************** *************************************************** ********************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** ************************
ok: [192.168.0.102]
TAAK [Download het Apache-installatieprogramma] ******************************************* *************************************************** ************
gewijzigd: [192.168.0.102]
TAAK [MSI installeren] ********************************************* *************************************************** *****************************
gewijzigd: [192.168.0.102]
AFSPELEN AFSPELEN ************************************************* *************************************************** **********************************
192.168.0.102
: ok = 3 gewijzigd = 2 onbereikbaar = 0 mislukt = 0
overgeslagen = 0 gered = 0 genegeerd = 0
Ga nu naar het Windows-systeem en controleer of de apache-applicatie met succes is geïnstalleerd.
C: \ Users \ geekflare>cd C: \ Program Files (x86) \ Apache Software Foundation \ Apache2.2 \ bin
C: \ Program Files (x86) \ Apache Software Foundation \ Apache2.2 \ bin>httpd -v
Serverversie: Apache / 2.2.25 (Win32)
Server gebouwd: 10 juli 2013 01:52:12
U kunt ook applicaties installeren met behulp van MSI met argumenten. Hieronder is hetzelfde voorbeeld als hierboven, maar in plaats van een status gebruiken we een installatieargument om apache te installeren.
YAML-code die moet worden gebruikt:
—
– naam: Apache MSI installeren
hosts: winnen
taken:
– naam: Download het Apache-installatieprogramma
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 \ httpd-2.2.25-win32-x86-no_ssl.msi
– naam: Installeer MSI
win_package:
pad: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
argumenten:
– /installeren
– /passief
– / norestart
Om een applicatie te verwijderen met behulp van het MSI-bestand, moet u de win_package-module gebruiken. De status afwezig betekent dat de applicatie wordt verwijderd met behulp van het MSI-bestand.
Hier verwijder ik Apache.
[email beveiligd] ~
$ vi uninstall_msi.yml
—
– naam: UnInstalling Apache MSI
hosts: winnen
taken:
– naam: UnInstall MSI
win_package:
pad: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
staat: afwezig
Voer het ansible-playbook uit om te verwijderen met MSI.
[email beveiligd] ~
$ ansible-playbook uninstall_msi.yml
SPEEL [UnInstalling Apache MSI] ******************************************** *************************************************** ********************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** ************************
ok: [192.168.0.102]
TAAK [UnInstall MSI] ********************************************* *************************************************** ***************************
gewijzigd: [192.168.0.102]
AFSPELEN AFSPELEN ************************************************* *************************************************** **********************************
192.168.0.102
: ok = 2 gewijzigd = 1 onbereikbaar = 0 mislukt = 0
overgeslagen = 0 gered = 0 genegeerd = 0
Als ik nu de apache-versie controleer, krijg ik de onderstaande uitvoer als de applicatie is verwijderd.
C: \ Program Files (x86) \ Apache Software Foundation \ Apache2.2 \ bin>httpd -v ‘httpd’ wordt niet herkend als een interne of externe opdracht,
bruikbaar programma of batchbestand.
Software verwijderen (.EXE)
U kunt ook software met een .exe-bestand verwijderen met de product-ID van die software.
[email beveiligd] ~
$ vi uninstall.yml
—
– hosts: winnen
taken:
– name: Verwijder 7-Zip van de exe
win_package:
pad: C: \ Program Files \ 7-Zip \ Uninstall.exe
product_id: 7-Zip
argumenten: / S
staat: afwezig
Voer het ansible-playbook uit om 7-Zip te verwijderen.
[email beveiligd] ~
$ ansible-playbook uninstall.yml
SPEEL [win] *********************************************** *************************************************** *************************************************** ************************************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** *************************************************** ************************
ok: [192.168.0.102]
TAAK [Verwijder 7-Zip van de exe] **************************************** *************************************************** *************************************************** ***************
gewijzigd: [192.168.0.102]
AFSPELEN AFSPELEN ************************************************* *************************************************** *************************************************** **********************************
192.168.0.102: ok = 2 gewijzigd = 1 onbereikbaar = 0 mislukt = 0 overgeslagen = 0 gered = 0 genegeerd = 0
Stop / start / herstart Windows-services
win_service ansible module wordt gebruikt om een service te starten, stoppen of herstarten. Hier zal ik je laten zien hoe je de tomcat-service kunt stoppen.
U moet de servicenaam in het YAML-bestand vermelden en de status instellen om te stoppen.
[email beveiligd] ~
$ vi service.yml
—
– hosts: winnen
taken:
– naam: Stop service Tomcat
win_service:
naam: Tomcat 8
staat: gestopt
Voer het ansible-playbook uit om de tomcat-service te stoppen.
[email beveiligd] ~
$ ansible-playbook service.yml
SPEEL [win] *********************************************** *************************************************** ************************************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** ************************
ok: [192.168.0.102]
TAAK [Stop service Tomcat] ******************************************** *************************************************** *******************
gewijzigd: [192.168.0.102]
AFSPELEN AFSPELEN ************************************************* *************************************************** **********************************
192.168.0.102
: ok = 2 gewijzigd = 1 onbereikbaar = 0 mislukt = 0
overgeslagen = 0 gered = 0 genegeerd = 0
Als u de tomcat-service op het Windows-systeem controleert, bevindt deze zich nu in de stopstand.
U kunt de status definiëren om te starten of opnieuw op te starten of om te pauzeren om de status van de service te wijzigen.
Feiten verzamelen
Met behulp van de win_disk_facts ansible-module kunt u alle schijfinformatie van de doelhost ophalen.
[email beveiligd] ~
$ vi disk.yml
—
– hosts: winnen
taken:
– name: Haal schijfgegevens op
win_disk_facts:
– naam: Uitvoer eerste schijfgrootte
debuggen:
var: ansible_facts.disks [0] .size
– name: Converteer de eerste systeemschijf naar verschillende formaten
debuggen:
msg: ‘{{disksize_gib}} vs {{disksize_gib_human}}’
var:
# Haal de eerste systeemschijf op
schijf: ‘{{ansible_facts.disks | selectattr ("system_disk") | eerste}} ‘
# Toon schijfgrootte in Gibibytes
disksize_gib_human: ‘{{disk.size | filesizeformat (true)}}’
disksize_gib: ‘{{(disk.size / 1024 | pow (3)) | round | int}} GiB’
Voer het ansible-playbook uit om de schijfinformatie op te halen.
[email beveiligd] ~
$ ansible-playbook disk.yml
SPEEL [win] *********************************************** *************************************************** ************************************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** ************************
ok: [192.168.0.102]
TAAK [Schijfgegevens ophalen] ******************************************** *************************************************** ***************************
ok: [192.168.0.102]
TAAK [Uitvoer eerste schijfgrootte] ******************************************* *************************************************** ********************
ok: [192.168.0.102] => {
"ansible_facts.disks [0] .size": "1000204886016"
}
TAAK [Converteer de eerste systeemschijf in verschillende formaten] **************************************** *************************************************
ok: [192.168.0.102] => {
"msg": "932 GiB versus 931,5 GiB"
}
AFSPELEN AFSPELEN ************************************************* *************************************************** **********************************
192.168.0.102
: ok = 4 gewijzigd = 0 onbereikbaar = 0 mislukt = 0
overgeslagen = 0 gered = 0 genegeerd = 0
Met de win_command ansible-module kunt u opdrachten uitvoeren op de externe host en CPU-informatie, apparaatdetails en nog veel meer verkrijgen.
[email beveiligd] ~
$ vi check.yml
—
– hosts: winnen
taken:
– name: Haal schijfgegevens op
win_command: wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status
registreren: gebruik
– debuggen: msg ="{{usage.stdout}}"
Voer het ansible-playbook uit om systeeminformatie op afstand te krijgen.
[email beveiligd] ~
$ ansible-playbook check.yml
SPEEL [win] *********************************************** *************************************************** ************************************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** ************************
ok: [192.168.0.102]
TAAK [Krijg feiten] ********************************************* *************************************************** **************************
gewijzigd: [192.168.0.102]
TAAK [debug] ********************************************** *************************************************** **********************************
ok: [192.168.0.102] => {
"msg": "Bijschrift DeviceID MaxClockSpeed
Naam
NumberOfCores Status \ r \ rIntel64 Family 6 Model 142 Stepping 9 CPU0 2712 Intel (R) Core (TM) i5-7200U CPU @ 2,50 GHz 2 OK \ r \ r \ n \ r \ r \ n"
}
AFSPELEN AFSPELEN ************************************************* *************************************************** **********************************
192.168.0.102
: ok = 3 gewijzigd = 1 onbereikbaar = 0 mislukt = 0
overgeslagen = 0 gered = 0
genegeerd = 0
Opdrachten uitvoeren
Welke opdrachten u ook op een venster uitvoert, ze kunnen worden uitgevoerd via de ansible win_command-module. U hoeft alleen maar de opdracht in uw YAML-bestand op te geven. Hier ben ik gewoon een directory aan het maken.
[email beveiligd] ~
$ vi commands.yml
—
– hosts: winnen
taken:
– name: voer een uitvoerbaar bestand uit met win_command
win_command: whoami.exe
– naam: voer een cmd-opdracht uit
win_command: cmd.exe / c mkdir C: \ test
Voer het ansible-playbook uit om win_command-bewerking uit te voeren.
[email beveiligd] ~
$ ansible-playbook-opdrachten.yml
SPEEL [win] *********************************************** *************************************************** ************************************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** ************************
ok: [192.168.0.102]
TAAK [voer een uitvoerbaar bestand uit met win_command] ****************************************** *************************************************** *******
gewijzigd: [192.168.0.102]
TAAK [voer een cmd-opdracht uit] ******************************************* *************************************************** ************************
gewijzigd: [192.168.0.102]
AFSPELEN AFSPELEN ************************************************* *************************************************** **********************************
192.168.0.102
: ok = 3 gewijzigd = 2 onbereikbaar = 0 mislukt = 0
overgeslagen = 0 gered = 0 genegeerd = 0
Omgevingsvariabelen
Een Windows-systeem heeft meerdere omgevingsvariabelen, bijvoorbeeld JAVA_HOME. Met de win_environment ansible-module kunt u omgevingsvariabelen op een Windows-systeem toevoegen of wijzigen. In dit voorbeeld voeg ik een nieuwe variabele toe aan de lijst met omgevingsvariabelen van Windows.
[email beveiligd] ~
$ vi env.yml
—
– hosts: winnen
taken:
– name: Stel een omgevingsvariabele in voor alle gebruikers
win_environment:
staat: aanwezig
naam: NewVariable
waarde: Nieuwe waarde
niveau: machine
Voer het ansible-playbook uit om de omgevingsvariabele toe te voegen op een externe Windows-machine.
[email beveiligd] ~
$ ansible-playbook env.yml
SPEEL [win] *********************************************** *************************************************** ************************************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** ************************
ok: [192.168.0.102]
TAAK [Stel een omgevingsvariabele in voor alle gebruikers] **************************************** *************************************************** ***
gewijzigd: [192.168.0.102]
AFSPELEN AFSPELEN ************************************************* *************************************************** **********************************
192.168.0.102
: ok = 2 gewijzigd = 1 onbereikbaar = 0 mislukt = 0
overgeslagen = 0 gered = 0 genegeerd = 0
Ga naar het venster omgevingsvariabelen; u zult zien dat de nieuwe variabele die u zojuist heeft toegevoegd hier aanwezig is.
Register toevoegen / bewerken
win_regedit ansible module wordt gebruikt om registerdetails toe te voegen of te bewerken op een externe Windows-machine. U moet het pad opgeven van het register en de inhoud die moet worden toegevoegd / bijgewerkt. Hier maak ik een nieuwe registervermelding GeekFlare binnen HKLM: \ SOFTWARE-pad en voeg vervolgens naam en gegevens toe aan dit register.
[email beveiligd] ~
$ vi registry.yml
—
– hosts: winnen
taken:
– naam: een register maken
win_regedit:
pad: HKLM: \ SOFTWARE \ GeekFlare
– naam: een register wijzigen, naam en gegevens toevoegen
win_regedit:
pad: HKLM: \ SOFTWARE \ GeekFlare
naam: Geek
gegevens: Flare
Voer het ansible-playbook uit om het register toe te voegen.
[email beveiligd] ~
$ ansible-playbook registry.yml
SPEEL [win] *********************************************** *************************************************** ************************************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** ************************
ok: [192.168.0.102]
TAAK [Een register maken] ******************************************** *************************************************** *********************
gewijzigd: [192.168.0.102]
TAAK [Een register wijzigen, naam en gegevens toevoegen] *************************************** *************************************************** ***
gewijzigd: [192.168.0.102]
AFSPELEN AFSPELEN ************************************************* *************************************************** **********************************
192.168.0.102
: ok = 3 gewijzigd = 2 onbereikbaar = 0 mislukt = 0
overgeslagen = 0 gered = 0 genegeerd = 0
Als u naar de Register-editor op het externe systeem gaat, kunt u zien dat dit register met succes is toegevoegd met de parameters Naam en Gegevens.
Log verwijderen
win_eventlog ansible module wordt gebruikt om windows event logs toe te voegen, te wissen of te verwijderen van het windows systeem.
Ga naar Windows Powershell en maak een lijst van de EventLogs die aanwezig zijn op de externe Windows-machine.
PS C: \ Users \ Geekflare> Get-EventLog -List
Max (K) OverflowAction Entries Log behouden
—— —— ————– ——- —
20.480 0 OverschrijvenAsNeeded 33.549 Toepassing
20,480 0 OverwriteAsNeeded 0 Hardware-evenementen
512 7 OverwriteOlder 20 Internet Explorer
20.480 0 OverwriteAsNeeded 0 Key Management Service
128 0 OverwriteAsNeeded 190 OAlerts
Veiligheid
20.480 0 OverwriteAsNeeded 44.828 Systeem
15.360 0 OverwriteAsNeeded 3.662 Windows PowerShell
Nu zal ik laten zien hoe logs uit alle bronnen voor Internet Explorer te verwijderen.
[email beveiligd] ~
$ vi log.yml
—
– hosts: winnen
taken:
– naam: Internet Explorer-logboeken verwijderen
win_eventlog:
naam: Internet Explorer
staat: afwezig
Voer het ansible-playbook uit om Internet Explorer van de externe Windows-machine te verwijderen.
[email beveiligd] ~
$ ansible-playbook log.yml
SPEEL [win] *********************************************** *************************************************** *************************************************** ************************************
TAAK [Verzamelen van feiten] ********************************************* *************************************************** *************************************************** ************************
ok: [192.168.0.102]
TAAK [Logboeken van Internet Explorer verwijderen] ******************************************* *************************************************** **************************************************
gewijzigd: [192.168.0.102]
AFSPELEN AFSPELEN ************************************************* *************************************************** *************************************************** **********************************
192.168.0.102: ok = 2 gewijzigd = 1 onbereikbaar = 0 mislukt = 0 overgeslagen = 0 gered = 0 genegeerd = 0
Als u nu de EventLogs opnieuw vermeldt, ziet u dat de logboeken van Internet Explorer zijn verwijderd.
PS C: \ Users \ Geekflare> Get-EventLog -List
Max (K) OverflowAction Entries Log behouden
—— —— ————– ——- —
20.480 0 OverschrijvenAsNeeded 33.549 Toepassing
20,480 0 OverwriteAsNeeded 0 Hardware-evenementen
20.480 0 OverwriteAsNeeded 0 Key Management Service
128 0 OverwriteAsNeeded 190 OAlerts
Veiligheid
20.480 0 OverwriteAsNeeded 44.835 Systeem
15.360 0 OverwriteAsNeeded 56 Windows PowerShell
Dus dat was alles over Ansible-playbooks, die kunnen worden gebruikt voor extern Windows-beheer. Ga je gang en probeer deze playbooks uit. Je kunt ook andere proberen Ansible Windows-modules beschikbaar.
TAGS:
Ansible