null

Подготовка Windows-хостов для Ansible-оркестрации

Дано: 32 компьютера с Windows 7 на борту.
Задача: Подготовить их для оркестрации средствами Ansible.

Решение.
Согласно официальной доке (http://docs.ansible.com/ansible/latest/intro_windows.html#getting-to-powershell-3-0-or-higher) для работы большинства модулей Ansible использует PowerShell не ниже версии 3. При этом, для корректной работы такого модуля как win_chocolatey, например, советуют версию не ниже 4 (https://github.com/ansible/ansible/issues/13856).
Тенденция ясна - старые версии поддерживаются плохо, поэтому сразу ставим PS 5.1. Вот здесь (https://docs.microsoft.com/ru-ru/powershell/scripting/setup/installing-windows-powershell?view=powershell-5.1) выясняем что для PS 5.1 на самом то деле нужно поставить WMF 5.1, для которого по ссылке для скачивания видим "WMF 5.1 requires Microsoft .NET Framework 4.5 or above".

Итак, перечислим всё необходимое:
1. dotNet 4.5 (https://www.microsoft.com/ru-ru/download/details.aspx?id=30653)
2. WMF 5.1 (https://www.microsoft.com/en-us/download/details.aspx?id=54616)
3. ConfigureRemotingForAnsible.ps1 - скрипт, настраивающий WinRM (https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1)

Достаточно установить/запустить перечисленные компоненты в указанном порядке, однако повторять это 32 раза уже не охота.

Для сокращения рутинных действий написан .bat файл, выполняющий все необходимые действия:

@schtasks /Create /RU SYSTEM /SC ONSTART /TN install-PS51 /TR "C:\ansible\Win7AndW2K8R2-KB3191566-x64.msu /quiet /forcerestart" /Z /V1 /RL HIGHEST 
@schtasks /Create /RU SYSTEM /SC ONEVENT /TN configure-winrm /EC Setup /MO "*[System/EventID=2 and UserData/CbsPackageChangeState/PackageIdentifier='KB3033929']" /TR "powershell -ExecutionPolicy bypass -File C:\ansible\ConfigureRemotingForAnsible.ps1" /RL HIGHEST
C:\ansible\dotNetFx45_Full_x86_x64.exe /quiet /norestart
shutdown /r /t 0

В кратце, установка dotNet запускается непосредственно, а установка WMF и запуск скрипта добавляются в планировщик заданий и выполняются после одной и второй перезагрузки соответственно.

Файлы, ссылки на которые представлены в списке, необходимо разместить в каталоге C:\ansible\. Там же создать файл с расширением .bat в который скопировать приведённый код.
Следует убедиться, что сетевой интерфейс подключён и находится в режиме "домашняя сеть", либо "сеть предприятия" (в противном случае скрипт ConfigureRemotingForAnsible.ps1 не отработает) и запустить .bat файл от имени администратора.
После запуска остаётся лишь подождать пока компьютер дважды перезагрузиться, подождать ещё минуту-две (на доустановку и выполнение ConfigureRemotingForAnsible.ps1 скрипта) и попробовать достучаться до компьютера:

ansible <windows> -m win_ping

<windows> - должен быть в Вашем инвентарном файле. Как указать учётные данные описано в доке на Ansible.
Скопировав каталог ansible с указанными файлами и запустив .bat файл на одной машине можно перемещаться к другой. Итак, медленно, но верно, машины будут подготовлены.