Показаћу вам неколико операција које администратор може да изведе на удаљеном Виндовс систему користећи ансибле-плаибоок.
Ансибле је један од најчешће коришћених ДевОпс алата на тржишту данас. Пружа гомилу Виндовс модула који се користе за конфигурисање и управљање Виндовс сервером. Претпостављам да већ имате инсталиран Ансибле на Виндовс-у одакле желите да управљате Виндовс серверима.
Следе неки од уобичајених задатака које обављају Виндовс администратори на дневној бази. Бићете запањени када видите како се лако управља Виндовс-ом помоћу Ансибле-а.
ИП адреса моје Ансибле Виндовс контролер је 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
Такође можете инсталирати апликације користећи МСИ са аргументима. Испод је исти пример као горе, али уместо стања, користимо аргумент за инсталирање да инсталирамо апацхе.
ИАМЛ код који ће се користити:
--- - 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
Идите на прозор променљивих окружења; видећете да је нова променљива коју сте управо додали присутна овде.
Додај/Измени регистар
вин_регедит ансибле модул се користи за додавање или уређивање детаља регистра на удаљеној Виндовс машини. Морате да наведете путању регистра и садржај који се додаје/ажурира. Овде правим нови унос у регистратору вдзвдз унутар путање ХКЛМ:СОФТВАРЕ, а затим додајем име и податке у овај регистар.
[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
Дакле, то је било све о Ансибле плаибооковима, који се могу користити за удаљену администрацију Виндовс-а. Само напред и испробајте ове књиге. Можете пробати и друге Ансибле Виндовс модули доступан.