[DevOps] 三分钟全面了解Windows平台的Apt和Yum:Chocolatey

Chocolatey是Windows PowerShell的软件部署解决方案和软件包管理器,允许您在网络中自动执行软件管理。

在Windows中,管理员最希望自动化的任务之一是部署软件。 由于敏捷的软件开发实践,任何给定软件的新版本可能比几年前更频繁地出现。 这最终意味着要将新版本部署到您的计算机,您需要处于这些版本之上,从中创建包并将它们安装到您的服务器和工作站。 这可能是一项非常艰巨的任务。

幸运的是,Chocolatey是一个很好的解决方案,可以为Windows IT专业人员自动执行这些任务,无论是开源还是业务(C4B)版本。 在本文中,我将在演示中使用Chocolatey for Business(C4B)。

安装Chocolatey客户端

要从社区存储库安装Chocolatey客户端,我们只需运行一行PowerShell:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

这将下载并运行PowerShell脚本,将Chocolatey安装到C:\ ProgramData \ Chocolatey中。 非常简单! 但是,如果要在企业环境中进行安装,则需要从自己的内部NuGet存储库安装客户端。 您可以通过内化Chocolatey包来完成此操作,我将在本文后面介绍。 有关安装Chocolatey客户端的其他方法,请查看此处。

安装Chocolatey包

现在我们已经安装了我们的Chocolatey客户端,让我们实际安装一个软件包。 Chocolatey的一大特色是能够从多个来源安装。 这可以是社区存储库或您创建的内部存储库。

choco install notepadplusplus -y
[DevOps] 三分钟全面了解Windows平台的Apt和Yum:Chocolatey

最近添加的C4B功能是让非管理员最终用户通过Chocolatey GUI安装软件的能力。 对于希望卸载安装软件请求的企业来说,这是一个很好的自助服务选项。

[DevOps] 三分钟全面了解Windows平台的Apt和Yum:Chocolatey

创建一个Chocolatey包

使用C4B,用户可以通过命令行界面(CLI)或包构建器GUI(见下文)创建包。 我更喜欢CLI方法,因为它允许您使用一个命令在五秒内创建完全无人值守的软件部署:choco new。 在这个例子中,我从我下载的Git安装程序创建了一个包。

PS C:\Example> Get-ChildItem


Directory: C:\Example


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/29/2018 10:42 AM 39984304 Git-2.16.1-64-bit.exe
[DevOps] 三分钟全面了解Windows平台的Apt和Yum:Chocolatey

一个额外的参数--build-package是完成包的创建所必需的。 如果没有这个,你将只需要运行choco pack所需的文件和数据,这将实际创建.nupkg文件。

下面是使用包构建器GUI的屏幕截图,右键单击安装程序并从Explorer菜单中选择它:

[DevOps] 三分钟全面了解Windows平台的Apt和Yum:Chocolatey

内化来自Chocolatey社区存储库的软件

当我第一次使用Chocolatey时,我的主要抱怨之一是开发人员不鼓励在商业环境中从社区存储库进行安装。 看看这里的推理。

这是业务版本派上用场的地方。 使用choco download命令,我们可以下载一个社区包,它还将下载任何远程安装程序和资源,并将它们烘焙到我们自己的内部包中。 然后,您可以将其推送到您自己的存储库以便更安全地使用。

想想您现在可以节省的时间,因为您不必重新发明轮子并可以快速部署新版本。 使用一些PowerShell,您甚至不需要手动执行任何操作。

在这里,我从社区存储库下载并内置Google Chrome:


[DevOps] 三分钟全面了解Windows平台的Apt和Yum:Chocolatey

如您所见,Chocolatey从dl.google.com下载远程资源并替换内部包中的这些引用,以便它指向这些而不是在运行时下载它们。

现在我将我的Google Chrome软件包推送到我自己的内部存储库choco-1:

choco push .\GoogleChrome.64.0.3282.11900.nupkg --source=https://choco-1:8080/chocolatey --api-key='chocolateyrocks'
Chocolatey v0.10.8 Business
Attempting to push GoogleChrome.64.0.3282.11900.nupkgto https://choco-1:8080/chocolatey
GoogleChrome 64.0.3282.11900 was pushed successfully to https://choco-1:8080/chocolatey

就这样,我现在可以安全,安全地将Google Chrome部署到我的Chocolatey客户端。

附加功能

虽然我已经说明了使用Chocolatey最受欢迎的功能,但还有很多其他功能。一些功能包括但不限于:

  • 使用VirusTotal或您自己的防病毒软件保护运行时恶意软件
  • 使用一个无处不在的交换机覆盖安装目录
  • 包模板
  • 能够使用内容传送网络(CDN)缓存
  • 包审核
  • 能够创建PowerShell扩展(函数)

总结

随着自动化对于系统管理员和工程师来说仍然至关重要,其他任何Windows软件管理器都不会像Chocolatey那样提供。使用Chocolatey,您可以减少创建,安装和部署第三方和内部软件的开销。此外,Chocolatey是一个独立的软件部署工具,可单独使用或与流行的基础架构管理工具一起使用。其中包括系统中心配置管理器(SCCM),Puppet,Chef和Ansible,Chocolatey为其提供了模块。


分享到:


相關文章: