Jeg vil vise dig flere operationer, som en administrator kan udføre på et eksternt Windows-system ved hjælp af ansible-playbook.
Ansible er et af de mest brugte DevOps-værktøjer på markedet i dag. Det giver en masse windows-moduler, der bruges til at konfigurere og administrere Windows-serveren. Jeg antager, at du allerede har Ansible installeret på Windows, hvor du vil administrere Windows-serverne.
Følgende er nogle af de ofte anvendte opgaver, der udføres af Windows-administratorer dagligt. Du vil blive forbløffet over at se, hvor let det administreres Windows ved hjælp af Ansible.
Min svarbare Windows-controller-maskins IP-adresse er 192.168.0.106, og mit eksterne Windows-systems IP-adresse er 192.168.0.102. Inden du kommer i gang, skal du sørge for at køre et win_ping-modul for at kontrollere, om du er i stand til at oprette forbindelse til Windows-fjernserver eller ikke.
[Email protected] ~
$ ansvarsfuld win -m win_ping
192.168.0.102 | SUKSESS => {
"ændret": falsk,
"ping": "pong"
}
Min forbindelse til en ekstern vært er vellykket.
Så lad os komme i gang med Ansible Playbooks …
Contents
Kopiering af filer
win_copy er et ansvarsfuldt modul, der kopierer en fil fra den lokale server til en ekstern Windows-vært. Jeg vil bruge dette modul til at kopiere en enkelt PDF.
Brug nedenstående YAML-kode, angiv kilde- og destinationsstier.
[Email protected] ~
$ vi copy.yml
—
– værter: vind
opgaver:
– navn: Kopier fil
win_copy:
src: C: \ output.pdf
dest: C: \ ansible_examples \
remote_src: ja
Kør ansible-playbook til win_copy.
[Email protected] ~
$ ansible-playbook copy.yml
SPIL [win] *********************************************** ************************************************** ***********************************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Kopier fil] ********************************************* ************************************************** ******************************
ændret: [192.168.0.102]
SPIL RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 2 ændret = 1 ikke nås = 0 mislykkedes = 0
sprunget = 0 reddet = 0 ignoreret = 0
Filen er blevet kopieret med succes på destinationsstedet på et eksternt windows-system.
Installer / afinstaller MSI
Hvis du vil installere et program ved hjælp af MSI-filen, skal du bruge win_get_url til at nævne stien til MSI-filen til download og derefter bruge win_package-modulet til at installere den. Tilstedeværende tilstand betyder, at MSI vil blive installeret på maskinen, og applikationen er i den nuværende tilstand.
Her installerer jeg Apache.
YAML-kode, der skal bruges:
[Email protected] ~
$ vi msi.yml
—
– navn: Installation af Apache MSI
værter: vind
opgaver:
– navn: Download Apache-installationsprogrammet
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
– navn: Installer MSI
win_package:
sti: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
tilstand: nuværende
Kør ansible-playbook til installation ved hjælp af MSI.
[Email protected] ~
$ ansible-playbook msi.yml
SPIL [Installation af Apache MSI] ********************************************* ************************************************** *******************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Download Apache-installationsprogrammet] ******************************************** ************************************************** ************
ændret: [192.168.0.102]
OPGAVE [Installer MSI] ********************************************** ************************************************** ****************************
ændret: [192.168.0.102]
SPIL RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 3 ændret = 2 ikke nås = 0 mislykkedes = 0
sprunget = 0 reddet = 0 ignoreret = 0
Gå nu til windows-systemet og kontroller, om apache-applikationen blev installeret med succes.
C: \ Brugere \ geekflare>cd C: \ Programfiler (x86) \ Apache Software Foundation \ Apache2.2 \ bin
C: \ Programfiler (x86) \ Apache Software Foundation \ Apache2.2 \ bin>httpd -v
Serverversion: Apache / 2.2.25 (Win32)
Server bygget: 10. jul. 2013 01:52:12
Du kan også installere applikationer ved hjælp af MSI med argumenter. Nedenfor er det samme eksempel som ovenfor, men i stedet for en tilstand bruger vi et installationsargument til at installere apache.
YAML-kode, der skal bruges:
—
– navn: Installation af Apache MSI
værter: vind
opgaver:
– navn: Download Apache-installationsprogrammet
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
– navn: Installer MSI
win_package:
sti: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
argumenter:
– /installere
– /passiv
– / norestart
Hvis du vil afinstallere et program ved hjælp af MSI-filen, skal du bruge win_package-modulet. Tilstanden fraværende betyder, at applikationen vil blive afinstalleret ved hjælp af MSI-filen.
Her afinstallerer jeg Apache.
[Email protected] ~
$ vi afinstallere_msi.yml
—
– navn: Afinstallation af Apache MSI
værter: vind
opgaver:
– navn: Afinstaller MSI
win_package:
sti: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
tilstand: fraværende
Kør ansible-playbook for at afinstallere ved hjælp af MSI.
[Email protected] ~
$ ansible-playbook uninstall_msi.yml
SPIL [Afinstallation af Apache MSI] ********************************************* ************************************************** *******************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Afinstaller MSI] ********************************************** ************************************************** **************************
ændret: [192.168.0.102]
SPIL RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 2 ændret = 1 ikke nås = 0 mislykkedes = 0
sprunget = 0 reddet = 0 ignoreret = 0
Hvis jeg nu tjekker apache-versionen, får jeg nedenstående output, da applikationen blev afinstalleret.
C: \ Programfiler (x86) \ Apache Software Foundation \ Apache2.2 \ bin>httpd -v ‘httpd’ genkendes ikke som en intern eller ekstern kommando,
operativt program eller batchfil.
Afinstaller software (.EXE)
Du kan også afinstallere software med .exe-fil ved hjælp af produktets id for den software.
[Email protected] ~
$ vi uninstall.yml
—
– værter: vind
opgaver:
– navn: Afinstaller 7-Zip fra exe
win_package:
sti: C: \ Program Files \ 7-Zip \ Uninstall.exe
produkt_id: 7-Zip
argumenter: / S
tilstand: fraværende
Kør ansible-playbook for at afinstallere 7-Zip.
[Email protected] ~
$ ansible-playbook uninstall.yml
SPIL [win] *********************************************** ************************************************** ************************************************** ***********************************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Afinstaller 7-zip fra exen] ***************************************** ************************************************** ************************************************** ***************
ændret: [192.168.0.102]
SPIL RECAP ************************************************* ************************************************** ************************************************** *********************************
192.168.0.102: ok = 2 ændret = 1 utilgængelig = 0 mislykkedes = 0 springet = 0 reddet = 0 ignoreret = 0
Stop / Start / Genstart Windows Services
win_service ansible module bruges til at starte, stoppe eller genstarte en service. Her vil jeg vise dig, hvordan du stopper tomcat-tjenesten.
Du skal nævne servicenavnet i YAML-filen og indstille staten til at stoppe.
[Email protected] ~
$ vi service.yml
—
– værter: vind
opgaver:
– navn: Stop service Tomcat
win_service:
navn: Tomcat8
tilstand: stoppet
Kør ansible-playbook for at stoppe tomcat-tjenesten.
[Email protected] ~
$ ansible-playbook service.yml
SPIL [win] *********************************************** ************************************************** ***********************************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Stop service Tomcat] ********************************************* ************************************************** ******************
ændret: [192.168.0.102]
SPIL RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 2 ændret = 1 ikke nås = 0 mislykkedes = 0
sprunget = 0 reddet = 0 ignoreret = 0
Hvis du kontrollerer tomcat-tjenesten på windows-systemet, er den nu i stoppet status.
Du kan definere tilstand til start eller genstart eller pause for at ændre status for tjenesten.
At samle fakta
Ved hjælp af win_disk_facts ansvarsligt modul kan du hente al diskinformationen til målhosten.
[Email protected] ~
$ vi disk.yml
—
– værter: vind
opgaver:
– navn: Hent diskfakta
win_disk_facts:
– navn: Output den første diskstørrelse
fejlfinde:
var: ansible_facts.disk [0]. størrelse
– navn: Konverter den første systemdisk til forskellige formater
fejlfinde:
msg: ‘{{disksize_gib}} vs {{disksize_gib_human}}’
vars:
# Hent den første systemdisk
disk: ‘{{ansible_facts.disks | selectattr ("system_disk") | første}} ‘
# Vis diskstørrelse i Gibibytes
disksize_gib_human: ‘{{disk.size | filesizeformat (true)}}’
disksize_gib: ‘{{(disk.size / 1024 | pow (3)) | round | int}} GiB’
Kør ansible-playbook for at få information om disk.
[Email protected] ~
$ ansible-playbook disk.yml
SPIL [win] *********************************************** ************************************************** ***********************************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Hent diskfakta] ******************************************** ************************************************** **************************
ok: [192.168.0.102]
OPGAVE [Output første diskstørrelse] ******************************************** ************************************************** *******************
ok: [192.168.0.102] => {
"ansible_facts.disks [0] .size": "1000204886016"
}
OPGAVE [Konverter den første systemdisk til forskellige formater] ***************************************** ************************************************
ok: [192.168.0.102] => {
"msg": "932 GiB vs 931,5 GiB"
}
SPIL RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 4 ændret = 0 ikke nås = 0 mislykkedes = 0
sprunget = 0 reddet = 0 ignoreret = 0
Ved hjælp af win_command ansible module kan du udføre kommandoer på den eksterne vært og få CPU-oplysninger, enhedsdetaljer og meget mere.
[Email protected] ~
$ vi check.yml
—
– værter: vind
opgaver:
– navn: Hent diskfakta
win_command: wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status
register: brug
– debug: msg ="{{use.stdout}}"
Kør ansible-playbook for at få eksterne systemoplysninger.
[Email protected] ~
$ ansible-playbook check.yml
SPIL [win] *********************************************** ************************************************** ***********************************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Få fakta] ********************************************** ************************************************** *************************
ændret: [192.168.0.102]
OPGAVE [debug] *********************************************** ************************************************** *********************************
ok: [192.168.0.102] => {
"msg": "Billedtekst enhedID MaxClockSpeed
Navn
NumberOfCores Status \ r \ r \ nIntel64 Familie 6 Model 142 Trin 9 CPU0 2712 Intel (R) Core (TM) i5-7200U CPU @ 2.50GHz 2 OK \ r \ r \ n \ r \ r \ n"
}
SPIL RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 3 ændret = 1 ikke nås = 0 mislykkedes = 0
sprunget = 0 reddet = 0
ignoreret = 0
Kører kommandoer
Uanset hvilke kommandoer du kører i et vindue, kan de køres gennem det ansvarsfulde win_command-modul. Du skal bare specificere kommandoen i din YAML-fil. Her opretter jeg bare et bibliotek.
[Email protected] ~
$ vi kommandoer.yml
—
– værter: vind
opgaver:
– navn: kør en eksekverbar ved hjælp af win_command
win_command: whoami.exe
– navn: kør en cmd-kommando
win_command: cmd.exe / c mkdir C: \ test
Kør ansible-playbook for at udføre win_command-operation.
[Email protected] ~
$ ansible-playbook kommandoer.yml
SPIL [win] *********************************************** ************************************************** ***********************************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [kør en eksekverbar ved hjælp af win_command] ******************************************* ************************************************** *******
ændret: [192.168.0.102]
OPGAVE [kør en cmd-kommando] ******************************************** ************************************************** ************************
ændret: [192.168.0.102]
SPIL RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 3 ændret = 2 ikke nås = 0 mislykkedes = 0
sprunget = 0 reddet = 0 ignoreret = 0
miljøvariabler
Et windows-system har flere miljøvariabler, for eksempel JAVA_HOME. Ved hjælp af det ans_modul, der er ansvarsfuldt af winen, kan du tilføje eller ændre miljøvariabler på et windows-system. I dette eksempel tilføjer jeg en ny variabel til listen over windows-miljøvariabler.
[Email protected] ~
$ vi env.yml
—
– værter: vind
opgaver:
– navn: Indstil en miljøvariabel for alle brugere
win_environment:
tilstand: nuværende
navn: NewVariable
værdi: Ny værdi
niveau: maskine
Kør ansible-playbook for at tilføje miljøvariablen på en ekstern windows-maskine.
[Email protected] ~
$ ansible-playbook env.yml
SPIL [win] *********************************************** ************************************************** ***********************************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Indstil en miljøvariabel for alle brugere] **************************************** ************************************************** ***
ændret: [192.168.0.102]
SPIL RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 2 ændret = 1 ikke nås = 0 mislykkedes = 0
sprunget = 0 reddet = 0 ignoreret = 0
Gå til vinduet miljøvariabler; du vil se den nye variabel, du lige har tilføjet, er til stede her.
Tilføj / rediger register
win_regedit ansible module bruges til at tilføje eller redigere registeroplysninger på en ekstern windows-maskine. Du skal angive stien til registreringsdatabasen og indhold, der skal tilføjes / opdateres. Her opretter jeg en ny registreringsdatabase post GeekFlare inde i HKLM: \ SOFTWARE sti og derefter tilføje navn og data til dette register.
[Email protected] ~
$ vi registry.yml
—
– værter: vind
opgaver:
– navn: Oprettelse af et registreringsdatabase
win_regedit:
sti: HKLM: \ SOFTWARE \ GeekFlare
– navn: Ændring af et registreringsdatabase, tilføjelse af navn og data
win_regedit:
sti: HKLM: \ SOFTWARE \ GeekFlare
navn: Nørd
data: Flare
Kør ansible-playbook for at tilføje registreringsdatabasen.
[Email protected] ~
$ ansible-playbook registry.yml
SPIL [win] *********************************************** ************************************************** ***********************************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Oprettelse af et registreringsdatabase] ********************************************* ************************************************** *********************
ændret: [192.168.0.102]
OPGAVE [Ændring af et registreringsdatabase, tilføjelse af navn og data] **************************************** ************************************************** ***
ændret: [192.168.0.102]
SPIL RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 3 ændret = 2 ikke nås = 0 mislykkedes = 0
sprunget = 0 reddet = 0 ignoreret = 0
Hvis du går til Registreringseditor på fjernsystemet, kan du se, at dette registreringsdatabase er blevet tilføjet med navn og dataparametre.
Slet log
win_eventlog ansvarsligt modul bruges til at tilføje, rydde eller fjerne windows-hændelseslogfiler fra windows-systemet.
Gå til Windows Powershell, og angiv EventLogs, der findes på den eksterne windows-maskine.
PS C: \ Brugere \ Geekflare> Get-EventLog -List
Maks. (K) Behold log for overløb for handling
—— —— ————– ——- —
20.480 0 OverskrivAs nødvendigt 33.549 ansøgning
20.480 0 OverskrivAsNødvendigt 0 Hardwareudstyr
512 7 OverwriteOlder 20 Internet Explorer
20.480 0 OverskrivAsNødvendigt 0 Key Management Service
128 0 OverskrivAsNødvendige 190 OAlter
Sikkerhed
20.480 0 OverskrivAsNødvendigt 44.828 System
15.360 0 OverskrivAs nødvendigt 3.662 Windows PowerShell
Nu vil jeg vise, hvordan man fjerner logfiler fra alle kilder til Internet Explorer.
[Email protected] ~
$ vi log.yml
—
– værter: vind
opgaver:
– navn: Fjern Internet Explorer-logfiler
win_eventlog:
navn: Internet Explorer
tilstand: fraværende
Kør ansible-playbook for at fjerne Internet Explorer fra den eksterne windows-maskine.
[Email protected] ~
$ ansible-playbook log.yml
SPIL [win] *********************************************** ************************************************** ************************************************** ***********************************
OPGAVE [Indsamling af fakta] ********************************************** ************************************************** ************************************************** ************************
ok: [192.168.0.102]
OPGAVE [Fjern Internet Explorer-logfiler] ******************************************** ************************************************** *************************************************
ændret: [192.168.0.102]
SPIL RECAP ************************************************* ************************************************** ************************************************** *********************************
192.168.0.102: ok = 2 ændret = 1 utilgængelig = 0 mislykkedes = 0 springet = 0 reddet = 0 ignoreret = 0
Hvis du nu viser EventLogs igen, vil du se, at Internet Explorer-logfiler er blevet fjernet.
PS C: \ Brugere \ Geekflare> Get-EventLog -List
Maks. (K) Behold log for overløb for handling
—— —— ————– ——- —
20.480 0 OverskrivAs nødvendigt 33.549 ansøgning
20.480 0 OverskrivAsNødvendigt 0 Hardwareudstyr
20.480 0 OverskrivAsNødvendigt 0 Key Management Service
128 0 OverskrivAsNødvendige 190 OAlter
Sikkerhed
20.480 0 OverskrivAsNødvendigt 44.835 System
15.360 0 OverskrivAs nødvendigt 56 Windows PowerShell
Så det var alt om Ansible playbooks, som kan bruges til fjernadministration af vinduer. Gå videre og prøv disse playbooks. Du kan også prøve andre Besvarlige Windows-moduler ledig.
Tags:
Ansible