В этой статье я хочу описать работу с 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 --version
После того, как Ansible установлен на управляющем сервере, мы готовы начать взаимодействовать с сервером Windows.
Настройка WinRM для Ansible
Соединение с WinRM может оказаться непростым делом, особенно, если вы не находитесь в одном домене с ним. Существует несколько удобных команд WinRM, которые могут помочь установить соединение с WinRM с сервера Ansible, или с любого другого сервера.
Просмотр текущей конфигурации WinRM. Находясь в PowerShell, выполните следующие команды:
cd WSMan:\localhost\client
dir
В результате будут выведена текущая конфигурация WinRM, доверенные хосты, настройки шифрования и т.п. Для моего лабораторного сервера Ansible я устанавливаю параметр AllowUnencrypted (работать без шифрования) в значение true, а в качестве значения TrustedHosts (доверенные хосты) ставлю *, что позволяет работать с любыми хостами.
Чтобы разрешить нешифрованный трафик, выполните команду:
set-item .\allowunencrypted $true
Чтобы добавить новый TrustedHost (доверенный хост) в конфигурацию, выполните команду:
set-item WSMan:\localhost\Client\TrustedHosts -Value "*"
Также вы можете указать конкретный хост, если вам это нужно.
Скрипт PowerShell для подключения Ansible при настройке соединения WinRM
Существует удобный конфигурационный PowerShell скрипт, доступный на Github. Он позволяет автоматически настроить конфигурации WinRM, файрвола, PowerShell Remoting и т.п. для подключения Ansible. Вы можете скачать готовый скрипт его по следующей ссылке: https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
Проверка соединения Ansible при помощи Win_Ping
Для проверки соединения из Ansible, вы можете использовать команду win_ping, которая использует соединение с WinRM для подключения к серверу. Она проверяет, все ли в соединении с WinRM работает так, как ожидается.
Создайте файл inventory.yml, в котором перечислены хосты, соединения с которыми вы хотите проверить. Файл inventory.yml, который создал я, имеет только один хост для проверки и выглядит следующим образом:
[test]
10.1.3.232
Для проверки соединения с хостами, указанными в инвентаризационном файле, используйте приведенную ниже команду. Команда выполняет проверку проверки WinRM соединения.
ansible test -i inventory.yml -m win_ping
Если все верно настроили, вы должны увидеть сообщение SUCCESS.
Теперь мы можем использовать автоматизацию 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.