hostprofi.ru
Подобрать хостинг
Термин·буква P

Pulumi

краткое определение

Pulumi — платформа Infrastructure as Code (IaC), позволяющая описывать инфраструктуру на обычных языках программирования: TypeScript, Python, Go, C#, Java. Конкурент Terraform с возможностью использовать логику, условия и циклы без DSL-ограничений.

Pulumi — инструмент Infrastructure as Code (IaC), где инфраструктура описывается на полноценных языках программирования, а не на специализированных DSL. Поддерживает TypeScript/JavaScript, Python, Go, C#, Java и YAML. Разработчики применяют привычные инструменты: функции, классы, условия, циклы, юнит-тесты — для описания и управления облачной инфраструктурой.

Как работает Pulumi

При запуске pulumi up инструмент выполняет программу на Python или TypeScript, которая декларирует ресурсы. Pulumi сравнивает желаемое состояние с текущим (хранится в State) и вычисляет diff — только изменения передаются в API провайдера. Это аналог terraform plan + terraform apply.

import pulumi_hcloud as hcloud

servers = []
for i in range(3):
    server = hcloud.Server(f"web-{i}",
        server_type="cx21",
        image="ubuntu-22.04",
        location="fsn1"
    )
    servers.append(server)

Создание трёх VPS на Hetzner с одинаковыми параметрами — цикл for вместо копипаста HCL-кода. В Terraform аналогичное решение требует count или for_each с ограниченной логикой.

Архитектура Pulumi

  • Pulumi SDK — языковые библиотеки (пакеты @pulumi/aws, pulumi-hcloud, pulumi_gcp и др.) для управления ресурсами через API провайдеров.
  • Pulumi CLI — команды pulumi up, pulumi preview, pulumi destroy, pulumi stack.
  • Pulumi State — хранение состояния инфраструктуры. Варианты: Pulumi Cloud (управляемый, бесплатно до 1 проекта), S3-совместимое хранилище, Azure Blob, GCS (self-hosted).
  • Pulumi Providers — 120+ провайдеров: AWS, GCP, Azure, Hetzner, DigitalOcean, Kubernetes, GitHub, Cloudflare.

Чем отличается от Terraform

ПараметрPulumiTerraform
ЯзыкPython, TypeScript, Go, C#HCL (собственный DSL)
ЦиклыПолноценные (for, while)Только count и for_each
УсловияПолноценные if/elseTernary + conditional
ПереиспользованиеКлассы, функции, npm/PyPI пакетыTerraform Modules
ТестыОбычные unit-тестыОграниченная поддержка
State managementPulumi Cloud или S3Terraform Cloud или S3
Лицензия (ядро)Apache 2.0 (open-source)BSL 1.1 с 2023 года

История

Pulumi основана в 2017 году Джо Далингером (Joe Duluger) и Эриком Рудером (Eric Rudder, бывший SVP Microsoft). Версия 1.0 вышла в 2019 году. Pulumi привлекла $41 млн в серии C в 2022 году. В ответ на изменение лицензии Terraform в 2023 году (BSL) популярность Pulumi выросла. OpenTofu — форк Terraform под Apache 2.0, конкурирует с обоими инструментами.

Pulumi в хостинге

Pulumi используется для автоматизации создания и управления серверной инфраструктурой: программное создание VPS, настройка DNS-записей, управление файрволами и балансировщиками нагрузки. В отличие от Ansible (управление конфигурацией установленных серверов), Pulumi — инструмент provisioning (создание ресурсов). Оба инструмента дополняют друг друга: Pulumi создаёт VPS через API Hetzner/DigitalOcean, Ansible устанавливает и настраивает ПО. Pulumi Automation API позволяет встраивать IaC-логику в приложения на Python или TypeScript — например, автоматически создавать VPS при регистрации нового клиента.

Компоненты экосистемы Pulumi

Pulumi CrossGuard — политики соответствия на TypeScript или Python, которые проверяют ресурсы перед деплоем. Например, политика «VPS без публичного IP по умолчанию» или «все S3-buckets зашифрованы». Pulumi ESC (Environments, Secrets, Configuration) — централизованное управление секретами и переменными окружения. Pulumi AI — генерация Pulumi-программ на основе описания инфраструктуры на естественном языке. Pulumi Deployments — управляемый CI/CD для Pulumi-программ с GitOps workflow.

Другие термины