9 Ansible Playbooks Пример для администрирования Windows

Я покажу вам несколько операций, которые администратор может выполнять в удаленной системе Windows, используя ansible-playbook.


Ansible является одним из наиболее часто используемых инструментов DevOps на рынке. Он предоставляет несколько модулей Windows, которые используются для настройки и управления сервером Windows. Я предполагаю, что вы уже установили Ansible в Windows, откуда вы хотите управлять серверами Windows.

Ниже приведены некоторые из наиболее часто используемых задач, выполняемых администраторами Windows ежедневно. Вы будете удивлены, увидев, как легко администрируется Windows с помощью Ansible.

IP-адрес моего компьютера с контроллером Ansible 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 – это модуль, который копирует файл с локального сервера на удаленный хост 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
пропущено = 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
пропущено = 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 с аргументами. Ниже приведен тот же пример, что и выше, но вместо состояния мы используем аргумент install для установки apache.

Код 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

хозяева: победа

задания:

– имя: удалить 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]

ЗАДАЧА [Удалить MSI] ********************************************* ************************************************** **************************
изменено: [192.168.0.102]

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

Теперь, если я проверю версию apache, я получу вывод ниже, как приложение было удалено.

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

Удалить программное обеспечение (.EXE)

Вы также можете удалить программное обеспечение с помощью файла .exe, используя идентификатор продукта этого программного обеспечения..

[Электронная почта защищена] ~
$ vi uninstall.yml

– хозяева: победа

задания:

– имя: удалить 7-Zip из exe

win_package:

путь: C: \ Program Files \ 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: в порядке = 2 изменено = 1 недоступно = 0 не выполнено = 0 пропущено = 0 восстановлено = 0 проигнорировано = 0

Остановить / запустить / перезапустить службы Windows

Анонимный модуль win_service используется для запуска, остановки или перезапуска службы. Здесь я покажу вам, как остановить службу Tomcat.

щекотливые окна кот

Вы должны указать имя службы в файле YAML и установить состояние остановки.

[Электронная почта защищена] ~
$ vi service.yml

– хозяева: победа

задания:

– Название: Остановить службу Tomcat

win_service:

имя: Tomcat8

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

Запустите ansible-playbook, чтобы остановить службу Tomcat.

[Электронная почта защищена] ~
$ ansible-playbook service.yml

ИГРАТЬ [победить] ********************************************** ************************************************** ***********************************

ЗАДАЧА [Сбор фактов] ********************************************* ************************************************** ************************
хорошо: [192.168.0.102]

ЗАДАЧА [Остановить службу Tomcat] ******************************************** ************************************************** ******************
изменено: [192.168.0.102]

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

Если вы проверите службу Tomcat в системе Windows, она теперь находится в остановленном состоянии.

Анисбл Windows Остановка кота

Вы можете определить состояние запущен или перезапущен или приостановлен, чтобы изменить статус службы.

Сбор фактов

С помощью модуля ansible win_disk_facts вы можете получить всю информацию о диске целевого хоста.

[Электронная почта защищена] ~
$ vi disk.yml

– хозяева: победа
задания:
– Название: Получить факты о диске
win_disk_facts:

– name: вывод первого размера диска
отладки:
var: ansible_facts.disks [0] .size

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

# Показывать размер диска в гибибайтах
diskize_gib_human: ‘{{disk.size | filesizeformat (true)}}’
diskize_gib: ‘{{(disk.size / 1024 | pow (3)) | round | 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 ГиБ против 931,5 ГиБ"
}

PLAY RECAP ************************************************* ************************************************** *********************************
192.168.0.102
: ok = 4 изменено = 0 недоступно = 0 не удалось = 0
пропущено = 0 спасено = 0 проигнорировано = 0

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

[Электронная почта защищена] ~
$ vi check.yml

– хозяева: победа
задания:
– Название: Получить факты о диске
win_command: wmic cpu get caption, deviceid, имя, число ядер, 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 Model 142 Степпинг 9 CPU0 2712 Intel (R) Core (TM) i5-7200U CPU @ 2,50 ГГц 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 commands.yml

– хозяева: победа

задания:

– name: запустить исполняемый файл, используя win_command

win_command: whoami.exe

– имя: запустить команду cmd

win_command: cmd.exe / c mkdir C: \ test

Запустите ansible-playbook для выполнения операции win_command.

[Электронная почта защищена] ~
$ ansible-playbook commands.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
пропущено = 0 спасено = 0 проигнорировано = 0

Переменные среды

Система Windows имеет несколько переменных среды, например, JAVA_HOME. Используя ANSI-модуль win_environment, вы можете добавлять или изменять переменные среды в системе Windows. В этом примере я добавляю новую переменную в список переменных среды Windows..

[Электронная почта защищена] ~
$ vi env.yml

– хозяева: победа
задания:
– name: установить переменную окружения для всех пользователей
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
пропущено = 0 спасено = 0 проигнорировано = 0

Перейти в окно переменных среды; вы увидите новую переменную, которую вы только что добавили.

переменные ANSIBLE Windows

Добавить / изменить реестр

win_regedit ansible модуль используется для добавления или редактирования данных реестра на удаленной машине с Windows. Вам необходимо указать путь к реестру и контент для добавления / обновления. Здесь я создаю новую запись реестра GeekFlare внутри пути HKLM: \ SOFTWARE, а затем добавляю имя и данные в этот реестр.

[Электронная почта защищена] ~
$ vi registry.yml

– хозяева: победа

задания:

– Название: Создание реестра

win_regedit:

путь: HKLM: \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ GeekFlare

– имя: изменение реестра, добавление имени и данных

win_regedit:

путь: HKLM: \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ GeekFlare

имя: Компьютерщик

данные: Flare

Запустите ansible-playbook, чтобы добавить реестр.

[Электронная почта защищена] ~
$ ansible-playbook registry.yml

ИГРАТЬ [победить] ********************************************** ************************************************** ***********************************

ЗАДАЧА [Сбор фактов] ********************************************* ************************************************** ************************
хорошо: [192.168.0.102]

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

ЗАДАЧА [Изменение реестра, добавление имени и данных] *************************************** ************************************************** ***
изменено: [192.168.0.102]

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

Если вы зайдете в редактор реестра на удаленной системе, вы увидите, что этот реестр был успешно добавлен с параметрами Name и Data..

реестр ANSIBLE Windows

Удалить журнал

Анонимный модуль win_eventlog используется для добавления, очистки или удаления журналов событий Windows из системы Windows..

Перейдите в Windows Powershell и перечислите EventLogs, присутствующие на удаленном компьютере с Windows..

PS C: \ Users \ Geekflare> Get-EventLog -List
Макс (K) сохранить журнал записей переполнения
—— —— ————– ——- —
20,480 0 OverwriteAsNeeded 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 Перезаписать как нужно 44,828 Система
15 360 0 Перезаписать нужно 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: в порядке = 2 изменено = 1 недоступно = 0 не выполнено = 0 пропущено = 0 восстановлено = 0 проигнорировано = 0

Теперь, если вы снова перечислите EventLogs, вы увидите, что журналы Internet Explorer были удалены.

PS C: \ Users \ Geekflare> Get-EventLog -List

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

Итак, это все об Ansible playbook, которые можно использовать для удаленного администрирования Windows. Идите и попробуйте эти пьесы. Вы также можете попробовать другие Ansible модули Windows доступный.

TAGS:

  • анзибль

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map