Olá, como vai você?
Por aqui as coisas andam bem agitadas! Mas estão bem. Estou muito empolgado com o projeto que estou para lançar, falamos nisso depois.
Hoje vou falar do Chocolatey, diferente do material que se encontra por aí, vou ser um pouco mais objetivo. Vou falar em como instalá-lo em sua infra, quando sua máquina não possui acesso à internet. É o caso de servidores.
Desde o post Coisas úteis que um dev nunca deve deixar de ter, quando me deparei com o Chocolatey e foi paixão à primeira vista. Vale a pena dar uma olhada nesse projeto.
Bom, no meu cenário, minhas aplicações são pacotes chocolatey, hospedadas em um repositório privado, dentro da minha rede, portanto faz todo sentido esse post!
A instalação padrão
Logo no site, você encontra o comando padrão para a instalação
c:> @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%chocolateybin
Com esse comando, o script install.ps1 realiza todas as operações necessárias para o setup. Desde o download até a configuração de todo o ambiente.
Fazendo download do script, você verá que ele realiza apenas 2 downloads:
... # variables $url = "http://chocolatey.org/api/v2/package/chocolatey/" ... $file = Join-Path $tempDir "chocolatey.zip" ... Download-File $url $file ... $7zaExe = Join-Path $tempDir '7za.exe' ... Download-File 'http://chocolatey.org/7za.exe' "$7zaExe"
Bom, todo o resto acontece local, é sob essas premissas que vamos brincar com o powershell e com o chocolatey hoje!
A instalação desconectada
Vamos hospedar os instaladores em um servidor HTTP e fazer uma ligeira modificação no script install.ps1
Preparando a hospedagem da instalação do Chocolatey
Faça download dos pacotes necessários para um servidor HTTP cuja máquina de destino (para instalação do chocolatey) possua conectividade.
No servidor HTTP, execute o comando abaixo no PowerShell
function Download-File { param ( [string]$url, [string]$file ) Write-Host "Downloading $url to $file" $downloader = new-object System.Net.WebClient $downloader.DownloadFile($url, $file) } $url = "http://chocolatey.org/7za.exe" $file = "C:inetpubwwwroot7za.exe" Download-File $url $file $url = "http://chocolatey.org/api/v2/package/chocolatey/" $file = "C:inetpubwwwrootchocolatey.zip" Download-File $url $file
Agora no root do seu default website do IIS, você terá 2 novos arquivos: chocolatey.zip e 7za.exe
Modificando o Script install.ps1
Baixe o arquivo install.ps1 e faça 2 replaces:
De http://chocolatey.org/api/v2/package/chocolatey/ por http://IPouNomeDoServidor/chocolatey.zip
e
De http://chocolatey.org/7za.exe Por http://IPouNomeDoServidor/7za.exe
Finalizado!
Execute sua versão do install.ps1
Agora execute sua versão do install.ps1 nos servidores que precisa instalar o Chocolatey e seja feliz!
Muito obrigado pela visita e até mais!
“Fazendo download do script, você verá que ele realiza apenas 2 downloads:” Como você fez o download do script do comando que você tinha feito com choco?
A linha que antecede esse explicação é um script. Que se você ler com cuidado vai ver que trata-se, entre outras coisas, de um download de um script .ps1 (https://chocolatey.org/install.ps1).
Daí pra frente, é entender o que o script faz.