Ansible — это инструмент управления конфигурацией, обеспечения и развертывания, который быстро набирает популярность в областях DevOps. Управление и работа на различных платформах, включая Microsoft Windows. Что выделяет другие инструменты управления конфигурацией, так это то, что он без агента. Это означает, что на целевом хосте не требуется программное обеспечение. Ansible использует SSH для связи с HOSTS на базе UNIX и WINRM для хостов Windows. Недавнее объявление команды Microsoft — это предстоящая вилка OpenSsh для Windows, которая сделает вещи более плавными для команд DevOps, управляющих инфраструктурой Windows.
В этом посте мы начнем с Ansible by:
- Настройка управляющей машины
- Настройка Windows Server для получения команд от Ansible
- Установите шоколад и 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 подойдет:
- Создайте пользователя Ansible, которого мы определили в All.yml
- Добавьте пользователя в группу администраторов
- Установите аутентификацию WINRM на базовую и разрешайте незашифрованные соединения
- Добавить правило брандмауэра для 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»