Ще ви покажа няколко операции, които администратор може да извърши на отдалечена Windows система, използвайки ansible-playbook.


Ansible е един от най-използваните инструменти на DevOps на пазара днес. Той осигурява куп модули на Windows, които се използват за конфигуриране и управление на Windows сървъра. Предполагам, че вече имате инсталиран Ansible в Windows, от където искате да управлявате сървърите на Windows.

По-долу са някои от често използваните задачи, изпълнявани от администраторите на Windows ежедневно. Ще бъдете изумени, като видите колко лесно се администрира Windows с помощта на Ansible.

IP адресът на моя телефонен контролер на Windows е 192.168.0.106, а IP адресът на моята отдалечена Windows е 192.168.0.102. Преди да започнете, уверете се, че стартирате win_ping модул, за да проверите дали сте в състояние да се свържете с отдалечен сървър на Windows или не.

[Имейл защитен] ~
$ ansible win -m win_ping
192.168.0.102 | УСПЕХ => {
"променен": невярно,
"пинг": "понг"
}

Връзката ми с отдалечен хост е успешна.

Така че, нека започнем с Ansible Playbooks …

Копиране на файлове

win_copy е ansible модул, който копира файл от локалния сървър на отдалечен хост на Windows. Ще използвам този модул, за да копирам един PDF файл.

Използвайте по-долу YAML код, дайте маршрута на източника и дестинацията.

[Имейл защитен] ~
$ vi copy.yml

– домакини: спечелете

задачи:

– име: Копиране на файл

win_copy:

src: C: \ output.pdf

dest: C: \ ansible_examples \

remote_src: да

Пуснете ansible-playbook за win_copy.

[Имейл защитен] ~
$ ansible-playbook copy.yml

ИГРАЙТЕ [спечелете] ************************************************** ************************************************** ***********************************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [Копирай файл] *********************************************** ************************************************** ******************************
променен: [192.168.0.102]

PLAY RECAP ************************************************** ************************************************** *********************************
192.168.0.102
: ok = 2 променено = 1 недостъпно = 0 неуспешно = 0
preskočen = 0 спасен = 0 игнориран = 0

Файлът е копиран успешно на местоназначението в отдалечена система Windows.

ansible Windows копие

Инсталиране / Деинсталиране на MSI

За да инсталирате приложение с помощта на MSI файла, трябва да използвате win_get_url, за да споменете пътя на MSI файла за изтегляне и след това да използвате модула win_package, за да го инсталирате. Настоящото състояние означава, че MSI ще бъде инсталиран на машината, а приложението е в сегашно състояние.

Ето, инсталирам Apache.

YAML код за използване:

[Имейл защитен] ~
$ vi msi.yml

– име: Инсталиране на Apache MSI
домакини: спечелете

задачи:
– име: Изтеглете инсталатора на Apache
win_get_url:
url: https://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.msi
dest: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi

– име: Инсталирайте MSI
win_package:
път: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi
състояние: настоящ

Пуснете ansible-playbook за инсталиране с помощта на MSI.

[Имейл защитен] ~
$ ansible-playbook msi.yml

PLAY [Инсталиране на Apache MSI] ********************************************** ************************************************** *******************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [Изтеглете инсталатора на Apache] ********************************************* ************************************************** ************
променен: [192.168.0.102]

ЗАДАЧА [Инсталиране на MSI] *********************************************** ************************************************** ****************************
променен: [192.168.0.102]

PLAY RECAP ************************************************** ************************************************** *********************************
192.168.0.102
: ok = 3 променено = 2 недостъпни = 0 провалени = 0
preskočen = 0 спасен = 0 игнориран = 0

Сега отидете на системата Windows и проверете дали приложението apache е инсталирано успешно.

C: \ Users \ geekflare>cd C: \ Program Files (x86) \ Apache Software Foundation \ Apache2.2 \ bin
C: \ Program Files (x86) \ Apache Software Foundation \ Apache2.2 \ bin>httpd -v
Версия на сървъра: Apache / 2.2.25 (Win32)
Създаден сървър: 10 юли 2013 01:52:12

Можете също да инсталирате приложения, използвайки MSI с аргументи. По-долу е същият пример като по-горе, но вместо състояние, използваме аргумент за инсталиране на апаш.

YAML код за използване:

– име: Инсталиране на Apache MSI

домакини: спечелете

задачи:

– име: Изтеглете инсталатора на Apache

win_get_url:

url: https://archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.msi

dest: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi

– име: Инсталирайте MSI

win_package:

път: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi

аргументи:

– /Инсталирай

– /пасивен

– / norestart

