9 Ансибле Плаибоокс Пример за Виндовс администрацију

Показаћу вам неколико операција које администратор може да изведе на удаљеном Виндовс систему користећи ансибле-плаибоок.

Ансибле је један од најчешће коришћених ДевОпс алата на тржишту данас. Пружа гомилу Виндовс модула који се користе за конфигурисање и управљање Виндовс сервером. Претпостављам да већ имате инсталиран Ансибле на Виндовс-у одакле желите да управљате Виндовс серверима.

Следе неки од уобичајених задатака које обављају Виндовс администратори на дневној бази. Бићете запањени када видите како се лако управља Виндовс-ом помоћу Ансибле-а.

ИП адреса моје Ансибле Виндовс контролер је 192.168.0.106, а ИП адреса мог удаљеног Виндовс система је 192.168.0.102. Пре него што почнете, уверите се да сте покренули вин_пинг модул да бисте проверили да ли сте у могућности да се повежете са удаљеним сервером оперативног система Виндовс или не.

[email protected] ~
$ ansible win -m win_ping
192.168.0.102 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Моја веза са удаљеним хостом је успешна.

Дакле, почнимо са Ансибле Плаибоокс…

Копирање датотека

вин_цопи је ансибле модул који копира датотеку са локалног сервера на удаљени Виндовс хост. Користићу овај модул за копирање једног ПДФ-а.

Користите ИАМЛ код испод, дајте изворну и одредишну путању.

[email protected] ~
$ vi copy.yml
---

- hosts: win

  tasks:

  - name: Copy File

    win_copy:

      src: C:output.pdf

      dest: C:ansible_examples
     
      remote_src: yes

Покрените ансибле-плаибоок за вин_цопи.

[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

Датотека је успешно копирана на одредишну локацију на удаљеном Виндовс систему.

Инсталирајте/деинсталирајте МСИ

Да бисте инсталирали апликацију користећи МСИ датотеку, потребно је да користите вин_гет_урл да наведете путању МСИ датотеке за преузимање, а затим користите модул вин_пацкаге да бисте је инсталирали. Присутно стање значи да ће МСИ бити инсталиран на машини, а апликација је у садашњем стању.

Ево, инсталирам Апацхе.

ИАМЛ код који ће се користити:

[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

Покрените ансибле-плаибоок да бисте инсталирали користећи МСИ.

[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

Сада идите на Виндовс систем и проверите да ли је апацхе апликација успешно инсталирана.

C:Userstechblog.co.rs>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

Такође можете инсталирати апликације користећи МСИ са аргументима. Испод је исти пример као горе, али уместо стања, користимо аргумент за инсталирање да инсталирамо апацхе.

  Поправите Цреативе Соунд Бластер који није откривен у оперативном систему Виндовс 10

ИАМЛ код који ће се користити:

---

- 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

Да бисте деинсталирали апликацију помоћу МСИ датотеке, потребно је да користите модул вин_пацкаге. Стање одсутно значи да ће апликација бити деинсталирана помоћу МСИ датотеке.

Ево, деинсталирам Апацхе.

[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

Покрените ансибле-плаибоок да бисте деинсталирали користећи МСИ.

[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

Сада, ако проверим апацхе верзију, добићу доњи излаз пошто је апликација деинсталирана.

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.

Деинсталирај софтвер (.ЕКСЕ)

Такође можете да деинсталирате софтвер са .еке датотеком користећи ИД производа тог софтвера.

[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

Покрените ансибле-плаибоок да деинсталирате 7-Зип.

[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

Зауставите/Покрените/Поново покрените Виндовс услуге

вин_сервице ансибле модул се користи за покретање, заустављање или поновно покретање услуге. Овде ћу вам показати како да зауставите услугу томцат.

Морате да поменете име услуге у ИАМЛ датотеци и подесите стање да се заустави.

[email protected] ~
$ vi service.yml
---
- hosts: win 

  tasks: 

   - name: Stop service Tomcat

     win_service:

       name: Tomcat8

       state: stopped

Покрените ансибле-плаибоок да зауставите услугу томцат.

[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

Ако проверите услугу томцат на Виндовс систему, она је сада у заустављеном статусу.

Можете дефинисати стање као покренуто, поново покренуто или паузирано да бисте променили статус услуге.

  Како користити Цапс Лоцк као модификаторски тастер на Виндовс-у

Сакупљање чињеница

Користећи вин_диск_фацтс ансибле модул, можете преузети све информације о диску циљног хоста.

[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'

Покрените ансибле-плаибоок да бисте добили информације о диску.

[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

Користећи вин_цомманд ансибле модул, можете извршити команде на удаљеном хосту и добити информације о процесору, детаље о уређају и још много тога.

[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 }}"

Покрените ансибле-плаибоок да бисте добили информације о удаљеном систему.

[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

Руннинг Цоммандс

Које год команде да покренете на прозору, оне се могу покренути кроз ансибле вин_цомманд модул. Само треба да наведете команду у вашој ИАМЛ датотеци. Ево, само правим директоријум.

[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

Покрените ансибле-плаибоок да бисте извршили операцију вин_цомманд.

[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

Променљиве окружења

Виндовс систем има више променљивих окружења, на пример, ЈАВА_ХОМЕ. Користећи ансибле модул вин_енвиронмент, можете додати или модификовати променљиве окружења на Виндовс систему. У овом примеру, додајем нову променљиву на листу променљивих Виндовс окружења.

[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

Покрените ансибле-плаибоок да додате променљиву окружења на удаљеној Виндовс машини.

[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

Идите на прозор променљивих окружења; видећете да је нова променљива коју сте управо додали присутна овде.

  Како да видите које апликације користе ваш микрофон у оперативном систему Виндовс 10

Додај/Измени регистар

вин_регедит ансибле модул се користи за додавање или уређивање детаља регистра на удаљеној Виндовс машини. Морате да наведете путању регистра и садржај који се додаје/ажурира. Овде правим нови унос у регистратору вдзвдз унутар путање ХКЛМ:СОФТВАРЕ, а затим додајем име и податке у овај регистар.

[email protected] ~
$ vi registry.yml
---

- hosts: win 

  tasks:

   - name: Creating a registry

     win_regedit:

      path: HKLM:SOFTWAREtechblog.co.rs

   - name: Modifying a registry, adding name and data

     win_regedit:

      path: HKLM:SOFTWAREtechblog.co.rs

      name: Geek

      data: Flare

Покрените ансибле-плаибоок да бисте додали регистар.

[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

Ако одете у уређивач регистра на удаљеном систему, можете видети да је овај регистар успешно додат са параметрима имена и података.

Делете Лог

вин_евентлог ансибле модул се користи за додавање, брисање или уклањање дневника Виндовс догађаја из Виндовс система.

Идите на Виндовс Поверсхелл и наведите ЕвентЛогс присутне на удаљеној Виндовс машини.

PS C:Userstechblog.co.rs> 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

Сада ћу показати како да уклоните евиденцију из свих извора за Интернет Екплорер.

[email protected] ~
$ vi log.yml
---
- hosts: win 
  tasks:
   - name: Remove Internet Explorer Logs
     win_eventlog:
      name: Internet Explorer
      state: absent

Покрените ансибле-плаибоок да бисте уклонили Интернет Екплорер са удаљене Виндовс машине.

[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

Сада, ако поново наведете ЕвентЛогс, видећете да су евиденције Интернет Екплорер-а уклоњене.

PS C:Userstechblog.co.rs> 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

Дакле, то је било све о Ансибле плаибооковима, који се могу користити за удаљену администрацију Виндовс-а. Само напред и испробајте ове књиге. Можете пробати и друге Ансибле Виндовс модули доступан.