如何在没有太多开销的情况下实现虚拟机部署和配置的自动化

如何在没有太多开销的情况下实现虚拟机部署和配置的自动化

这个问题更多的是想得到一些建议。我确信这个问题没有直接的答案。

情况

我们的内部 IT 部门负责创建业务所需的虚拟机(主要是 Windows Server)。虚拟机内部发生的事情不是我们关心的,但我们负责操作系统级别;我们只是将其部署为黑盒并将其交付给业务(有点像托管公司),他们会在其上安装应用程序。但是,我们确实要求在我们部署的每个虚拟机上完成一些代理和基本配置(例如防病毒安装、监控代理、域加入等)。大多数虚拟机完全不相关。我们每月部署大约 5 个虚拟机。

目前我们使用 Azure ARM 模板在 Azure 上部署虚拟机(使用 Az CLI),这已经节省了很多时间,但之后的配置只是一些重复无聊的手动工作。我们需要加入域、重新启动、手动复制安装程序、运行它们、下一步/下一步/完成……我觉得这里可以进行一些优化 :)

有时我们仍然需要在 VMware 上本地部署虚拟机,因此除了通过虚拟机模板完成的虚拟机部署本身之外,相同的手动任务也适用于那里。

目标

我正在寻找一种方法来自动化所有这些工作,并考虑使用 Ansible。但在真正深入研究之前,我想听听经验丰富的 Ansible 用户的意见,看看这是否是我们工作的工具。

在理想情况下,我只想部署 ARM 模板或 VMware VM 模板,让 VM 中的所有其他内容自动处理。这将使 VM 加入域、将 AD 组添加到本地管理员组、安装所有代理等等。为了进一步扩展这一点,最好将服务器自动添加到我们的 CMDB 并将 IP 地址添加到我们的 IPDB,例如使用 REST API。

使用 Ansible 是否可行,还是我找错了工具?每月大约 5 台虚拟机是否值得付出努力?我不赞成使用 Powershell DSC,因为我们还需要更频繁地部署 Linux。

当然,我可以开始编写 PowerShell 脚本来处理所有这些问题,但感觉就像是在重新发明轮子。

答案1

每周节省 5 分钟,每年可节省 4 小时的自动化预算。也许更重要的是,自动化更加一致,并且可以实现自助服务配置工作流程。并用更有趣的自动化工作取代繁琐的劳作。

无论自动化如何实现,都要编写脚本,希望能够实现重用。理论上,可以从 ARM 模板自定义脚本扩展、Azure 映像生成器、Ansible 剧本、VMWare 模板、手动临时调用相同的脚本,无论在哪里。

Ansible 是一种远程访问主机并运行脚本的方法。ssh 并运行 Python,winrm 并运行 PowerShell。虽然它有一些有用的(Windows)模块,但如果模块不存在,则需要编写脚本。此外,Ansible 不能在 Windows 上运行,因此管理节点需要是其他操作系统。如果您想主要通过 Azure 工作流控制配置,这会使事情变得复杂。

更简单的任务是加入域,Microsoft 拥有配置工具来无人值守地完成此项任务。

如果虚拟机通用化时代理和其他已安装的软件出现故障,则创建模板映像会很麻烦。调查软件是否可以检测新的主机详细信息,或者安装后是否完全依赖于配置文件。或者软件安装是否可以在实例配置时自动完成。向软件展示对通用操作系统的支持并寻求指导。

相关内容