За да деинсталирате приложение с помощта на MSI файла, трябва да използвате модула win_package. Състоянието отсъства означава, че приложението ще бъде деинсталирано с помощта на MSI файла.

Ето, деинсталирам Apache.

[Имейл защитен] ~
$ vi uninstall_msi.yml

– име: Деинсталиране на Apache MSI

домакини: спечелете

задачи:

– име: UnInstall MSI

win_package:

път: C: \ ansible_examples \ httpd-2.2.25-win32-x86-no_ssl.msi

състояние: отсъства

Пуснете ansible-playbook за деинсталиране с помощта на MSI.

[Имейл защитен] ~
$ ansible-playbook uninstall_msi.yml

PLAY [Деинсталиране на Apache MSI] ********************************************** ************************************************** *******************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [UnInstall MSI] *********************************************** ************************************************** **************************
променен: [192.168.0.102]

PLAY RECAP ************************************************** ************************************************** *********************************
192.168.0.102
: ok = 2 променено = 1 недостъпно = 0 неуспешно = 0
preskočen = 0 спасен = 0 игнориран = 0

Сега, ако проверя версията на апаш, ще получа по-долу изхода, тъй като приложението се деинсталира.

C: \ Program Files (x86) \ Apache Software Foundation \ Apache2.2 \ bin>httpd -v ‘httpd’ не се разпознава като вътрешна или външна команда,
оперативна програма или партиден файл.

Деинсталиране на софтуер (.EXE)

Можете също да деинсталирате софтуер с .exe файл, използвайки идентификатора на продукта на този софтуер.

[Имейл защитен] ~
$ vi uninstall.yml

– домакини: спечелете

задачи:

– име: Деинсталирайте 7-Zip от exe

win_package:

път: C: \ програмни файлове \ 7-Zip \ Uninstall.exe

product_id: 7-Zip

аргументи: / S

състояние: отсъства

Пуснете ansible-playbook, за да деинсталирате 7-Zip.

[Имейл защитен] ~
$ ansible-playbook uninstall.yml

ИГРАЙТЕ [спечелете] ************************************************** ************************************************** ************************************************** ***********************************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [Деинсталиране на 7-Zip от exe] ****************************************** ************************************************** ************************************************** ***************
променен: [192.168.0.102]

PLAY RECAP ************************************************** ************************************************** ************************************************** *********************************
192.168.0.102: ok = 2 променено = 1 недостъпно = 0 провалено = 0 пропуснато = 0 спасено = 0 игнорирано = 0

Спиране / Старт / Рестартиране на Windows Services

win_service ansible модул се използва за стартиране, спиране или рестартиране на услуга. Ето, ще ви покажа как да спрете услугата tomcat.

ansible windows tomcat

Трябва да споменете името на услугата във файла YAML и да настроите състоянието да спре.

[Имейл защитен] ~
$ vi service.yml

– домакини: спечелете

задачи:

– име: Спрете услугата Tomcat

win_service:

име: Tomcat8

състояние: спря

Пуснете ansible-playbook, за да спрете услугата tomcat.

[Имейл защитен] ~
$ ansible-playbook service.yml

ИГРАЙТЕ [спечелете] ************************************************** ************************************************** ***********************************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [Stop service Tomcat] ********************************************** ************************************************** ******************
променен: [192.168.0.102]

PLAY RECAP ************************************************** ************************************************** *********************************
192.168.0.102
: ok = 2 променено = 1 недостъпно = 0 неуспешно = 0
preskočen = 0 спасен = 0 игнориран = 0

Ако проверите услугата tomcat в системата на Windows, тя вече е в спряно състояние.

спиране на прозорци tomcat

Можете да определите състоянието на стартирано или рестартирано или поставено на пауза, за да промените състоянието на услугата.

Събиране на факти

Използвайки win_disk_facts ansible модул, можете да извлечете цялата информация за диска на целевия хост.

[Имейл защитен] ~
$ vi disk.yml

– домакини: спечелете
задачи:
– име: Получете факти на диска
win_disk_facts:

– име: Изход първи размер на диска
отстраняване на грешки:
var: ansible_facts.disks [0] .size

– име: Преобразувайте първия системен диск в различни формати
отстраняване на грешки:
msg: ‘{{disksize_gib}} срещу {{disksize_gib_human}}’
Варс:
# Вземете първия системен диск
диск: ‘{{ansible_facts.disks | selectattr ("system_disk") | първо}} ‘

# Показване на размера на диска в Gibibytes
disksize_gib_human: ‘{{disk.size | filesizeformat (true)}}’
disksize_gib: ‘{{(disk.size / 1024 | pow (3)) | кръг | int}} GiB’

