Рубрики
Uncategorized

Начало работы с Ansible и настройкой хостов Windows

Начало настройки хостов Windows с помощью Ansible. Tagged с Ansible, Windows, DevOps.

Ansible — это инструмент управления конфигурацией, обеспечения и развертывания, который быстро набирает популярность в областях DevOps. Управление и работа на различных платформах, включая Microsoft Windows. Что выделяет другие инструменты управления конфигурацией, так это то, что он без агента. Это означает, что на целевом хосте не требуется программное обеспечение. Ansible использует SSH для связи с HOSTS на базе UNIX и WINRM для хостов Windows. Недавнее объявление команды Microsoft — это предстоящая вилка OpenSsh для Windows, которая сделает вещи более плавными для команд DevOps, управляющих инфраструктурой Windows.

В этом посте мы начнем с Ansible by:

  1. Настройка управляющей машины
  2. Настройка Windows Server для получения команд от Ansible
  3. Установите шоколад и SQL Server

Ansible требует PowerShell версии 3.0 и .net Framework 4.0 или новее функционировать в старых операционных системах, таких как Server 2008 и Windows 7.

Если вы рассмотрим требования, давайте начнем с первого шага.

Настройка Ansible Control Machine

Как упоминалось ранее, Ansible не является агентством, но нам нужна управляющая машина — машина, которая разговаривает со всеми нашими хостами.

Ansible не может запустить в Windows, но есть трюк

В настоящее время Ansible может быть установлен только на машинах на основе UNIX, но если вы используете Windows в качестве основной ОС, вы можете установить подсистему Ubuntu. Читать это Для дальнейших деталей установки. Если вы не пользователь Windows, пожалуйста, продолжите чтение.

Установите Ansible

После установки подсистемы Ubuntu в Windows (если у вас это было), давайте продолжим установку Ansible путем открытия терминала.

Установите управление репозиторием Ubuntu: $ sudo apt-get Установка программного обеспечения-пропертиза

Давайте обновим нашу систему: $ sudo apt-get

Добавить Ansible Repository: $ sudo apt-add-repository ppa: ansible/ansible

Затем установите Ansible: $ apt-get установить ansible

Добавить менеджер пакетов Python: $ apt Установка Python-Pip

Добавить клиент Python winrm: $ pip установить pywinrm

Установите XML -анализатор: $ pip установить Xmltodict

Если все прошло хорошо, вы сможете получить текущую версию: $ ansible -версия

Все идет нормально. Давайте продолжим с настройкой инструмента.

Настройте Ansible

Инвентарь — список хостов

Inventory.yml является основным файлом конфигурации адресов ваших хостов, разделенных группами с описательными именами.

Давайте создадим этот файл и задаем пример ниже: $ vim Inventory.yml

Введите адреса IP/DNS для вашей группы:

[dbservers]
mydbserver1.dns.example 80.69.0.160

[webservers]
mywebserver1.dns.example 80.69.0.162

Настройте соединение

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

Если вы хотите, чтобы весь ваш инвентарь использовал тот же файл конфигурации, вы можете назвать его All.yml . Мы будем использовать All.yml Поскольку все серверы будут иметь одинаковые учетные данные и тип подключения.

Начнем с создания папки: $ mkdir Group_vars

Создайте файл и отредактируйте его: $ vim Group_vars/all.yml

Добавьте детали конфигурации:

ansible_user: ansible_user
ansible_password: your_password_here
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_transport: basic
ansible_winrm_operation_timeout_sec: 60
ansible_winrm_read_timeout_sec: 70

Эти учетные данные будут использоваться для доступа к удаленным хостам с установкой подключения к базовой аутентификации WinRM. Мы создадим их в следующем разделе. Мы используем базовую аутентификацию, но для вашей производственной среды вы, вероятно, хотите использовать более безопасную схему. Смотрите это Статья для получения дополнительной информации.

Настройте хосты Windows

Наши хосты Windows должны быть настроены, прежде чем выполнять любые команды. Следующий сценарий PowerShell подойдет:

  1. Создайте пользователя Ansible, которого мы определили в All.yml
  2. Добавьте пользователя в группу администраторов
  3. Установите аутентификацию WINRM на базовую и разрешайте незашифрованные соединения
  4. Добавить правило брандмауэра для WinRM с помощью IP -адреса управления машиной

Откройте PowerShell на хосте и выполните сценарий:

NET USER ansible_user "your_password_here" /ADD
NET LOCALGROUP "Administrators" "ansible_user" /ADD
Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true
Set-Item -Path WSMan:\localhost\Service\AllowUnencrypted -Value $true
netsh advfirewall firewall add rule name="WinRM" dir=in action=allow protocol=TCP localport=5985 remoteip=10.10.1.2

После завершения выполнения мы можем попытаться провести наш хост с управляющей машины, чтобы проверить, что подключение в порядке. Мы пинг только серверы DB: $ ansible dbservers -i inventory.yml -m win_ping

Напишите нашу первую пьесу

Возвращаясь к нашей Ansible Control Machine, чтобы добавить книгу — набор задач или воспроизведения, которые вместе формируют пьесу.

Цель состоит в том, чтобы установить Chocolatey, который является менеджером пакетов, управляемых сообществом для Windows. После этого мы установим SQL Server и перезагрузим сервер.

Ansible поставляется со многими модулями для окон с большим количеством функциональных возможностей из коробки. Они префикс с «win_», например, win_feature. Вы можете проверить больше Здесь для ваших конкретных потребностей.

Давайте продолжим создание файла Playbook: $ vim configure-win-server-playbook.yml

В файле опишите пейзажную книгу следующим образом:

--------
- hosts: dbservers
  tasks:
   - name: Install Chocolatey
     raw: Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

   - name: Install SQL Server
     win_chocolatey:
     name: sql-server-2017
     state: present

   - name: Reboot to apply changes
     win_reboot:
      reboot_timeout: 3600

Выполнить пейзажную книгу, набрав: $ ansible-playbook dbservers -i inventory.yml configure-win-server-playbook.yml

Вы увидите каждую задачу, выполняющую и возвращающую статус исполнения, и после перезагрузки мы все готовы!

Вывод

Ansible — действительно мощный инструмент. Microsoft и сообщество выполняют действительно фантастическую работу для переноса модулей Ansible в Windows, которые написаны в PowerShell. Тем не менее, план по получению функции SSH на Windows тоже отличный. Независимо от того, имеет ли ваш инвентарь физические или виртуальные серверы, вам обязательно следует попробовать Ansible в вашей инфраструктуре для экономии времени, денег и, конечно, избегать человеческих ошибок, настраивая, развертывая или предоставляя эти среды.

Оригинал: «https://dev.to/gmarokov/getting-started-with-ansible-and-configuring-windows-hosts-20nd»