Ansible подключение к windows

Обновлено: 07.07.2024

Я хочу подготовить хост Windows, который находится в подсети, доступной только с хостом перехода Linux.

машина Windows использует метод подключения winrm. Linux jump server доступен через SSH.

у меня нет проблем с доступом к хосту windows, если он доступен напрямую с:

Если я попытаюсь делегировать задачу серверу Linux jump (который имеет прямой доступ к Windows):

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

обратите внимание, что для группы windows_machines я определил group_vars:

как я должен предоставлять хосты Windows через хост бастиона?

моим приоритетом было иметь всю конфигурацию в одном месте и не распространять часть Ansible на хост бастиона/прыжка. Я пошел на создание SSH-туннеля для порта 5986. Вот полная задача:

для этого мне пришлось немного изменить файл inventory:

Ansible может подключаться путем доступа 5986 порт на локальном хосте, поэтому ansible_host должен быть установлен в 127.0.0.1 и иметь информацию о фактическом ip-адресе машины Windows пользовательская переменная actual_host установлен.

это не то, что на задание.

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

Так, например, у вас может быть роль, которая настраивает MySQL на кластере ящиков, которые определены в общем смысле, но затем хотят выполнить определенную конфигурацию / задачи на мастере в одиночку, оставив мастера, чтобы затем реплицировать их рабам.

Вы можете do SSH проксирование где вы пересылаете SSH-соединения через хост бастиона / прыжка, но это, очевидно, требует, чтобы ваше соединение было SSH, которое вам не поможет.

единственное, что я могу придумать, чтобы помочь вам здесь, было бы использовать Ansible непосредственно из хоста бастиона/прыжка, возможно, вызванного Ansible (или чем-то еще) с вашей машины за пределами защищенной зоны.

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

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

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

$ apt - cache show ansible | grep Version

$ sudo apt - get install ansible - y

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

$ sudo apt - get install - y software - properties - common

$ sudo apt - add - repository ppa : ansible / ansible

$ apt - cache show ansible | grep Version

$ sudo apt - get install ansible python3 - pip python - pip - y

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

$ sudo find / - name "winrm"

/ usr / local / lib / python3 . 6 / dist - packages / winrm / usr / local / lib / python2 . 7 / dist - packages / winrm

$ sudo nano / etc / ansible / hosts

172.33.33.17 ansible_user = ekzorchik ansible_password = 712mbddr @ ansible_connection = winrm ansible_winrm_server_cert_validation = ignore

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

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

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

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

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

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

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

C : \ Windows \ system32 > sc config winrm start = auto

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В этой статье я хочу описать работу с Ansible при помощи командной строки, продемонстрировав, насколько легко автоматизировать настройку Windows без особых усилий. Ansible представляет собой прекрасную платформу для обучения автоматизации, и он довольно широко используется в среде центров обработки данных и на уровне предприятий. Давайте взглянем на основы автоматизации настройки Windows Server, и на то, как легко сделать это с помощью управляющего сервера Ansible.

Основы автоматизации конфигурации Windows Server с помощью Ansible

В качестве моего управляющего сервера Ansible я использую сервер Ubuntu 16.04. Управляющий сервер – это место, с которого с помощью Ansible мы будем запускать наши модули, сценарии, задачи и т.п. В моем стенде этот сервер с Ansible Tower. Для использования Ansible и работе с этой системой из командной строки нам просто потребуется установить несколько небольших утилит. Поскольку я использую сервер с Tower, то мне не требуется устанавливать Ansible, так как он входит в состав установки Tower. Однако я все же пройду по всем простым шагам, нужным для установки Ansible.

  • Прежде всего, обновите сервер Ubuntu последними патчами.
  • Установите pip
  • Установите pywinrm
  • Установите ansible

Установка PIP в Ubuntu

Что такое PIP? Это альтернативный установщик пакетов python, которые многие используют для управления действиями с пакетами, связанными с python.

Для установки PIP в Ubuntu нужно выполнить команды:

sudo apt-get install python-pip python-dev build-essential

sudo pip install --upgrade pip

Установка Pywinrm в Ubuntu