Пуснете ansible-playbook, за да получите информация за диска.

[Имейл защитен] ~
$ ansible-playbook disk.yml

ИГРАЙТЕ [спечелете] ************************************************** ************************************************** ***********************************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [Получете факти на диска] ********************************************** ************************************************** **************************
добре: [192.168.0.102]

ЗАДАЧА [Изход първи размер на диска] ********************************************* ************************************************** *******************
ок: [192.168.0.102] => {

"ansible_facts.disks [0] .size": "1000204886016"
}

ЗАДАЧА [Конвертиране на първия системен диск в различни формати] ****************************************** ************************************************
ок: [192.168.0.102] => {
"съобщ": "932 GiB срещу 931.5 GiB"
}

PLAY RECAP ************************************************** ************************************************** *********************************
192.168.0.102
: ok = 4 променено = 0 недостъпно = 0 неуспешно = 0
preskočen = 0 спасен = 0 игнориран = 0

Използвайки win_command ansible модул, можете да изпълнявате команди на отдалечения хост и да получавате информация за процесора, подробности за устройството и много повече.

[Имейл защитен] ~
$ vi check.yml

– домакини: спечелете
задачи:
– име: Получете факти на диска
win_command: wmic cpu получи надпис, deviceid, име, numberofcores, maxclockspeed, статус
регистър: използване

– отстраняване на грешки: msg ="{{use.stdout}}"

Пуснете ansible-playbook, за да получите информация за отдалечена система.

[Имейл защитен] ~
$ ansible-playbook check.yml

ИГРАЙТЕ [спечелете] ************************************************** ************************************************** ***********************************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [Получете факти] ************************************************* ************************************************** *************************
променен: [192.168.0.102]

ЗАДАЧА [грешка] ************************************************ ************************************************** *********************************
ок: [192.168.0.102] => {
"съобщ": "Надпис DeviceID MaxClockSpeed
име
NumberOfCores Status \ r \ r \ nIntel64 Family 6 Модел 142 Стъпка 9 CPU0 2712 Intel (R) Core (TM) i5-7200U CPU @ 2.50GHz 2 OK \ r \ r \ n \ r \ r \ n"
}

PLAY RECAP ************************************************** ************************************************** *********************************
192.168.0.102
: ok = 3 променено = 1 недостъпно = 0 неуспешно = 0
пропусна = 0 спасен = 0
игнорира = 0

Изпълнение на команди

Каквито и команди да изпълнявате на прозорец, те могат да се изпълняват през модула ansible win_command. Просто трябва да посочите командата във вашия YAML файл. Ето, аз просто създавам директория.

[Имейл защитен] ~
$ vi commandnds.yml

– домакини: спечелете

задачи:

– име: стартирайте изпълним файл с помощта на win_command

win_command: whoami.exe

– име: изпълнете команда cmd

win_command: cmd.exe / c mkdir C: \ тест

Пуснете ansible-playbook, за да извършите операция win_command.

[Имейл защитен] ~
$ ansible-playbook commandnds.yml

ИГРАЙТЕ [спечелете] ************************************************** ************************************************** ***********************************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [пуснете изпълним файл с помощта на win_command] ******************************************** ************************************************** *******
променен: [192.168.0.102]

ЗАДАЧА [изпълнете команда cmd] ********************************************* ************************************************** ************************
променен: [192.168.0.102]

PLAY RECAP ************************************************** ************************************************** *********************************
192.168.0.102
: ok = 3 променено = 2 недостъпни = 0 провалени = 0
preskočen = 0 спасен = 0 игнориран = 0

Променливи на околната среда

Системата Windows има множество променливи в средата, например, JAVA_HOME. Използвайки модула win_environment ansible, можете да добавяте или променяте променливи на околната среда в Windows система. В този пример добавям нова променлива към списъка с променливи на средата на Windows.

[Имейл защитен] ~
$ vi env.yml

– домакини: спечелете
задачи:
– име: Задаване на променлива среда за всички потребители
win_environment:
състояние: настоящ
име: NewVariable
стойност: Нова стойност
ниво: машина

Пуснете ansible-playbook, за да добавите променлива среда в отдалечена машина на Windows.

[Имейл защитен] ~
$ ansible-playbook env.yml

ИГРАЙТЕ [спечелете] ************************************************** ************************************************** ***********************************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [Задайте променлива среда за всички потребители] ****************************************** ************************************************** ***
променен: [192.168.0.102]

PLAY RECAP ************************************************** ************************************************** *********************************
192.168.0.102
: ok = 2 променено = 1 недостъпно = 0 неуспешно = 0
preskočen = 0 спасен = 0 игнориран = 0

