É com satisfação que anunciamos o suporte do .NET Core para Pulumi! Este comunicado significa que você pode declarar a infraestrutura de nuvem - incluindo todo o Azure, como Kubernetes, Funções, AppService, Máquinas Virtuais, CosmosDB e muito mais - usando seu idioma .NET favorito, incluindo C #, VB.NET e F #. Isso leva a nuvem inteira ao seu alcance sem precisar sair do editor de código, enquanto usa técnicas de "infraestrutura como código" prontas para produção.

Atualmente, a infraestrutura se tornou mais relevante à medida que recursos modernos de nuvem, como microsserviços, contêineres, sem servidor e armazenamentos de dados, permeiam a arquitetura do aplicativo. O termo "infraestrutura" abrange todos os recursos da nuvem que seu aplicativo precisa executar. As arquiteturas modernas exigem uma reflexão profunda sobre a infraestrutura ao criar seu aplicativo, em vez de esperar até depois. A abordagem da Pulumi ajuda os desenvolvedores e as equipes de infraestrutura a trabalharem juntos para fornecer novas funcionalidades inovadoras que aproveitam tudo o que a nuvem moderna tem a oferecer.
A Pulumi foi lançada há pouco mais de um ano e recentemente alcançou um marco estável de 1,0. Depois de trabalhar com centenas de empresas para colocar aplicativos em nuvem em produção, o .NET subiu rapidamente para um dos recursos mais solicitados pela comunidade da Pulumi. Especialmente porque muitos de nós da equipe Pulumi somos ex-pats do .NET, hoje estamos felizes em disponibilizar o Pulumi no .NET Core para suas necessidades de engenharia em nuvem.
O que é Pulumi?
O Pulumi permite que você use idiomas reais para expressar as necessidades de infraestrutura de seu aplicativo, usando uma técnica poderosa chamada "infraestrutura como código". Usando a infraestrutura como código, você declara a infraestrutura desejada e um mecanismo a provisiona para você, para que seja automatizado e fácil de replicar e robusto o suficiente para exigir requisitos de produção. A Pulumi leva essa abordagem um passo adiante, alavancando linguagens reais e tornando os padrões modernos de infraestrutura em nuvem, como contêineres e programas sem servidor, de primeira classe e fáceis.
Com o Pulumi for .NET, você pode:
- Declare a infraestrutura usando C #, VB.NET ou F #.
- Crie, atualize ou exclua automaticamente recursos da nuvem usando a infraestrutura da Pulumi como mecanismo de código, removendo apontar e clicar manualmente na interface do usuário do Azure e nos scripts ad-hoc.
- Use seus IDEs e ferramentas favoritos, incluindo o Visual Studio e o Visual Studio Code, aproveitando recursos como preenchimento automático, refatoração e documentação interativa.
- Detecte erros desde o início com erros de compilador padrão, analisadores Roslyn e um mecanismo de política específico da infraestrutura para impor segurança, conformidade e práticas recomendadas.
- Reutilize qualquer biblioteca NuGet existente ou distribua a sua própria, seja para práticas recomendadas de infraestrutura, produtividade ou apenas padrões gerais de programação.
- Implante de forma contínua, previsível e confiável usando os Pipelines do Azure DevOps, as Ações do GitHub ou uma das dezenas de integrações.
- Crie aplicativos de nuvem escaláveis usando tecnologias nativas clássicas da nuvem de infraestrutura, como Kubernetes, contêineres do Docker, funções sem servidor e bancos de dados altamente escaláveis, como o CosmosDB, em sua experiência de desenvolvimento principal, aproximando-os do código do aplicativo.
O SDK de código aberto gratuito da Pulumi, que inclui uma CLI e uma variedade de bibliotecas, habilita esses recursos. O Pulumi também oferece recursos premium para equipes que desejam usar o Pulumi na produção, como a integração do Azure Active Directory para identidade e políticas avançadas.
Um exemplo: banco de dados global com aplicativo sem servidor
Digamos que queremos criar um novo aplicativo que use o Azure CosmosDB para distribuição global de dados, para que o desempenho seja ótimo para os clientes, não importa em que parte do mundo eles estejam, com um aplicativo C # sem servidor que seja dimensionado automaticamente ao lado do banco de dados. Normalmente, usamos outras ferramentas para criar a infraestrutura, como JSON, YAML, uma DSL ou apontar e clicar manualmente no console do Azure. Essa abordagem é paritária para o curso, mas também assustadora - é complexa, irrepetível e significa que precisamos de um especialista em infraestrutura apenas para começar.
A abordagem Pulumi é apenas escrever código em nossa linguagem .NET favorita e a ferramenta Pulumi cuidará do resto. Por exemplo, esse código C # cria um banco de dados do Azure CosmosDB com um Azure AppService FunctionApp sem servidor que é dimensionado automaticamente ao lado do banco de dados:
using System; using System.Collections.Generic; using Pulumi; using Pulumi.Azure.AppService; using Pulumi.Azure.Core; using Pulumi.Azure.CosmosDB; class Program { static Task<int> Main(string[] args) { return Deployment.RunAsync(() => { var locations = new[] { "WestUS", "WestEurope", "SouthEastAsia" }; var rg = new ResourceGroup("myapp-rg", new ResourceGroupArgs { Location = locations[0], }); var app = new CosmosApp("myapp", new CosmosAppArgs { ResourceGroup = resourceGroup, Locations = locations, DatabaseName = "pricedb", ContainerName = "prices", Factory = (location, db) => { var func = new ArchiveFunctionApp("myapp-func", new ArchiveFunctionAppArgs { Location = location, Archive = new FileArchive("app"), AppSettings = new Dictionary<string, string> { ["COSMOSDB_ENDPOINT"] = db.Endpoint, }, }, ); return func.App.ID; }, }); }); }
veja o Program.cs bruto hospedado no
GitHubDepois de escrever esse código, você executa a CLI do Pulumi com o comando pulumi up e ele primeiro mostra uma visualização dos recursos de infraestrutura que planeja criar. Após a confirmação, ele implantará todo o aplicativo e sua infraestrutura necessária em apenas alguns minutos.

Posteriormente, se você precisar fazer alterações, basta editar seu programa, executar novamente a CLI e ele fará as alterações incrementais necessárias para atualizar sua infraestrutura de acordo. Um histórico completo de suas implantações é registrado para que você possa ver facilmente quais alterações foram feitas.
Por que o .NET também é ótimo para infraestrutura?
Muitos de nós adoram usar o .NET para criar nossos aplicativos. Por que não usá-lo também para infraestrutura como código? De fato, já vimos acima algumas das vantagens acima em fazê-lo. Muitos deles provavelmente são evidentes se você já conhece e ama o .NET, no entanto, vamos recapitular brevemente.
Ao usar qualquer linguagem .NET, você obtém muitos recursos úteis para o seu código de infraestrutura:
- Familiaridade: Não há necessidade de aprender DSLs ou linguagens de modelos de marcação.
- Expressividade: use loops, condicionais, correspondência de padrões, LINQ, código assíncrono e muito mais para criar dinamicamente a infraestrutura que atenda às necessidades do ambiente de destino.
- Abstração: encapsule padrões comuns em classes e funções para ocultar a complexidade e evitar copiar e colar o mesmo padrão repetidamente.
- Compartilhamento e reutilização: entre em uma comunidade de aplicativos em nuvem e especialistas em infraestrutura, compartilhando e reutilizando as bibliotecas NuGet com sua equipe ou com a comunidade global.
- Produtividade: use seu IDE favorito e obtenha a conclusão de instruções, vá para definição, verificação de erro em tempo real, refatoração, análise estática e documentação interativa.
- Organização do projeto: use técnicas comuns de estruturação de código, como assemblies e namespaces, para gerenciar sua infraestrutura em um ou mais projetos.
- Ciclo de vida do aplicativo: use sistemas e técnicas ALM existentes para gerenciar e implantar seus projetos de infraestrutura, incluindo controle de origem, revisão de código, teste e integração contínua (CI) e entrega (CD).
A Pulumi desbloqueia o acesso a todo o ecossistema .NET - algo que é fácil de tomar como garantido, mas está ausente de outras soluções baseadas em scripts JSON, YAML, DSLs ou CLI. Ter acesso a um idioma completo era essencial para ativar o exemplo do CosmosApp acima, que é um componente personalizado que usa internamente classes, loops, lambdas e até LINQ. Essa abordagem também ajuda os desenvolvedores e operadores a trabalharem melhor juntos usando uma base compartilhada. Adicione tudo o que foi dito acima e faça as coisas com mais rapidez e confiabilidade.
Participe da comunidade e comece
Hoje, lançamos a primeira visualização do Pulumi para .NET, incluindo suporte para todo o conjunto de serviços do Azure. Para experimentar
o Pulumi ,
visite a página inicial do Pulumi for .NET .
Lá você encontrará várias instruções sobre instalação e introdução ao Pulumi for .NET. Os seguintes recursos fornecem informações úteis adicionais:
Embora o Pulumi for .NET esteja listado no status "preview", ele suporta todos os recursos mais essenciais do modelo de programação Pulumi (e o restante está a caminho). Nosso objetivo é obter feedback e nas próximas semanas, e trabalharemos duro para melhorar a experiência do .NET em todos os aspectos, incluindo mais exemplos e melhor documentação.
Entre
para a comunidade do Slack para discutir seus cenários, idéias e obter qualquer assistência necessária da equipe e de outros usuários finais. Pulumi também é de
código aberto no GitHub .
Este é um dia emocionante para a equipe Pulumi e nossa comunidade. O Pulumi foi iniciado por algumas das pessoas mais antigas do .NET e, portanto, é ótimo voltar às nossas raízes e conectar-se à comunidade .NET, ajudando desenvolvedores, equipes de infraestrutura e operadores a construir juntos melhores softwares em nuvem.
Esperamos ansiosamente ver os novos e surpreendentes aplicativos em nuvem criados com o Pulumi for .NET!