Модуль Pywinrm позволяет Ansible взаимодействовать с сервисом WinRM на Windows. Для установки модуля Pywinrm после того, как был установлен pip, выполните команду:

sudo pip install pywinrm

Установка Ansible в Ubuntu

После того, как вы установили два указанных выше пакета, нужно установить сам Ansible:

sudo pip install ansible

Для проверки версии установленного ansible введите команду:

После того, как Ansible установлен на управляющем сервере, мы готовы начать взаимодействовать с сервером Windows.

Настройка WinRM для Ansible

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

Просмотр текущей конфигурации WinRM. Находясь в PowerShell, выполните следующие команды:

В результате будут выведена текущая конфигурация WinRM, доверенные хосты, настройки шифрования и т.п. Для моего лабораторного сервера Ansible я устанавливаю параметр AllowUnencrypted (работать без шифрования) в значение true, а в качестве значения TrustedHosts (доверенные хосты) ставлю *, что позволяет работать с любыми хостами.

Чтобы разрешить нешифрованный трафик, выполните команду:

set-item .\allowunencrypted $true

Чтобы добавить новый TrustedHost (доверенный хост) в конфигурацию, выполните команду:

set-item WSMan:\localhost\Client\TrustedHosts -Value "*"

Также вы можете указать конкретный хост, если вам это нужно.

Скрипт PowerShell для подключения Ansible при настройке соединения WinRM

Проверка соединения Ansible при помощи Win_Ping

Для проверки соединения из Ansible, вы можете использовать команду win_ping, которая использует соединение с WinRM для подключения к серверу. Она проверяет, все ли в соединении с WinRM работает так, как ожидается.

Создайте файл inventory.yml, в котором перечислены хосты, соединения с которыми вы хотите проверить. Файл inventory.yml, который создал я, имеет только один хост для проверки и выглядит следующим образом:

Для проверки соединения с хостами, указанными в инвентаризационном файле, используйте приведенную ниже команду. Команда выполняет проверку проверки WinRM соединения.

ansible test -i inventory.yml -m win_ping


Теперь мы можем использовать автоматизацию Ansible для управления Windows Server.

Запуск команд из Ansible на Windows Server

Для начала работы мы можем использовать несколько основных команд. Мы можем взаимодействовать с нашим сервером, как, как если мы работали бы с ним с консоли. Ниже приводится команда для получения IP конфигурации на нашем Windows Server.

ansible test -i inventory.yml -m raw -a "ipconfig"

Мы также можем остановить, запустить и перезапустить любые службы:

ansible test -m win_service -a "name=Spooler state=stopped"

Заключение

Начать использовать Ansible для автоматизациии настройки Windows Server совсем не сложно. Мы можем быстро управлять настройками сервера, устанавливать соединение с WinRM, и затем выполнять команды на сервере. Далее мы познакомимся со сценариями для дальнейшей автоматизации и глубже погрузимся в автоматизацию конфигурации Windows Server при помощи Ansible.

Как установить Ansible на

Ansible становится все более популярной платформой для развертывания приложений и предоставления программного обеспечения среди разработчиков благодаря простоте использования и гибкости. Кроме того, его легко настроить, и агент не требуется устанавливать на удаленных узлах, вместо этого Ansible использует SSH-аутентификацию без пароля для управления удаленными узлами Unix / Linux. Однако в этом разделе мы увидим, как вы можете управлять хостом Windows с помощью Ansible.

Настройка лаборатории

Мы будем использовать приведенную ниже настройку для достижения нашей цели.

Часть 1: Установка Ansible на контрольном узле (CentOS 8)

Прежде всего нам нужно установить Ansible на узле Control, который является системой CentOS 8.

Шаг 1. Убедитесь, что Python3 установлен на узле управления Ansible

Во-первых, нам нужно подтвердить, установлен ли Python3. CentOS 8 поставляется с Python3, но если он отсутствует по какой-либо причине, установите его с помощью команды:

Затем сделайте Python3 версией Python по умолчанию, запустив:

Чтобы проверить, установлен ли python3, выполните команду:

Как управлять удаленным хостом Windows с помощью Ansible

Шаг 2. Установите виртуальную среду для запуска Ansible

