439 lines
28 KiB
HTML
439 lines
28 KiB
HTML
{{ define "hero" }}
|
||
{{ partial "hero" (dict "title" "Automation API") }}
|
||
{{ end }}
|
||
|
||
{{ define "main" }}
|
||
<section id="overview" class="container mx-auto my-16 lg:mt-16 lg:mb-8 px-6">
|
||
<div class="lg:flex">
|
||
<div class="lg:w-1/2 lg:order-last mb-8 lg:mb-0 relative h-full">
|
||
<div class="shape-background automation-video">
|
||
<div class="shape-container">
|
||
<div class="circle-left"></div>
|
||
<div class="circle-right"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="rounded-xl shadow-2xl relative h-0 overflow-hidden" style="padding-bottom: 50.25%;">
|
||
<iframe
|
||
src="//www.youtube.com/embed/kFHb8f2fk9k?rel=0"
|
||
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;"
|
||
allowfullscreen=""
|
||
title="Automation API Overview"
|
||
srcdoc="<style>*{padding:0;margin:0;overflow:hidden}html,body{height:100%}img{position:absolute;width:100%;top:0;bottom:0;margin:auto}</style><a href=https://www.youtube.com/embed/kFHb8f2fk9k?autoplay=1><img src='/images/video-cards/automation-api-demo.png' alt='Introduction to Pulumi: Universal Infrastructure as Code'></a>"
|
||
></iframe>
|
||
</div>
|
||
</div>
|
||
<div class="lg:w-1/2 lg:pr-16">
|
||
<h3>Harness the full power of Infrastructure as Code</h3>
|
||
<p>
|
||
Pulumi Automation API exposes the full power of infrastructure as code through a programmatic interface, instead of through CLI commands. Automation API lets
|
||
you use the Pulumi engine as an SDK, enabling you to create software that can create, update, configure, and destroy infrastructure dynamically. This enables
|
||
you to build custom cloud interfaces that are tailored to your team, organization, or customers.
|
||
</p>
|
||
<div class="my-8">
|
||
<a class="btn-primary" href="{{ relref . "/docs/using-pulumi/automation-api/" }}">Learn More</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="benefits" class="px-4 relative lg:mt-16">
|
||
<div class="shape-background automation-benefits-section">
|
||
<div class="shape-container">
|
||
<div class="circle-left"></div>
|
||
<div class="circle-right"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="container mx-auto">
|
||
<h2 class="text-center">The benefits of using Automation API</h2>
|
||
<div class="md:flex md:flex-wrap mb-8 px-6 pb-6">
|
||
<div class="md:w-1/2 p-4">
|
||
<div class="card p-6 h-full bg-white">
|
||
<div class="text-center">{{ partial "color-icon.html" (dict "icon" "code" "icon_color" "blue") }}</div>
|
||
<h5>Programmatic Infrastructure as Code</h5>
|
||
<p>
|
||
Use the Pulumi engine as a strongly typed SDK in your application code, enabling it to call functions that can provision and configure infrastructure on
|
||
any cloud.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="md:w-1/2 p-4">
|
||
<div class="card p-6 h-full bg-white">
|
||
<div class="text-center">{{ partial "color-icon.html" (dict "icon" "guage" "icon_color" "yellow") }}</div>
|
||
<h5>Scale the distribution of best practices</h5>
|
||
<p>
|
||
Codify best practices for cloud infrastructure within custom applications or tools that allow your organization’s developers to easily provision and use
|
||
approved infrastructure.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="md:w-1/2 p-4">
|
||
<div class="card p-6 h-full bg-white">
|
||
<div class="text-center">{{ partial "color-icon.html" (dict "icon" "puzzle" "icon_color" "salmon") }}</div>
|
||
<h5>Build abstractions and custom interfaces</h5>
|
||
<p>
|
||
Automation API enables you to build custom cloud interfaces for your technical end users. For example, build self-service developer portals, CLIs,
|
||
frameworks, and CI/CD workflows.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="md:w-1/2 p-4">
|
||
<div class="card p-6 h-full bg-white">
|
||
<div class="text-center">{{ partial "color-icon.html" (dict "icon" "cloud-with-nodes" "icon_color" "purple") }}</div>
|
||
<h5>Manage single-tenant deployments at scale</h5>
|
||
<p>
|
||
Easily build high-scale, SaaS applications that serve customers with single-tenant instances. Automate creating and managing infrastructure for
|
||
thousands of unique customers.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="automation-features" class="relative mt-12">
|
||
<div class="shape-background automation-scenarios">
|
||
<div class="shape-container">
|
||
<div class="circle-left"></div>
|
||
<div class="circle-right"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="container mx-auto mb-16">
|
||
<h2 class="my-12 text-center">Use Cases</h2>
|
||
|
||
<div class="automation-scenarios-carousel-items">
|
||
<span id="self-service" class="hidden"></span>
|
||
<span id="saas" class="hidden"></span>
|
||
<span id="workflow" class="hidden"></span>
|
||
<span id="tooling" class="hidden"></span>
|
||
|
||
<ul id="automation-scenarios-carousel-headers" class="automation-scenarios-carousel-headers">
|
||
<li class="" data-product-carousel-type="self-service">
|
||
<h6 class="my-0 text-black"><a href="#self-service" class="text-black">Self-service infrastructure</a></h6>
|
||
</li>
|
||
<li class="" data-product-carousel-type="saas">
|
||
<h6 class="my-0"><a href="#saas" class="text-gray-500">Single-tenant SaaS instances</a></h6>
|
||
</li>
|
||
<li class="" data-product-carousel-type="workflow">
|
||
<h6 class="my-0"><a href="#workflow" class="text-gray-500">Workflow Orchestration</a></h6>
|
||
</li>
|
||
<li class="" data-product-carousel-type="tooling">
|
||
<h6 class="my-0"><a href="#tooling" class="text-gray-500">Custom Infrastructure Tooling</a></h6>
|
||
</li>
|
||
</ul>
|
||
|
||
<ul class="automation-scenarios-carousel-items-list">
|
||
<li class="w-full pb-3" data-product-carousel-type="self-service">
|
||
<h3 class="lg:hidden text-center">Self-service infrastructure</h3>
|
||
<div class="flex flex-wrap">
|
||
<div class="w-full lg:w-2/3 py-3 px-6">
|
||
<div class="card p-6 bg-white">
|
||
<h5>Overview</h5>
|
||
<p>
|
||
Build developer portals and self-serve platforms that make it easier for your development teams to use cloud infrastructure. Infrastructure
|
||
and security teams can scale their best practices by creating declarative infrastructure and exposing it behind a REST, gRPC, or Custom
|
||
Resource API that developers and operators can easily consume, without needing to understand every underlying resource.
|
||
</p>
|
||
|
||
<h5>Examples</h5>
|
||
<div>
|
||
<p class="font-bold">Pulumipus’ Self-Service Web App Platform</p>
|
||
<p>
|
||
This is a self-service interface for creating customized static sites, databases, virtual machines, and more. The code is open source
|
||
and available on
|
||
<a href="https://github.com/komalali/self-service-platyform" target="_blank" rel="noreferrer noopener" class="link"> GitHub</a>.
|
||
</p>
|
||
</div>
|
||
|
||
<div>
|
||
<p class="font-bold">Python IaC in your Jupyter notebook</p>
|
||
<p>
|
||
Use Pulumi’s Python SDK with Automation API to create infrastructure interactively from a Jupyter notebook. Examples are available on
|
||
<a
|
||
href="https://github.com/pulumi/automation-api-examples/tree/main/python/pulumi_via_jupyter"
|
||
target="_blank"
|
||
rel="noreferrer noopener"
|
||
class="link"
|
||
>
|
||
GitHub</a
|
||
>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="w-full lg:w-1/3 lg:order-first py-3 px-6 lg:p-3">
|
||
<div class="card p-3 pb-8 relative bg-white">
|
||
<div class="w-2/3 mx-auto my-2 px-6">
|
||
<a href="{{ relref . "/case-studies/sans-institute" }}" class="link">
|
||
{{ partial "customer-logo.html" (dict "logo" "sans") }}
|
||
</a>
|
||
</div>
|
||
<p>
|
||
SANS Institute provides cybersecurity training and certification. It used Pulumi Automation API to build a self-service platform that
|
||
enables instructors to provision virtual learning environments using an automated process.
|
||
</p>
|
||
|
||
<div class="card-cta-btn text-center">
|
||
<a href="{{ relref . "/case-studies/sans-institute" }}" class="btn-secondary">Learn More</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="w-full pb-3 lg:hidden" data-product-carousel-type="saas">
|
||
<h3 class="lg:hidden text-center mt-16">Single-tenant SaaS instances</h3>
|
||
<div class="flex flex-wrap">
|
||
<div class="w-full lg:w-2/3 py-3 px-6">
|
||
<div class="card p-6 bg-white">
|
||
<h5>Overview</h5>
|
||
<p>
|
||
Simplify the management of multi-instance SaaS architectures where you need single-tenant infrastructure for each customer. You can create
|
||
declarative infrastructure defined by your best practices and expose it behind a REST, gRPC, or Custom Resource API that can be consumed by
|
||
your applications.
|
||
</p>
|
||
|
||
<h5>Examples</h5>
|
||
<div>
|
||
<p class="font-bold">Infrastructure as RESTful resources</p>
|
||
<p>
|
||
This example demonstrates how to run Automation API in an HTTP server to expose infrastructure as RESTful resources. The code is
|
||
available on GitHub in
|
||
<a
|
||
href="https://github.com/pulumi/automation-api-examples/blob/main/go/pulumi_over_http"
|
||
target="_blank"
|
||
rel="noreferrer noopener"
|
||
class="link"
|
||
>Go</a
|
||
>,
|
||
<a
|
||
href="https://github.com/pulumi/automation-api-examples/blob/main/nodejs/pulumiOverHttp-ts"
|
||
target="_blank"
|
||
rel="noreferrer noopener"
|
||
class="link"
|
||
>Node.js</a
|
||
>, and
|
||
<a
|
||
href="https://github.com/pulumi/automation-api-examples/blob/main/python/pulumi_over_http"
|
||
target="_blank"
|
||
rel="noreferrer noopener"
|
||
class="link"
|
||
>Python</a
|
||
>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="w-full lg:w-1/3 lg:order-first py-3 px-6 lg:p-3">
|
||
<div class="card p-3 pb-8 relative bg-white">
|
||
<div class="w-2/3 mx-auto my-2 px-6">
|
||
{{ partial "customer-logo.html" (dict "logo" "cockroach-labs") }}
|
||
</div>
|
||
<p>
|
||
Cockroach Labs provides the CockroachDB database-as-a-service. It uses Pulumi Automation API to manage Kubernetes clusters behind the scenes
|
||
on behalf of their customers.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="w-full pb-3 lg:hidden" data-product-carousel-type="workflow">
|
||
<h3 class="lg:hidden text-center mt-16">Infrastructure Workflow Orchestration</h3>
|
||
<div class="flex flex-wrap">
|
||
<div class="w-full lg:w-2/3 py-3 px-6">
|
||
<div class="card p-6 bg-white">
|
||
<h5>Overview</h5>
|
||
<p>
|
||
Manage complicated infrastructure tasks like database migrations, microservice deployments, schema migrations, and more. Distributed systems
|
||
and microservices incur a significant coordination burden, and dependencies across API boundaries are difficult to track and maintain. With
|
||
the Automation API, you can use a strongly typed, familiar programming environment to orchestrate multi-stack deployments, codify
|
||
dependencies, and enable safe incremental deployment.
|
||
</p>
|
||
|
||
<h5>Examples</h5>
|
||
<div>
|
||
<p class="font-bold">Database Migration</p>
|
||
<p>
|
||
This example provisions an AWS Aurora SQL database and executes a database "migration" using the resulting connection info. The code is
|
||
available on GitHub in
|
||
<a
|
||
href="https://github.com/pulumi/automation-api-examples/blob/main/go/database_migration"
|
||
target="_blank"
|
||
rel="noreferrer noopener"
|
||
class="link"
|
||
>Go</a
|
||
>,
|
||
<a
|
||
href="https://github.com/pulumi/automation-api-examples/blob/main/nodejs/databaseMigration-ts"
|
||
target="_blank"
|
||
rel="noreferrer noopener"
|
||
class="link"
|
||
>Node.js</a
|
||
>,
|
||
<a
|
||
href="https://github.com/pulumi/automation-api-examples/blob/main/python/database_migration"
|
||
target="_blank"
|
||
rel="noreferrer noopener"
|
||
class="link"
|
||
>Python</a
|
||
>, and
|
||
<a
|
||
href="https://github.com/pulumi/automation-api-examples/blob/main/dotnet/DatabaseMigration"
|
||
target="_blank"
|
||
rel="noreferrer noopener"
|
||
class="link"
|
||
>.NET</a
|
||
>.
|
||
</p>
|
||
</div>
|
||
|
||
<div>
|
||
<p class="font-bold">Multi-Stack Orchestration</p>
|
||
<p>
|
||
This example shows how to use Automation API to tame the complexity of multiple stacks with dependent stack outputs. The code is
|
||
available on
|
||
<a
|
||
href="https://github.com/pulumi/automation-api-examples/blob/main/go/multi_stack_orchestration"
|
||
target="_blank"
|
||
rel="noreferrer noopener"
|
||
class="link"
|
||
>GitHub</a
|
||
>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="w-full lg:order-first lg:w-1/3 py-3 px-6 lg:p-3">
|
||
<div class="card p-3 pb-8 relative bg-white">
|
||
<div class="w-2/3 mx-auto my-2 px-6">
|
||
<a href="{{ relref . "/case-studies/lemonade" }}" class="link">
|
||
{{ partial "customer-logo.html" (dict "logo" "lemonade") }}
|
||
</a>
|
||
</div>
|
||
<p>
|
||
The Automation API allowed Lemonade further automate its deployment process. For example: customizing runners for multi-step provisioning,
|
||
automating recovery for well-known errors like fixing state for interrupted jobs and managing approvals for sensitive operations like
|
||
deleting old resources.
|
||
</p>
|
||
|
||
<div class="card-cta-btn text-center">
|
||
<a href="{{ relref . "/case-studies/lemonade" }}" class="btn-secondary">Learn More</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
|
||
<li class="w-full pb-3 lg:hidden" data-product-carousel-type="tooling">
|
||
<h3 class="lg:hidden text-center mt-16">Custom Infrastructure Tooling</h3>
|
||
<div class="flex flex-wrap">
|
||
<div class="w-full lg:w-2/3 py-3 px-6">
|
||
<div class="card p-6 bg-white">
|
||
<h5>Overview</h5>
|
||
<p>
|
||
Build user-friendly infrastructure tooling such as CLIs, higher-level frameworks, CI/CD workflows, and even desktop apps. Infrastructure
|
||
teams can use Automation API to build self-service tools for building, deploying, and managing infrastructure and offer the right levels of
|
||
complexity and customization for the tool’s target audience.
|
||
</p>
|
||
|
||
<h5>Examples</h5>
|
||
<div>
|
||
<p class="font-bold">Ploy, a CLI in Go</p>
|
||
<p>
|
||
Ploy is a Heroku-like interface for deploying Docker images to a Kubernetes cluster. Ploy combines Pulumi with a Go CLI using Promptui.
|
||
It is
|
||
<a href="https://github.com/jaxxstorm/ploy" target="_blank" rel="noreferrer noopener" class="link"> open source on GitHub</a>.
|
||
</p>
|
||
</div>
|
||
|
||
<div>
|
||
<p class="font-bold">Pulumi GitHub Action for CI/CD</p>
|
||
<p>
|
||
Pulumi’s GitHub Action is powered by Automation API and it gives you complete control over Pulumi in your CI/CD workflows.
|
||
<a class="link" href="{{ relref . "/blog/supercharging-our-github-action-with-the-pulumi-automation-api" }}"
|
||
>Learn how it was created</a
|
||
>
|
||
or see the
|
||
<a href="https://github.com/pulumi/actions" target="_blank" rel="noreferrer noopener" class="link"> code on GitHub</a>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="w-full lg:w-1/3 lg:order-first py-3 px-6 lg:p-3">
|
||
<div class="card p-3 pb-8 relative bg-white">
|
||
<div class="w-2/3 mx-auto my-2 px-6">
|
||
<a href="{{ relref . "/case-studies/mercedes-benz" }}" class="link">
|
||
{{ partial "customer-logo.html" (dict "logo" "mercedes-benz") }}
|
||
</a>
|
||
</div>
|
||
<p>
|
||
Automation API powers custom infrastructure platforms for organizations like Mercedes-Benz Research & Development North America. These
|
||
platforms empower their teams to stand up the cloud infrastructure that they need and when they need it.
|
||
</p>
|
||
|
||
<div class="card-cta-btn text-center">
|
||
<a href="{{ relref . "/case-studies/mercedes-benz" }}" class="btn-secondary">Learn More</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Logos -->
|
||
<section class="container mx-auto text-center my-0 mb-16 lg:mt-24 overflow-hidden px-3">
|
||
<h3 class="text-center mb-10 hidden lg:block">{{ .Params.customer_logos.title }}</h3>
|
||
<h6 class="text-center mb-10 lg:hidden">{{ .Params.customer_logos.title }}</h6>
|
||
<pulumi-swiper loop="true" autoplay="true" autoplay-delay="2500" speed="2000">
|
||
{{ range $logoBunch := .Params.customer_logos.logos }}
|
||
<pulumi-swipeable>
|
||
<div class="flex flex-wrap items-center justify-center">
|
||
{{ range $logo := $logoBunch.items }}
|
||
<div class="w-1/3 lg:w-1/5 px-2 py-4 lg:py-0 lg:px-8">
|
||
{{ partial "customer-logo.html" (dict "logo" $logo "hoverable" true) }}
|
||
</div>
|
||
{{ end }}
|
||
</div>
|
||
</pulumi-swipeable>
|
||
{{ end }}
|
||
</pulumi-swiper>
|
||
</section>
|
||
|
||
<section class="container mx-auto mb-16">
|
||
<div class="lg:flex items-stretch">
|
||
<div class="w-full lg:w-1/2 px-4 py-2 lg:p-8 lg:px-4 text-center">
|
||
<div class="border lg:border-none lg:shadow-2xl p-8 lg:px-24 lg:pt-4 g:pb-12 rounded-xl bg-white">
|
||
<h4>More Examples</h4>
|
||
<p class="mb-24">Visit our GitHub repository to see more end-to-end examples of how you can use Automation API.</p>
|
||
<a href="https://github.com/pulumi/automation-api-examples" target="_blank" rel="noreferrer noopener" class="btn-secondary">View on GitHub</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="w-full lg:w-1/2 px-4 py-2 lg:p-8 lg:px-4 text-center">
|
||
<div class="border lg:border-none lg:shadow-2xl p-8 lg:px-24 lg:pt-4 g:pb-12 rounded-xl bg-white">
|
||
<h4>Workshop</h4>
|
||
<p class="mb-16 pb-1">Watch as we build a self-service infrastructure platform with Python and Flask with the Automation API</p>
|
||
<a href="{{ relref . "/resources/getting-started-with-automation-api" }}" class="btn-secondary">Join now</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="w-full bg-violet-600 rounded shadow p-16 pt-24 text-center">
|
||
<h2 class="text-white">Get started today</h2>
|
||
<p class="text-white">To get started with Pulumi Automation API, visit the user guide in our documentation.</p>
|
||
<div class="mt-16">
|
||
<a class="btn-secondary" href="{{ relref . "/docs/using-pulumi/automation-api/getting-started-automation-api" }}">View the Guide</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
{{ end }}
|