GitHub Copilot para Pulumi Infrastructure as Code: Padrões de Sugestão
🔍 WiseChecker

GitHub Copilot para Pulumi Infrastructure as Code: Padrões de Sugestão

O GitHub Copilot pode gerar código Pulumi para infraestrutura em nuvem, mas suas sugestões muitas vezes precisam de orientação cuidadosa. Sem contexto adequado, o Copilot pode propor configurações incorretas de recursos ou omitir propriedades obrigatórias. Este artigo explica os padrões específicos que o Copilot segue ao gerar programas Pulumi em TypeScript, Python e C#. Você aprenderá como orientar o Copilot para código de infraestrutura preciso e como evitar armadilhas comuns.

Principais Conclusões: Padrões de Sugestão do Copilot para Pulumi

  • Comentários inline com nomes de recursos e provedor de nuvem: Diga ao Copilot o tipo exato de recurso Azure, AWS ou GCP para gerar imports e construtores corretos.
  • Valores de propriedade explícitos no código adjacente: Forneça valores de exemplo como região, tamanho ou SKU para que o Copilot infira o schema correto.
  • Variáveis de saída estruturadas e referências de stack: Defina nomes de saída e referências de stack antes do bloco de recursos para orientar o Copilot a referências cruzadas válidas.

ADVERTISEMENT

Como o Copilot Gera Código Pulumi

O Copilot usa o contexto do código ao redor e os dados do servidor de linguagem para prever as próximas linhas. Para Pulumi, isso significa que ele lê declarações de import existentes, nomes de variáveis e quaisquer comentários que você escreva. O Copilot não possui um conjunto de dados de treinamento especial para Pulumi. Ele depende de padrões vistos em milhões de repositórios públicos do GitHub. Quando você escreve um comentário como // Crie um grupo de recursos do Azure, o Copilot busca código que siga esse padrão e sugere a chamada do SDK do Pulumi.

Padrão de Construtor de Recurso

A sugestão mais comum é o construtor de recurso. O Copilot normalmente gera:

const resourceGroup = new azure.core.ResourceGroup("example", {
    location: "West US",
});

O Copilot infere o nome da classe a partir do comentário. Se você escrever // Conta de armazenamento, ele pode sugerir new azure.storage.Account. O padrão funciona melhor quando você inclui o prefixo do provedor de nuvem no comentário.

Padrão de Preenchimento de Propriedades

Depois de digitar a chave de abertura de um construtor de recurso, o Copilot sugere nomes e valores de propriedades. Ele aprende com o tipo de recurso que você importou. Para buckets S3 da AWS, ele sugere bucket, acl e tags. Para VMs do Azure, sugere vmSize, osDisk e networkInterfaces. O Copilot nem sempre inclui propriedades obrigatórias, então você deve verificar a documentação oficial do Pulumi.

Padrão de Referência Cruzada entre Recursos

Quando você define dois recursos, o Copilot pode sugerir passar a saída de um como entrada para outro. Por exemplo, após criar um grupo de recursos, o Copilot pode sugerir:

const containerGroup = new azure.containerservice.Group("example", {
    resourceGroupName: resourceGroup.name,
    location: resourceGroup.location,
});

Esse padrão só aparece se você já definiu a variável do recurso de origem no mesmo escopo. Se você renomear a variável, o Copilot pode não atualizar a referência.

