9 Lehetséges Playbooks Példa a Windows-felügyelethez

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…

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.

  Linux-rendszerek exportálása és importálása Windows 10 rendszeren

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.

  Javítsa ki az Esrv.exe alkalmazáshibát a Windows 10 rendszerben

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.

  A Fallout 3 Mods telepítése Windows 10 rendszeren

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ő.