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 файл на одной машине можно перемещаться к другой. Итак, медленно, но верно, машины будут подготовлены.

Работаю в компании Tune-IT с проектами на базе Open edX. Пишу на Python.

Ещё на эту же тему:

Оптимизация процесса перехода из workgroup в AD
Отправка E-mail по событиям из Event Viewer в Windows Server 2016
Установка ArchLinux в Windows Subsystem for Linux
Проблемы с установкой OEM Windows
Решение проблемы поврежденных файлов при обновлении Windows
Монтируем раздел SFTP/SSHFS в Windows с авторизацией по ключам
Борьба с BSOD 0x0000007b после переноса виртуальной машины из Xen
Обновление конфигурации кластера Service Fabric в Unhealthy состоянии
Ansible: установка значения переменной в зависимости от адреса подсети
Создание сервисов в Windows