Automatizar Módulos do PowerShell com Pacotes Chocolatey

Neste post do blog, aprenda como criar um pacote Chocolatey (um popular gerenciador de pacotes para Windows).

À medida que a automação se torna mais uma necessidade do que um luxo, é importante que nós, profissionais de TI, busquemos maneiras melhores de realizar tarefas rotineiras; e uma dessas tarefas é a instalação de software. Em vez de baixar um MSI, dar um clique duplo e seguir o assistente, seria prudente pensar em uma maneira melhor.

Quase todo software possui opções de linha de comando para instalação silenciosa, e se você fizer pesquisa suficiente, poderá descobrir as opções corretas. Sua instalação pode parecer algo assim:

> install.exe /q /n /e /noreboot

Você vai se lembrar de todas essas opções? Provavelmente não. Você poderia colocar essas opções em um arquivo de lote e depois esquecer onde colocou esse script ou poderia fazer isso:

Install-Package -Name AcmeSoftware

Agora isso é algo que pode ser lembrado facilmente.

Mas como você chegaria a esse ponto? A resposta é um repositório NuGet e um pacote NuGet. NuGet é uma tecnologia tradicional de empacotamento de software que permite embrulhar essencialmente um software, que pode então ser armazenado em um repositório, baixado e instalado a qualquer momento. Chocolatey é uma ferramenta open source favorita que utiliza NuGet para permitir que administradores de TI baixem e instalem software silenciosamente.

Neste artigo, vou presumir que você já tem um repositório NuGet configurado ou sabe para onde enviar seu pacote.

Vamos pegar um software e empacotá-lo em um pacote NuGet para uso em um desses repositórios.

Instalando o Chocolatey

Como o Chocolatey não é instalado por padrão em um sistema operacional Windows, é necessário baixá-lo e instalá-lo. Isso pode ser feito executando o seguinte comando em um console do PowerShell:

PS> iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Criando um arquivo NUSPEC

Para criar um pacote Chocolatey, primeiro é necessário criar um arquivo NUSPEC. Um arquivo NUSPEC é um manifesto de pacote XML que descreve o conteúdo do pacote. Este arquivo NUSPEC deve estar em um formato específico. Aqui está um exemplo de arquivo NUSPEC usando apenas os elementos obrigatórios:

<?xml version="1.0" encoding="utf-8"?>
    <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
      <metadata>
        <id>MySpecialSoftware</id>
        <version>1.0</version>
        <description>Some software I'm packaging up.</description>
        <authors>Adam Bertram</authors>
      </metadata>
    </package>

Para obter uma descrição completa de todas as tags que podem ser usadas, consulte a referência NUSPEC.

Como Criar um Pacote Chocolatey

Em seguida, crie o pacote. Para fazer isso, use o comando Install-ChocolateyInstallPackage. Vamos supor que o software que estamos empacotando seja um arquivo EXE e as opções para instalá-lo silenciosamente sejam /s. Devemos enviar a localização do arquivo juntamente com as opções silenciosas para o comando.

PS> Install-ChocolateyPackage -PackageName 'AcmeSoftware' -FileType 'exe' -File 'C:\install.exe' -SilentArgs '/s'

Este comando criará o pacote. Em seguida, será necessário empacotar o pacote usando o executável choco.

PS> choco pack

Depois que o software foi empacotado, ele estará em um formato que permite a publicação em um repositório Chocolatey de sua escolha.

Resumo

Esse processo pode ser repetido para cada software que você precisa implantar através do Chocolatey. Como você pode ver, existem apenas alguns passos adicionais que devem ser realizados para preparar o software para o Chocolatey. Fazendo isso agora, você poderá voltar a realizar tarefas importantes em vez de descobrir como implantar software em várias máquinas ao mesmo tempo!

Se você deseja se aprofundar mais depois de aprender como criar pacotes do Chocolatey, não deixe de conferir a documentação do Chocolatey.

Learning How to Create Chocolatey Package

Source:
https://adamtheautomator.com/create-chocolatey-package/