Отидете в прозореца на променливите на средата; ще видите новата променлива, която току-що добавихте, присъства тук.

променливи на прозорци на Windows

Добавяне / редактиране на системния регистър

win_regedit ansible модул се използва за добавяне или редактиране на подробности за регистъра на отдалечена машина на Windows. Трябва да дадете пътя на регистъра и съдържанието, което да се добавя / актуализира. Тук създавам нов запис в регистъра GeekFlare вътре в HKLM: \ SOFTWARE и след това добавям име и данни към този регистър.

[Имейл защитен] ~
$ vi register.yml

– домакини: спечелете

задачи:

– име: Създаване на регистър

win_regedit:

път: HKLM: \ SOFTWARE \ GeekFlare

– име: Промяна на регистър, добавяне на име и данни

win_regedit:

път: HKLM: \ SOFTWARE \ GeekFlare

име: Geek

данни: Flare

Пуснете ansible-playbook, за да добавите системния регистър.

[Имейл защитен] ~
$ ansible-playbook register.yml

ИГРАЙТЕ [спечелете] ************************************************** ************************************************** ***********************************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [Създаване на регистър] ********************************************** ************************************************** *********************
променен: [192.168.0.102]

ЗАДАЧА [Промяна на регистър, добавяне на име и данни] ***************************************** ************************************************** ***
променен: [192.168.0.102]

PLAY RECAP ************************************************** ************************************************** *********************************
192.168.0.102
: ok = 3 променено = 2 недостъпни = 0 провалени = 0
preskočen = 0 спасен = 0 игнориран = 0

Ако отидете в редактора на системния регистър на отдалечената система, можете да видите, че този регистър е добавен успешно с параметри на име и данни.

регистър на ansible Windows

Изтриване на дневника

win_eventlog ansible модул се използва за добавяне, изчистване или премахване на дневници на събития на Windows от системата на Windows.

Отидете на Windows Powershell и избройте EventLogs, присъстващи на отдалечената Windows машина.

PS C: \ Потребители \ Geekflare> Get-EventLog -List
Макс (K) Запазване на дневника на записите за преливане
—— —— ————– ——- —
20,480 0 OverwriteAsNeed 33,549 Приложение
20,480 0 OverwriteAsNeeded 0 HardwareEvents
512 7 OverwriteOlder 20 Internet Explorer
20,480 0 OverwriteAsNeeded 0 Услуга за управление на ключове
128 0 OverwriteAsNeeded 190 OAlerts
Сигурност
20,480 0 OverwriteAsNeeded 44,828 система
15,360 0 OverwriteAsNeed 3,662 Windows PowerShell

Сега ще покажа как да премахнете регистрационни файлове от всички източници за Internet Explorer.

[Имейл защитен] ~
$ vi log.yml

– домакини: спечелете
задачи:
– име: Премахване на дневници на Internet Explorer
win_eventlog:
име: Internet Explorer
състояние: отсъства

Пуснете ansible-playbook, за да премахнете Internet Explorer от отдалечената машина на Windows.

[Имейл защитен] ~
$ ansible-playbook log.yml

ИГРАЙТЕ [спечелете] ************************************************** ************************************************** ************************************************** ***********************************

ЗАДАЧА [Събиране на факти] *********************************************** ************************************************** ************************************************** ************************
добре: [192.168.0.102]

ЗАДАЧА [Премахване на дневници на Internet Explorer] ********************************************* ************************************************** *************************************************
променен: [192.168.0.102]

PLAY RECAP ************************************************** ************************************************** ************************************************** *********************************
192.168.0.102: ok = 2 променено = 1 недостъпно = 0 провалено = 0 пропуснато = 0 спасено = 0 игнорирано = 0

Сега, ако отново изброите EventLogs, ще видите, че регистрационните файлове на Internet Explorer са премахнати.

PS C: \ Потребители \ Geekflare> Get-EventLog -List

Макс (K) Запазване на дневника на записите за преливане
—— —— ————– ——- —
20,480 0 OverwriteAsNeed 33,549 Приложение
20,480 0 OverwriteAsNeeded 0 HardwareEvents
20,480 0 OverwriteAsNeeded 0 Услуга за управление на ключове
128 0 OverwriteAsNeeded 190 OAlerts
Сигурност
20,480 0 OverwriteAsNeeded 44,835 Система
15,360 0 OverwriteAsNeeded 56 Windows PowerShell

И така, всичко беше за игрални книги Ansible, които могат да се използват за администриране на отдалечени прозорци. Продължете напред и изпробвайте тези книги. Можете да опитате и други Отговорни модули на Windows на разположение.

ЕТИКЕТИ:

  • Ansible

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me