问题描述
面临一个问题,需要管理数百台单板计算机(如树莓派或类似设备)。这些设备通过以太网连接到一个中央控制PC。他的需求是自动化以下任务:
– 进行网络操作系统安装
– 执行各种操作系统级配置任务(例如,能够向所有或选定的机器批量发送并执行 .bat 脚本或类似脚本)
– 拥有一种控制面板(最好是基于GUI,但也可以考虑其他选项),以监视每个设备的状态。
他对DevOps领域完全陌生,并且花了大约一天的时间研究了像Ansible、Terraform、Puppet、Kubernetes等免费非SaaS的工具和平台,但是他很难理解是否应该从这个领域开始解决他的问题。这些工具似乎更适用于稍微不同的应用,如IT基础设施和持续/高容量部署,而他只是希望(最好)在本地网络上部署一次,然后从一个地方永远监视它。
他想知道这种基础架构即代码(IaC)架构是否对他的需求过于复杂?还有其他工具可以推荐吗?
解决方案
在你的情况下,通过Terraform创建基础架构可能不是最佳方法,因为Terraform主要用于通过网络API创建对象,而不是用于物理硬件。虽然你可以使用Terraform将节点注册到库存系统中(如果该库存系统具有Terraform提供程序),但Terraform无法通过API创建实际的树莓派等设备,所以Terraform可能不适用于你的问题。
相反,配置管理工具如Ansible和Puppet可能更适合你的情况,因为它们的主要作用是在已运行的计算机系统上安装软件和配置文件。你可以使用这些工具来执行操作系统级配置任务,以及将脚本发送并在多台设备上执行。
另一种可能的方法是,在单板计算机上运行Kubernetes,将它们组成一个计算集群。但是,你需要在这些系统上安装和配置Kubernetes软件,所以你可能会选择使用Ansible或Puppet来设置它。
鉴于这些,我建议你从Ansible或Puppet入手,然后根据需要进一步探索。如果你尚未针对各个主机定义任何流程,你可能还没有准备好使用Puppet/Ansible。在考虑扩展到数百台设备之前,首先考虑使用一些工具来处理针对单个主机的手动触发的远程安装(例如使用shell脚本)。Puppet/Ansible等工具解决了在更大规模上重复已定义的一组流程/配置的问题。如果还没有为这些流程定义好,它们可能在当前阶段无法提供太多帮助。
总结
根据你的需求,采用Ansible或Puppet作为初始解决方案是合适的。这些工具可以帮助你自动化操作系统配置和部署,同时在多台设备上执行任务。在使用这些工具之前,建议你首先为单个主机设置一些手动触发的远程安装流程,然后再逐步扩展到更大规模的部署。通过学习和实践,你将能够更好地应对你的需求,并且可能在未来考虑更高级的解决方案。