现今的客户们都活在多平台、多云、多 OS 的世界,这就是现实。新的世界带来了新的挑战,客户们需要工具来统筹所有工作中的事务。微软正致力于研发客户在任何地方都可以对整个公司各种平台、设备进行统一管理的工具,不论是在 Linux 还是 Windows 平台上。这推动着一个更加开放,围绕客户的新变革,这使我每天更加满怀热情前往工作。
你可能曾听 Satya Nadella 说过“微软爱 Linux “,目前看来,这句话已经变得不能再真了。 Azure 上面近乎三分之一的虚拟机运行着 Linux 。Azure 市场上有着 60% 的第三方 IaaS 提供的应用属于开源软件( OSS , Open Source Software )。我们有着强大的虚拟第三方工业合作伙伴为用户扩展用户的可选择度。我们在宣布开源 .NET 的同时也宣布了 SQL Server 可以直接运行在 Linux 上了。我们将 Bash 添加到 Windows 10 上为的是提供一个更好的平台来研发开源软件。我们也有大量的活跃开发者参与到各种跨领域的开源项目中( OpenSSH、FreeBSD、Mesos、Docker、Linux 等更多其他项目)。
今天,我们来开启漫漫旅途中的下一步。我十分激动于向大家分享 PowerShell 开源了这个消息!并且能在 Linux 上运行了!(我们来回顾一下, PowerShell 是一个基于任务式的命令行 shell , 脚本语言构建在 .NET 框架之上。它能帮助 IT 专业人员手动或自动化的控制管理 Windows 操作系统以及运行在操作系统之上的应用程序。嗯!现在还包括 Linux 了。)接下来我将向大家分享我们是怎样走过这段旅途的,以及告诉大家微软操作管理套件( Microsoft Operations Management Suite )是如何增强 PowerShell 体验的。
谈谈 PowerShell 开源的经历
让我们开始 PowerShell on Linux 之旅吧。体验这个开源版本的故事…
我的客户很不高兴。
之前我向一个大客户演示了 Monad(PowerShell 之前的名字),他很喜欢它。但是现在他对我很生气。
他问我这是用什么语言实现的,然后他对我的回答感到不高兴:C#。我懵逼地问这有什么问题。他回答说:“ Monad 确实很不错,我也想让它普及到我整个公司,但是没办法, .NET 不支持 Linux 啊!”
过去,微软的业务焦点意味着 .NET 和 PowerShell 只能在 Windows 使用。但是现在的微软是个崭新的微软。Satya 的引导者和 Azure 让我们变得更开放,更以客户为中心,这张图表明了我们的倾向:
微软想要博得客户在所有运行他们工作负荷的平台上的喜爱,包括 Linux 和 Windows 。这个新想法允许 .NET Core 移植到 Linux ,也就使得 PowerShell 也可以移植到 Linux 。PowerShell on Linux 现在允许客户使用同样的工具,同样的人员来管理任何地方的任何事。它将首先支持 Ubuntu ,Centos 和 Red Hat ,同时还可以在 Mac OS X 上运行,未来我们还会增加更多平台。你可以下载我们的 Alpha builds ,还可以查看我们在 GitHub 上的源代码。
现在,Windows 和 Linux 用户,现在的新用户,以及应用开发者们都可以体验一个能很好地配合你现有工具的功能丰富的交互式脚本语言以及异构自动化和配置管理。你的 PowerShell 技能将更有市场,而且你以往分离工作的 Windows 和 Linux 团队更容易共同工作了。
那么,我们现在在这段旅途的什么地方呢?我们还在开始的地方而且还处于学习模式。我们通过开源 PowerShell 的小部分开始,并且告诉一些经历过开源的伙伴,以了解如何走向成功。我们所学到的是,个别用户能在他们的电脑上用 Git 查看代码,做些修改,编译任何东西以及运行所有测试程序来验证这些变化不会破坏任何东西,这些是需要鉴定的。这需要在我们的工程/构建/测试系统上有巨大的投入。我们也致力于定义一套管理模型以便于我们弄清楚我们的任务,职责和进程,从而使社区的贡献能平稳地融入产品。
PowerShell 团队对自己是一个专注社区的团队而感到自豪,但是这个声明需要在下一个层次使源代码可被获取并采用开源开发模型,这样我们就可以享受在 RFCs 和问题上与社区的深层联系,并直接接受社区贡献。我们也需要在开源后扩大我们的社区,像许多事一样,需要一个群体,因为群体是获得好经验的一把钥匙!我们在和一些第三方公司合作,比如 Chef 、 Amazon Web Services 、 VMware 和 Google 等,在你知道或使用的平台上创造一个丰富的无缝体验。
当我们把 PowerShell 移植到 Linux 时,我们确信我们是这个平台上的一等“公民”。我们很适应那些架构,习语和现有的工具。这对有着很深的 Unix 背景的原本的 PowerShell 团队来说相当容易, 这在我们的设计里也体现了。我们做出了很多改变,下面是两个大的变化:
我们创建了 PowerShell Editor Service 。它允许用户在一系列编辑器中选择( VS Code 、 Sublime 等),使用户在智能感知、调试上获得不错的用户体验,等等。
我们将扩展 PowerShell 远程协议( MS-PSRP )来使用 OpenSSH 作为本地传输工具。用户将可以设置用 SSH 还是 WINRM 作为传输工具。
最初的版本是“alpha”和社区支持版。未来,我们将发布一个基于开源的微软官方 release 版,使任何人可以在 Windows 或 *nix 上运行一个受支持的版本。这个微软官方版本届时将用于社区投入和商业需求。我们希望你能帮助我们把它做好!
如何通过微软操作管理套件扩展 PowerShell 体验?
我还想告诉大家,如今的 PwerShell 可以在我们的云管理解决方案下( OMS, Operations Management Suite ),通过扩展插件你已经可以做更多你想做的事了。 OMS 给你提供了一种可视化的方式控制你的应用以及跨云平台的工作负载。整个说来,客户在使用 PowerShell 时可以切换他们的云体验,不论是 Windows 服务器还是 Linux 服务器。 OMS 自动化提升了 PowerShell 以及 DSC ( Desired State Configuration )的可用性、可扩展性。你可以在一个地方图形化的签署管理所有的 PowerShell 资源,包括运行手册、 DSC 配置以及 DSC 节点配置。
在 OMS 以及手册的帮助下,你可以扩展你的 OMS 自动化能力,并能在任何地方应用、监视、更新你的配置,甚至包括本地配置。如今我们同样使得 OMS 能够监控 Linux了。同样,顾客可以获得丰富的观察信息以及实时的掌握 Linux 的工作负载。任何问题一旦出现,重启之后将会很快被修复。
我们非常希望大家都能花点时间在 Linux 上测试运行 PowerShell ,让我们知道你们的想法!你可以从这里学习更多关于 OMS 自动化套件的知识。另外,请查看下周在 LinuxCon 关于我们的内容。 Wim Coekaerts 将会给出一个地址,我们将会展示 PowerShell , 并且做一场演示会话。
如果你刚开始接触 PowerShell ,一个不错的方式就是学习我们在 Github上的 Learning PowerShell 仓库。我们同样也提供了免费的微软虚拟学术(Microsoft Virtual Academy)在线课程: Getting Started with PowerShell 3.0 Jump Start 。如果想加入参与到 PowerShell 社区请看 powershell.org 以及 PowerShell Team blog 。我们将会在未来更新相关内容以满足如 Linux 等社区的需求。
还有很长的路要走,这个过程乐趣十足,所以请加入我们吧。我们一起生产出更加捷利的工具。