raspberry pi
云INIT是一个标准,它不会是一个夸张地说,这是标准的 ,云供应商使用提供初始化和配置数据云实例。 它最常在新实例的首次启动时使用,以自动执行网络设置,帐户创建和SSH(安全外壳)密钥安装-使新系统联机以使其可由用户访问所需的任何操作。
在上一篇文章“ 修改磁盘映像以创建基于Raspberry Pi的homelab”中 ,我展示了如何为单板计算机(如Raspberry Pi)自定义操作系统映像,以实现类似的目标。 使用Cloud-init,无需向图像添加自定义数据。 一旦在映像中启用它,您的虚拟机,物理服务器甚至小型Raspberry Pi都可以像您自己的“家中私有云”中的云实例一样工作。 只需插入,打开新机器,然后自动将它们纳入homelab即可 。
老实说,Cloud-init在设计时并未考虑家庭实验室。 如前所述,您可以轻松修改给定系统集的磁盘映像,以启用SSH访问并在首次引导后对其进行配置。 Cloud-init专为需要容纳许多客户,维护少量映像并为这些客户提供访问实例而无需为每个实例定制映像的机制的大型云提供商而设计。 拥有一个管理员的家庭实验室将面临同样的挑战。
不过,在家庭实验室中,Cloud-init并非没有优点。 对于家庭私有云项目,教育是我的目标之一,并且为您的homelab设置Cloud-init是一种获得经验的好方法,该经验可以被各种规模的云提供商广泛使用。 Cloud-init也是其他初始配置选项的替代方法。 您可以启用Cloud-init,而不是为您的家庭实验室中的每个设备自定义每个映像,ISO等,并在进行更改时面对繁琐的更新。 这减少了技术债务,还有什么比个人技术债务更糟糕的事情? 最后,在您的家庭实验室中使用Cloud-init可以使您的私有云实例的行为与您现在拥有或将来可能拥有的任何公共云实例相同—真正的混合云 。
关于Cloud-init
数据源,以确定其运行在哪种类型的云中。每个主要的云提供商都具有一个数据源配置,该配置告诉实例在何处以及如何检索配置信息。 然后,该实例使用数据源信息来检索云提供商提供的配置信息(例如网络信息和实例标识信息)以及客户提供的配置数据(例如要复制的授权密钥,要创建的用户帐户以及许多其他可能的任务。检索数据后,Cloud-init然后配置实例:设置网络,复制授权密钥等,最后完成启动过程。 然后,远程用户可以访问它,准备使用Ansible或Puppet之类的工具进行进一步配置,或者准备接收工作负载并开始其分配的任务。
配置数据
如上所述,Cloud-init使用的配置数据来自两个潜在来源:云提供者和实例用户。 在家庭实验室中,您同时扮演两个角色:作为云提供者提供网络和实例信息,以及作为用户提供配置信息。
云提供商元数据文件
在您的云提供商角色中,您的homelab数据源将为您的私有云实例提供一个元数据文件。 元数据文件包含诸如实例ID,云类型,Python版本(Cloud-init被写入并使用Python)或要分配给主机的公共SSH密钥之类的信息。 如果您不使用DHCP(或Cloud-init支持的其他机制,例如映像中的配置文件或内核参数),则元数据文件也可能包含网络信息。
用户提供的用户数据文件
Cloud-init值的真实含义在用户数据文件中。 用户数据文件由用户提供给云提供商,并包含在数据源中,它是将实例从通用计算机转变为用户群的成员的文件。 用户数据文件可以采用可执行脚本的形式,与正常情况下的脚本相同,也可以作为cloud-config YAML文件使用Cloud-init的模块执行配置任务。
数据源
数据源是由云提供商提供的一项服务,该服务将元数据和用户数据文件提供给实例。 实例映像或ISO配置为告诉实例正在使用哪个数据源。
例如,Amazon AWS提供了一个本地链接文件,该文件将使用实例的自定义数据响应来自实例的HTTP请求。 其他云提供商也有自己的机制。 幸运的是,对于家庭私有云项目,也有NoCloud数据源。
NoCloud数据源允许通过内核命令作为键值对或作为已安装的ISO文件系统提供的用户数据和元数据文件来提供配置信息。 这些对虚拟机很有用,尤其是与自动化配对以创建虚拟机。
还有一个NoCloudNet数据源,其行为类似于AWS EC2数据源,它提供IP地址或DNS名称,可通过HTTP从中检索IP地址或元数据。 这是在您的家庭实验室的物理机,如树莓派,最有帮助的NUCs ,或剩余的服务器设备。 尽管NoCloud可以工作,但它需要更多的手动注意-云实例的反模式。
面向家庭实验室的Cloud-init
我希望这能使您了解什么是Cloud-init,以及它如何对您的homelab有所帮助。 它是主要云提供商所拥护的令人难以置信的工具,在家中使用它既具有教育意义又很有趣,可以帮助您自动向实验室添加新的物理或虚拟服务器。 未来的文章将详细介绍如何创建简单的静态和更复杂的动态Cloud-init服务,并指导您将其合并到家中的私有云中。
翻译自: https://opensource.com/article/20/5/cloud-init-raspberry-pi-homelab
raspberry pi