Использование Chef для создания вкусных рецептов для управления серверами Windows

Опубликовано: 16 Марта, 2023
Использование Chef для создания вкусных рецептов для управления серверами Windows

Популярный инструмент настройки управления Chef использует концепцию инфраструктуры как кода и поддерживает локальные, облачные и гибридные среды. Chef работает с несколькими операционными системами, включая Microsoft, Linux (Red Hat, Ubuntu, Oracle Linux, CentOS, Amazon Linux, SUSE), AIX, FreeBSD и MacOS. Используя Chef, организация может управлять множеством серверов и автоматизировать процесс развертывания из одного места, используя согласованный процесс без вмешательства человека. Chef упрощает задачу, потому что не требует большого количества сценариев — всего несколько строк кода, и «шеф» позаботится об изменениях на уровне операционной системы.

В мире Windows администратор может управлять несколькими областями операционной системы, такими как PowerShell, пакеты MSI, управлять папками, файлами, реестром, службами, задачами Windows, переменными среды и многим другим. Все эти области операционной системы известны как ресурсы в мире Chef. Они хорошо задокументированы, и администратор может проверить все параметры, доступные для каждого ресурса, встроенного в решение, на веб-сайте Chef.

В этой статье мы будем работать с Chef Development Kit (Chef-DK), который устанавливается на рабочую станцию для тестирования рецептов. Во второй статье мы применим наши знания, полученные в этой статье, и создадим нашу первую кулинарную книгу и применим рецепты к паре серверов.

Еще одним ключевым моментом при создании рецептов является понимание языка Ruby, который несложно освоить и требуется при работе с рецептами.

Установка комплекта разработки Chef (ChefDK)

Первый шаг — загрузить Chef Deployment Kit, и это можно сделать несколькими способами. Мы можем использовать следующий скрипт PowerShell, который вызовет установочный файл с веб-сайта, код показан ниже.

. { iwr -useb https://omnitruck.chef.io/install.ps1 } | iex; install -project chefdk -channel stable -version 2.3.4

Второй способ — скачать и установить отсюда. Установка проста — просто оставьте настройки по умолчанию, чтобы завершить процесс. После установки продукта на рабочем столе появится значок Chef Development Kit.

Примечание. При первом открытии вам может потребоваться изменить политику выполнения вашей системы, запустив следующий командлет:
Set-ExecutionPolicy Unrestricted

После открытия , который представляет собой приглашение PowerShell, мы можем использовать команду chef –version, чтобы определить текущую версию, работающую на нашей рабочей станции.

Мы собираемся написать код, и для этого нам нужен мощный редактор. Я предпочитаю использовать Visual Studio Code, который можно получить здесь. Это бесплатно и работает на Windows, Linux и Mac.

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

На той же рабочей станции нам нужно подготовить структуру каталогов для поддержки наших будущих кулинарных книг и тестирования рецептов, которые мы будем выполнять. Мы создадим две (2) папки следующим образом:

mkdir C:Chef
mkdir C:ChefCookBooks

Создание папки

Одним из первых шагов является создание папки. Для этого мы создадим файл в с именем directory.rb сохраним его в папке C:Chef. Чтобы создать каталог с помощью Chef, мы можем добавить только эти строки, перечисленные ниже. Прелесть автоматизации в том, что нам не нужно было указывать реальную команду в Windows (mkdir или New-Item в PowerShell), чтобы создать папку.

Имейте в виду, что мы делаем все просто. С помощью Chef мы управляем разрешениями, удаляем папки и так далее. Еще один момент заключается в том, что всегда создается значение по умолчанию для действия, а это означает, что эту строку можно легко исключить из сценария.

каталог 'C:AppX' сделать
действие: создать
конец

У нас есть простой файл Ruby, и, запустив приведенный ниже командлет, мы запустим файл в локальном режиме. Вывод будет описывать рецепт (каталог.rb) и его действия, как показано на изображении ниже.

Chef-client--local-mode.directory.rb

Создание и управление файлом

Файл — это еще один ресурс, доступный в Chef, и с его помощью мы можем управлять содержимым и самими файлами.

В этой статье мы обязательно добавим файл с именем app.conf в созданную ранее папку и добавим строку (server=server.montreallab.info).

файл 'C:AppXapp.conf' сделать
содержимое 'server=server.montreallab.info'
конец

Понимание инфраструктуры как кода

Опять же, здесь мы действительно делаем все просто, но следующий пример даст представление о том, как Chef помогает организации поддерживать системы в рабочем состоянии. Предположим, что администратор зашел на один из серверов, где мы использовали Chef для настройки файла , и изменил его на неправильное значение, например .

Если мы снова запустим тот же командлет, клиент Chef определит, что это не то же самое, и перезапишет значение, как показано на изображении ниже. Наилучшая практика требует, чтобы клиент Chef запускался каждые X раз на серверах, чтобы убедиться, что они всегда согласованы.

Если мы внимательно посмотрим, мы увидим предыдущую информацию server57.montreallab.info, которая была удалена, а новая информация добавлена на основе нашего файла рецепта.

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

Что дальше?

В этой статье мы увидели, как автоматизировать две простые задачи в Windows Server с помощью Chef и его концепции «Инфраструктура как код».

Выполнив только эти две простые задачи, мы увидим, как это будет полезно для целого ряда решений. Например: если у нас есть несколько серверов веб-приложений со статическим содержимым, которые необходимо развернуть, мы можем использовать Chef для создания папок, добавления файлов, и сервер будет запущен и запущен в кратчайшие сроки.

Вам может быть интересно, а как насчет IIS? Это не проблема. Мы можем автоматизировать развертывание IIS и контролировать статус службы, и мы расскажем об этом в следующей статье здесь, в TechGenix.