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

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

  3 начина за креирање више фасцикли одједном у Виндовс 10 и 11

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

---

- 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

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

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

  Како преносити игру уживо на Виндовс 10

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

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

[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

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