Для этого упражнения предпочтительна изолированная среда для запуска и тестирования Ansible. Это позволит избежать таких проблем, как проблемы с зависимостями и конфликты пакетов. Изолированная среда, которую мы собираемся создать, называется виртуальной средой.

Во-первых, начнем с установки виртуальной среды на CentOS 8.

Как управлять удаленным хостом Windows с помощью Ansible

После установки виртуальной среды создайте виртуальное рабочее пространство, запустив:

Как управлять удаленным хостом Windows с помощью Ansible

Как управлять удаленным хостом Windows с помощью Ansible

Большой! Наблюдатель, теперь приглашение изменилось на (env).

Шаг 3. Установите Ansible

После создания виртуальной среды продолжите и установите инструмент автоматизации Ansible с помощью pip, как показано:

Как управлять удаленным хостом Windows с помощью Ansible

Позже вы можете подтвердить установку Ansible с помощью команды:

Как управлять удаленным хостом Windows с помощью Ansible

Чтобы протестировать Ansible и посмотреть, работает ли он на нашем сервере Ansible Control, запустите:

Как управлять удаленным хостом Windows с помощью Ansible

Большой! Затем нам нужно определить хост или систему Windows в файле хоста на узле управления Ansible. Поэтому откройте файл hosts по умолчанию

Определите хосты Windows, как показано ниже.

Как управлять удаленным хостом Windows с помощью Ansible

Примечание. Имя пользователя и пароль указывают на пользователя в хост-системе Windows.

Затем сохраните и выйдите из файла конфигурации.

Шаг 4: Установите Pywinrm

В отличие от систем Unix, где Ansible использует SSH для связи с удаленными хостами, с Windows это совсем другая история. Для связи с хостами Windows вам необходимо установить Winrm.

Чтобы установить WinRM, еще раз используйте инструмент pip, как показано:

Часть 2: Настройка хоста Windows

В этом разделе мы собираемся настроить нашу удаленную хост-систему Windows 10 для подключения к узлу Ansible Control. Мы собираемся установить прослушиватель WinRM ( сокращение от Windows Remote), который позволит установить соединение между хост-системой Windows и сервером Ansible.

Но прежде чем мы это сделаем, ваша хост-система Windows должна выполнить несколько требований для успешной установки:

При соблюдении всех требований выполните следующие действия:

Шаг 1. Загрузите сценарий WinRM на хост с Windows 10.

WinRM можно установить с помощью сценария, который можно скачать по этой ссылке . Скопируйте весь сценарий и вставьте его в редактор блокнота. После этого убедитесь, что вы сохранили сценарий WinRM в наиболее удобном месте. В нашем случае мы сохранили файл на рабочем столе под именем ConfigureRemotingForAnsible.ps1.

Шаг 2. Запустите сценарий WinRM на узле Windows 10.

Затем запустите PowerShell от имени администратора.

Как управлять удаленным хостом Windows с помощью Ansible

Перейдите к месту сценария и запустите его. В этом случае мы перешли в папку на рабочем столе, где сохранили скрипт. Затем продолжите и выполните сценарий WinRM на хосте WIndows:

Это займет около минуты, и вы должны получить результат, показанный ниже. Выходные данные показывают, что WinRM успешно установлен.

Как управлять удаленным хостом Windows с помощью Ansible

Часть 3: Подключение к хосту Windows из Ansible Control Node

Чтобы проверить подключение к узлу Windows 10, выполните команду:

Как управлять удаленным хостом Windows с помощью Ansible

Выходные данные показывают, что мы действительно установили соединение с удаленным хостом Windows 10 из узла Ansible Control. Это означает, что теперь мы можем управлять удаленным хостом Windows с помощью Ansible Playbooks. Давайте создадим образец учебника для хост-системы Windows.

Часть 4: Создание и запуск сценария для хоста Windows 10

Как управлять удаленным хостом Windows с помощью Ansible

Сохраните и закройте файл yml. Затем запустите playbook, как показано

Как управлять удаленным хостом Windows с помощью Ansible

Результатом является указатель, что все прошло хорошо. На этом мы завершаем тему о том, как управлять хостом Windows с помощью Ansible.

Читайте также: