Admin Future
239 subscribers
50 photos
1 video
4 files
87 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
Infrastructure as Code в мире Windows

宣言 PowerShell DSC: Управление Windows-серверами на уровне кода

Мы часто пишем PowerShell-скрипты, чтобы что-то сделать: установить роль, запустить службу, создать файл. Это императивный подход — мы описываем, как достичь цели.

PowerShell Desired State Configuration (DSC) предлагает декларативный подход. Мы описываем, каким должен быть сервер, а DSC сам решает, как привести его в это состояние. Это и есть Infrastructure as Code (IaC) для Windows.

▪️ Ключевая идея:
Вы создаете конфигурационный файл, в котором описываете конечное состояние системы. Например: "Веб-сервер IIS должен быть установлен, а служба 'w3svc' должна быть запущена". Если IIS не установлен, DSC его установит. Если служба остановлена, DSC ее запустит. Если всё уже в нужном состоянии, DSC ничего не сделает (идемпотентность).

▪️ Пример: Конфигурация простого веб-сервера
Этот скрипт описывает, что на сервере должен быть установлен IIS и запущен его сервис.

Создайте конфигурационный скрипт (WebServerConfig.ps1):

PowerShell

Configuration WebServerConfig
{
# Узел, к которому применяется конфигурация (localhost)
Node localhost
{
# Убеждаемся, что компонент Windows 'Web-Server' установлен
WindowsFeature IIS
{
Ensure = "Present"
Name = "Web-Server"
}

# Убеждаемся, что служба IIS запущена
Service WebService
{
Ensure = "Present"
Name = "w3svc"
State = "Running"
DependsOn = "[WindowsFeature]IIS" # Запускать только после установки IIS
}
}
}

# Вызываем конфигурацию для создания MOF-файла
WebServerConfig

Запустите скрипт в PowerShell ISE или консоли. Он не применит конфигурацию сразу, а создаст в новой папке WebServerConfig файл localhost.mof. Этот MOF-файл и есть скомпилированное «желаемое состояние».

Примените конфигурацию:

PowerShell

Start-DscConfiguration -Path .\WebServerConfig -Wait -Verbose

DSC проанализирует текущее состояние системы, сравнит его с localhost.mof и выполнит необходимые действия. Повторный запуск этой команды не приведет ни к каким изменениям, если состояние сервера не менялось.

🧠 Взгляд архитектора:
DSC — это переход от одноразовых скриптов к созданию живой, самоподдерживающейся документации вашей инфраструктуры в виде кода. Это позволяет гарантировать консистентность конфигураций десятков и сотен серверов, автоматически исправлять "дрейф" настроек и встраивать управление инфраструктурой в CI/CD пайплайны.

#PowerShellDSC #IaC #WindowsServer #Automation #DevOps #PowerShell