Управляем через Ansible Windows системами

Posted by

Однажды задался целью вот моя основная система — это Ubuntu LTS релизы, начинал с 12.04 и уже на 18.04. Администрируя инфраструктуру часто приходится сталкиваться с различными системами, что-то под Wine запускаю, что-то под Virtualbox, подключаюсь как через SSH и т. д. И вот задался целью все-таки добить шаги посредством которых я смогу посредством инструмента ansible взаимодействовать с Windows системами.

Для себя выделил интересные этапы взаимодействия

  • если Windows система не в домене
  • если Windows система в домене

А если добавить репозитарий Ansible то версия из него более новая:

Устанавливаю пакет для использования модуля winrm:

Предварительные действия которые нужно выполнить на Windows 7 Pro x64 SP1

Шаг №1: Изменить тип активной сети

Пуск — Панель управления — Центр управления сетями и общим доступом, чтобы активная расположение сети было не «Общественная сеть», а либо «Домашняя», либо «Сеть предприятия». Делается это если в данной оснастке щелкнуть чуть ниже «Просмотр активных сетей» на «Общественная сеть» и изменить на «Домашняя сеть»:

Изменяю "Общественная сеть" на "Домашняя сеть"

или через консоль командной строки:

 

 

Служба "Служба удаленного управления Windows (WS-Management)" запускается.

Служба "Служба удаленного управления Windows (WS-Management)" успешно запущена.

Служба WinRM не настроена на прием запросов на компьютере.

Необходимо внести следующие изменения:

Задайте для типа службы WinRM значение отложенного автозапуска.

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

Выполнить изменения [y/n]? y

Служба WinRM была обновлена для приема запросов.

Тип службы WinRM успешно изменен.

Параметр LocalAccountTokenFilterPolicy настроен так, чтобы предоставлять административные права локальным пользователям удаленным образом.

Служба WinRM не настроена на разрешение удаленного управления компьютером.

Необходимо внести следующие изменения:

Создайте прослушиватель WinRM на HTTP://* для приема запросов WS-Man на любом из IP-адресов этого компьютера.

Разрешите исключение брандмауэра WinRM.

Выполнить изменения [y/n]? y

Служба WinRM обновлена для удаленного управления.

Создан прослушиватель WinRM на HTTP://* для приема запросов WS-Man на любом из IP-адресов этого компьютера.

Исключение брандмауэра WinRM включено.

Отобразить текущую политику Аутентификации через winrm:

Изменить политику Аутентификации через winrm:

или через PowerShell:

На заметку: https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html

Пробую теперь с Ubuntu 18.04 через Ansible взаимодействовать с Windows системой:

Так, стоп, почему подключение идет через SSH, ведь по умолчанию на Windows системах нет такого сервиса. Дело в том, что я когда создать в hosts описание для подключение к Windows я не указал логин, пароль и через какой инструмент идет взаимодействие.

Начинаю разбираться что и как.

По своим наработкам которые я когда-то делал, нужно на Windows систему установить PowerShell 3.0. Как это сделать у меня рассмотрено в ранее опубликованной заметке.

На Windows система устанавливаю PowerShell v3.0

Шаг №2: В интернете упоминается скрипт на powershell для Windows систем для настройки взаимодействия с системой Windows через winrm удаленно:

.\ConfigureRemotingForAnsible.ps1 : File C:\Users\ekzorchik\Downloads\ConfigureRemotingForAnsible.ps1 cannot be loaded

because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.mic

rosoft.com/fwlink/?LinkID=135170.

At line:1 char:1

+ .\ConfigureRemotingForAnsible.ps1

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : SecurityError: (:) [], PSSecurityException

+ FullyQualifiedErrorId : UnauthorizedAccess

The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose

you to the security risks described in the about_Execution_Policies help topic at

http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?

[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A

Self-signed SSL certificate generated; thumbprint: FF64E870508DCEE9CD5AD12B64473A49A38AEEE2

wxf : http://schemas.xmlsoap.org/ws/2004/09/transfer

a : http://schemas.xmlsoap.org/ws/2004/08/addressing

w : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd

lang : ru-RU

Address : http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous

ReferenceParameters : ReferenceParameters

ОК.

На Windows 7 Pro x64 SP1 брандмауер не отключал, вижу из добавленного это правило разрешающее взаимодействие с системой по входящему 5986/tcp соединению с именование правила: Allow WinRM HTTPS

И вот только после всех действий выше удаленное подключение через winrm заработало.

На заметку: Чтобы управлять с Ubuntu 18.04 Server через Ansible Windows системами нужно разрешить на них входящие подключения через TCP/5986 и создать структуру подключения вида:

Пример №1: Попробую создать каталог через Ansible управляя с Ubuntu 18.04 Server:

Запускаю созданный playbook:

Смотрю что изменило на Windows системе:

Через Ansible могу создавать каталоги в Windows

 

Пример №2: Можно на рабочие станции посылать сообщения:

Полученный результат на Windows 7 SP1 Pro x64 это появившееся окно на рабочем столе:

Через Ansible могу отправлять сообщения на Windows системы

Работает. Для себя нужно больше разобрать различных примеров. Т.к. я в повседневности, как на работе так и дома использую в качестве основной системы это Ubuntu 18.04 Desktop amd64. Пример №3:  Получить информацию об учетной записи на Windows системе.

Пример №4: Через Ansible выполнить команду PowerShell

Подведу итоги, я практически дополнил свой арсенал средств которыми теперь владею чтобы в полной мере администрировать локальную сеть из под Ubuntu 18.04 Desktop да и вообще любого долговременного релиза оси Ubuntu которым я привержен.

На этом у меня пока все, с уважением автор блога Олло Александр aka ekzorchik.