glean¶
Glean 是一个程序,旨在根据在配置驱动中提供的配置来配置系统。
你为什么要使用 glean?¶
不同的云服务提供商有不同的方式来提供网络和其他配置给客户虚拟机。许多使用 DHCP,但其他一些,特别是 Rackspace,使用通过配置驱动提供的配置。
glean 是做什么的?¶
总的来说,glean 检查基于配置驱动的信息,如果找到,则使用这些信息来配置网络。如果未找到配置驱动,它将回退到使用 DHCP 配置任何可用的接口。
具体来说,它将挂载带有标签 config-2 的特殊块设备,并解析其中的 network_info.json 和 vendor_info.json 文件。如果找到合适的网络配置,它将写入网络配置文件。
network_info.json 文件的格式记录在此处。请注意,glean 并非实现所有列出的功能。
如果那里没有找到网络信息,可以从 /sys/class/net 探测可用的接口,并且任何看起来已启动的接口都将配置为与 DHCP 一起使用。
它还将处理从 meta_data.json 提供的 authorized_keys 和主机名信息。
glean 是如何做到这一点的?¶
Glean 确定运行平台上的网络配置环境,并相应地配置接口。
systemd 环境¶
在检测到 systemd 的平台上,glean-install 将添加一个 udev 规则文件 (99-glean.rules),该规则文件会在添加任何网络设备时触发。这将运行为指定接口的 glean@.service systemd 模板。
此 systemd 单元首先确定接口是否已经存在 /etc/sysconfig/network/ 配置;如果存在,则认为该接口已配置并跳过。
如果不存在,glean 将以触发此事件的接口作为参数启动。将探测配置驱动,以查看是否为该接口提供网络配置。如果提供,则会添加它,否则该接口将配置为使用 DHCP。
注意
默认情况下,glean 为 RedHat 平台上的网络初始化脚本服务 network.service (或其他平台上的等效服务) 提供配置。为了在这种模式下正确运行,应确保该服务已启用,并禁用 NetworkManager 等其他工具。请注意,从 Fedora 29 开始,这位于一个单独的软件包 network-scripts 中,并且被认为已弃用。
或者,要使用带有 ifcfg-rh 插件的 NetworkManager 来管理接口,请使用 –use-nm 标志调用 glean-install。在这种情况下,请确保已安装 NetworkManager。这将触发 glean 写入适合与 NetworkManager 一起使用的配置文件,并使用略有不同的服务文件,该文件不会触发 ifup 等传统工具。
networkd¶
networkd 支持作为单独的发行版类型实现。目前它仅在 Gentoo 上受支持,并且将由 glean-install 自动选择。它将类似地安装 systemd 服务文件或 openrc 配置文件(两者都受 Gentoo 支持)和 udev 规则来调用 glean。
其他平台¶
upstart 和 sysv 环境也受支持。这些环境将安装启动脚本,以便在启动时运行 glean。
如何使用 glean?¶
Glean 附带 glean-install,一个将 glean 安装到系统启动环境中的脚本。它应该处理 sysv、upstart 和 systemd,以涵盖所有主要的发行版。这应该在安装或镜像构建期间运行一次。
启动环境将如上所述进行修改,以配置任何找到的接口。
与 cloud-init 的区别?¶
Glean 与 cloud-init 的主要区别在于其非常小的依赖项占用空间。在 OpenStack 等动态 CI 环境中,cloud-init 的许多 Python 依赖项可能会与测试所需的软件包或版本冲突。
Glean 还更好地支持配置驱动中的静态 IP 分配,这在 Rackspace 环境中尤其重要。
更多细节¶
自由软件:Apache 许可证