Megmutatok néhány műveletet, amelyeket egy rendszergazda végrehajthat távoli Windows rendszeren az ansible-playbook segítségével.
Az Ansible az egyik leggyakrabban használt DevOps eszköz a piacon. Számos Windows-modult tartalmaz, amelyek a Windows-kiszolgáló konfigurálására és kezelésére szolgálnak. Feltételezem, hogy az Ansible már telepítve van a Windows rendszeren, ahonnan a Windows-kiszolgálókat szeretné kezelni.
Az alábbiakban felsorolunk néhány, a Windows rendszergazdák által napi rendszerességgel használt feladatot. Meg fog lepődni, amikor meglátja, milyen egyszerűen adminisztrálható a Windows az Ansible használatával.
Az Ansible Windows vezérlőgépem IP-címe 192.168.0.106, a távoli Windows rendszerem IP-címe pedig 192.168.0.102. Mielőtt elkezdené, futtasson egy win_ping modult, hogy ellenőrizze, hogy tud-e csatlakozni a Windows távoli kiszolgálóhoz.
[email protected] ~ $ ansible win -m win_ping 192.168.0.102 | SUCCESS => { "changed": false, "ping": "pong" }
Sikeresen kapcsoltam egy távoli gazdagéphez.
Tehát kezdjük az Ansible Playbooks-szal…
Tartalomjegyzék
Fájlok másolása
A win_copy egy lehetséges modul, amely egy fájlt másol a helyi kiszolgálóról egy távoli Windows gazdagépre. Ezt a modult egyetlen PDF másolására fogom használni.
Használja az alábbi YAML kódot, adja meg a forrás és a cél elérési utat.
[email protected] ~ $ vi copy.yml --- - hosts: win tasks: - name: Copy File win_copy: src: C:output.pdf dest: C:ansible_examples remote_src: yes
Futtassa az ansible-playbookot a win_copy számára.
[email protected] ~ $ ansible-playbook copy.yml PLAY [win] *********************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************** ok: [192.168.0.102] TASK [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 ignored=0
A fájl sikeresen másolásra került a célhelyre egy távoli Windows rendszeren.
MSI telepítése/eltávolítása
Egy alkalmazás MSI-fájl használatával történő telepítéséhez a win_get_url használatával meg kell említenie a letöltendő MSI-fájl elérési útját, majd a win_package modul segítségével telepítenie kell. A jelen állapot azt jelenti, hogy az MSI telepítve lesz a gépen, és az alkalmazás a jelenlegi állapotban van.
Itt telepítem az Apache-t.
Használandó YAML kód:
[email protected] ~ $ 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_exampleshttpd-2.2.25-win32-x86-no_ssl.msi - name: Install MSI win_package: path: C:ansible_exampleshttpd-2.2.25-win32-x86-no_ssl.msi state: present
Futtassa az ansible-playbookot az MSI használatával történő telepítéshez.
[email protected] ~ $ 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 [Install MSI] *************************************************************************************************************************** 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
Most lépjen a Windows rendszerbe, és ellenőrizze, hogy az apache alkalmazás telepítése sikeres volt-e.
C:Usersetoppc.com>cd C:Program Files (x86)Apache Software FoundationApache2.2bin C:Program Files (x86)Apache Software FoundationApache2.2bin>httpd -v Server version: Apache/2.2.25 (Win32) Server built: Jul 10 2013 01:52:12
Az MSI-t használó alkalmazásokat argumentumokkal is telepítheti. Az alábbiakban ugyanazt a példát láthatjuk, mint fent, de állapot helyett install argumentumot használunk az apache telepítéséhez.
Használandó YAML kód:
--- - 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_exampleshttpd-2.2.25-win32-x86-no_ssl.msi - name: Install MSI win_package: path: C:ansible_exampleshttpd-2.2.25-win32-x86-no_ssl.msi arguments: - /install - /passive - /norestart
Egy alkalmazás MSI-fájl használatával történő eltávolításához a win_package modult kell használnia. A hiányzó állapot azt jelenti, hogy az alkalmazást az MSI-fájl segítségével távolítják el.
Itt eltávolítom az Apache-t.
[email protected] ~ $ vi uninstall_msi.yml --- - name: UnInstalling Apache MSI hosts: win tasks: - name: UnInstall MSI win_package: path: C:ansible_exampleshttpd-2.2.25-win32-x86-no_ssl.msi state: absent
Futtassa az ansible-playbookot az MSI használatával történő eltávolításhoz.
[email protected] ~ $ 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
Most, ha megnézem az apache verziót, az alábbi kimenetet kapom, mivel az alkalmazás eltávolításra került.
C:Program Files (x86)Apache Software FoundationApache2.2bin>httpd -v 'httpd' is not recognized as an internal or external command, operable program or batch file.
Szoftver eltávolítása (.EXE)
A szoftvert .exe fájllal is eltávolíthatja a szoftver termékazonosítójával.
[email protected] ~ $ vi uninstall.yml --- - hosts: win tasks: - name: Uninstall 7-Zip from the exe win_package: path: C:Program Files7-ZipUninstall.exe product_id: 7-Zip arguments: /S state: absent
Futtassa az ansible-playbookot a 7-Zip eltávolításához.
[email protected] ~ $ ansible-playbook uninstall.yml PLAY [win] ************************************************************************************************************************************************************************************* 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
A Windows Services leállítása/indítása/újraindítása
A win_service ansible modul egy szolgáltatás indítására, leállítására vagy újraindítására szolgál. Itt megmutatom, hogyan lehet leállítani a tomcat szolgáltatást.
Meg kell említenie a szolgáltatás nevét a YAML-fájlban, és le kell állítania az állapotot.
[email protected] ~ $ vi service.yml --- - hosts: win tasks: - name: Stop service Tomcat win_service: name: Tomcat8 state: stopped
Futtassa az ansible-playbookot a tomca szolgáltatás leállításához.
[email protected] ~ $ ansible-playbook service.yml PLAY [win] *********************************************************************************************************************************** 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
Ha megnézi a tomcat szolgáltatást a Windows rendszeren, az most leállított állapotban van.
A szolgáltatás állapotának módosításához megadhatja az elindított, újraindított vagy szüneteltetett állapotot.
Tények gyűjtése
A win_disk_facts ansible modul használatával lekérheti a célállomás összes lemezinformációját.
[email protected] ~ $ vi disk.yml --- - hosts: win tasks: - name: Get disk facts win_disk_facts: - name: Output first disk size debug: var: ansible_facts.disks[0].size - name: Convert first system disk into various formats 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'
Futtassa az ansible-playbookot a lemezinformációk lekéréséhez.
[email protected] ~ $ ansible-playbook disk.yml PLAY [win] *********************************************************************************************************************************** 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[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
A win_command ansible modul használatával parancsokat hajthat végre a távoli gazdagépen, és megkaphatja a CPU-információkat, az eszközadatokat és még sok mást.
[email protected] ~ $ 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 }}"
Futtassa az ansible-playbookot a távoli rendszerinformációk lekéréséhez.
[email protected] ~ $ ansible-playbook check.yml PLAY [win] *********************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************** ok: [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 rrnIntel64 Family 6 Model 142 Stepping 9 CPU0 2712 Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz 2 OK rrnrrn" } PLAY RECAP *********************************************************************************************************************************** 192.168.0.102 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Parancsok futtatása
Bármilyen parancsot is futtat az ablakon, azok az ansible win_command modulon keresztül futtathatók. Csak meg kell adnia a parancsot a YAML fájlban. Itt csak egy könyvtárat készítek.
w[email protected] ~ $ 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
Futtassa az ansible-playbookot a win_command művelet végrehajtásához.
[email protected] ~ $ ansible-playbook commands.yml PLAY [win] *********************************************************************************************************************************** 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
Környezeti változók
Egy Windows rendszernek több környezeti változója van, például JAVA_HOME. A win_environment ansible modul segítségével környezeti változókat adhat hozzá vagy módosíthat Windows rendszeren. Ebben a példában egy új változót veszek fel a Windows környezeti változóinak listájához.
[email protected] ~ $ 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
Futtassa az ansible-playbook programot a környezeti változó hozzáadásához egy távoli Windows-gépen.
[email protected] ~ $ ansible-playbook env.yml PLAY [win] *********************************************************************************************************************************** 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
Lépjen a környezeti változók ablakba; látni fogja, hogy az imént hozzáadott új változó megjelenik itt.
Registry hozzáadása/szerkesztése
A win_regedit ansible modul a rendszerleíró adatbázis adatainak hozzáadására vagy szerkesztésére szolgál egy távoli Windows-gépen. Meg kell adnia a rendszerleíró adatbázis és a hozzáadandó/frissítendő tartalom elérési útját. Itt létrehozok egy új beállításjegyzék-bejegyzést etoppc.com a HKLM:SOFTWARE útvonalon belül, majd hozzáadok nevet és adatokat ehhez a beállításjegyzékhez.
[email protected] ~ $ vi registry.yml --- - hosts: win tasks: - name: Creating a registry win_regedit: path: HKLM:SOFTWAREetoppc.com - name: Modifying a registry, adding name and data win_regedit: path: HKLM:SOFTWAREetoppc.com name: Geek data: Flare
Futtassa az ansible-playbookot a beállításjegyzék hozzáadásához.
[email protected] ~ $ ansible-playbook registry.yml PLAY [win] *********************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************** ok: [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
Ha megnyitja a Rendszerleíróadatbázis-szerkesztőt a távoli rendszeren, láthatja, hogy ez a beállításjegyzék sikeresen hozzáadva a Név és az Adat paraméterekkel.
Napló törlése
A win_eventlog ansible modul a Windows eseménynaplók hozzáadására, törlésére vagy eltávolítására szolgál a Windows rendszerből.
Lépjen a Windows Powershellbe, és sorolja fel a távoli Windows-gépen található eseménynaplókat.
PS C:Usersetoppc.com> 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
Most megmutatom, hogyan távolíthat el naplókat az Internet Explorer összes forrásából.
[email protected] ~ $ vi log.yml --- - hosts: win tasks: - name: Remove Internet Explorer Logs win_eventlog: name: Internet Explorer state: absent
Futtassa az ansible-playbook programot az Internet Explorer eltávolításához a távoli Windows gépről.
[email protected] ~ $ ansible-playbook log.yml PLAY [win] ************************************************************************************************************************************************************************************* TASK [Gathering Facts] ************************************************************************************************************************************************************************* ok: [192.168.0.102] TASK [Remove Internet Explorer Logs] ********************************************************************************************************************************************** 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
Most, ha újra felsorolja az eseménynaplókat, látni fogja, hogy az Internet Explorer naplóit eltávolították.
PS C:Usersetoppc.com> 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 Key Management Service 128 0 OverwriteAsNeeded 190 OAlerts Security 20,480 0 OverwriteAsNeeded 44,835 System 15,360 0 OverwriteAsNeeded 56 Windows PowerShell
Tehát ennyi volt az Ansible playbookokról, amelyek távoli Windows adminisztrációra használhatók. Gyerünk, és próbáld ki ezeket a játékkönyveket. Mást is kipróbálhatsz Lehetséges Windows modulok elérhető.