2023-05-15 15:25:28 -07:00

439 lines
28 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{ 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 organizations 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 Pulumis 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 tools 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>
Pulumis 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 }}