Passos para Melhorar as Sugestões do Copilot para Pulumi

  1. Escreva comentários explícitos antes de cada bloco de recurso
    Inclua o provedor de nuvem e o tipo de recurso no comentário. Por exemplo: // Instância EC2 da AWS usando Pulumi. Isso informa ao Copilot qual SDK importar e qual classe instanciar.
  2. Adicione um valor de propriedade de exemplo após o comentário
    Escreva uma linha como const region = "us-east-1"; diretamente acima do bloco de recurso. O Copilot usa isso como dica para a propriedade de localização.
  3. Importe o SDK do Pulumi explicitamente no topo do arquivo
    Escreva import * as azure from "@pulumi/azure"; ou o equivalente para sua linguagem. Sem o import, o Copilot pode sugerir nomes de classes inexistentes.
  4. Defina variáveis de saída antes do bloco de recurso
    Escreva export const bucketName = bucket.id; após a criação do recurso. O Copilot usa isso para sugerir a propriedade de saída correta.
  5. Use uma ordem consistente de propriedades
    Sempre coloque as propriedades obrigatórias primeiro, depois as opcionais. O Copilot aprende a ordem a partir dos seus blocos de recurso anteriores e a repete.
  6. Revise todas as propriedades sugeridas em relação ao schema do Pulumi
    O Copilot pode sugerir uma propriedade que não existe para um determinado tipo de recurso. Abra a documentação do Pulumi no seu navegador e verifique o nome da propriedade.

ADVERTISEMENT

Se o Copilot Ainda Sugerir Código Pulumi Incorreto

O Copilot Sugere uma Classe de Recurso Inexistente

Isso acontece quando o comentário é muito vago ou quando o import está ausente. Corrija escrevendo o nome exato da classe da documentação do Pulumi no comentário. Por exemplo, // azure.compute.VirtualMachine em vez de // VM do Azure. Em seguida, deixe o Copilot autocompletar o construtor.

O Copilot Omite Propriedades Obrigatórias

O Copilot frequentemente deixa de fora propriedades como resourceGroupName ou sku porque prevê propriedades opcionais primeiro. Após o Copilot sugerir um bloco, adicione manualmente as propriedades obrigatórias ausentes. Uma maneira rápida é digitar o nome da propriedade e deixar o Copilot sugerir o valor.

O Copilot Sugere Referências de Saída Incorretas

Se você renomear uma variável de recurso após o Copilot gerar o código, as referências de saída podem ainda apontar para o nome antigo. Exclua a linha de saída e deixe o Copilot regenerá-la. A nova sugestão usará o nome de variável atualizado.

O Copilot Não Sugere Nenhum Código Pulumi

Isso geralmente significa que a linguagem do arquivo não é reconhecida ou o SDK do Pulumi não está importado. Verifique se a extensão do arquivo está correta para sua linguagem. Além disso, garanta que o pacote NuGet do Pulumi ou o módulo npm esteja instalado no seu projeto. O Copilot só sugere código quando detecta o import do SDK.

Copilot Pro vs GitHub Copilot Free: Diferenças para Pulumi

Item Copilot Pro GitHub Copilot Free
Tamanho da janela de contexto Até 4.000 tokens de contexto de arquivo Até 2.000 tokens de contexto de arquivo
Consciência de múltiplos arquivos Sugere entre arquivos abertos no workspace Apenas o arquivo atual e arquivos adjacentes
Suporte a chat inline Disponível no VS Code, JetBrains e Neovim Limitado ao VS Code
Instruções personalizadas Suporta políticas de nível organizacional Sem suporte a instruções personalizadas
Qualidade das sugestões Pulumi Melhores referências cruzadas devido ao contexto maior Sugestões mais isoladas, frequentemente sem referências

Para projetos Pulumi grandes com muitos recursos interdependentes, o Copilot Pro fornece sugestões mais precisas porque pode ver o arquivo inteiro e arquivos relacionados. O Copilot Free funciona bem para stacks pequenas de arquivo único.

Para aproveitar ao máximo o Copilot para Pulumi, sempre comece com um comentário claro que nomeie o tipo exato de recurso e o provedor de nuvem. Adicione valores de propriedade de exemplo nas linhas acima do bloco de recurso. Defina variáveis de saída antecipadamente. Após o Copilot gerar um bloco, verifique cada propriedade em relação ao schema oficial do Pulumi. Use o Copilot Pro para projetos com mais de cinco recursos para se beneficiar da janela de contexto maior. Teste seu código gerado com pulumi preview antes de implantar.

ADVERTISEMENT