Package: glean
Glean is a program intended to configure a system based on
configuration provided in aconfiguration drive.Why would you want glean?Different cloud providers have different ways of providing networking
and other configuration to guest virtual-machines.  Many use DHCP but
others, notably Rackspace, use configuration provided via a
configuration drive.What does glean do?Broadly, glean checks for configuration drive based information and,
if found, uses that to configure the network.  If config-drive is not
found, it falls back to configuring any available interfaces with
DHCP.Specifically, it will mount the special block-device with labelconfig-2and parse thenetwork_info.jsonandvendor_info.jsonfiles within.  If appropriate network configuration is found, it will
write out network configuration files.The format of thenetwork_info.jsonfile is documentedhere.
Please note that glean does not implement every feature listed.If no network info is found there, available interfaces can be probed
from/sys/class/netand any that appear to be up will be configured
for use with DHCP.It will also handleauthorized_keysand host-name info provided frommeta_data.json.How does glean do this?Glean determines the network configuration environment for the running
platform and configures the interfaces appropriately.systemd environmentOn platforms where systemd is detectedglean-installwill add audevrules file (99-glean.rules) that triggers on any network
device being added.  This will run theglean@.servicesystemd
template for the interface specified.This systemd unit firstly determines if there is already a/etc/sysconfig/network/configuration for the interface; if so, the
interface is considered configured and skipped.If not, glean is started with the interface that triggered this event
specified as an argument.  The configuration drive is probed to see if
network configuration for the interface is available.  If so, it will
be added, otherwise the interface will configured for DHCP.NoteBy default glean provides configuration for the network init
scripts servicenetwork.serviceon RedHat platforms (or the
equivalent on other platforms).  You should ensure this service is
enabled and other tools such as NetworkManager are disabled for
correct operation in this mode.  Note on Fedora 29 onwards, this is
in a separate packagenetwork-scriptsand is considered
deprecated.Alternatively, to use NetworkManager with theifcfg-rhplugin
with to manage the interfaces, callglean-installwith the–use-nmflag.  In this case, ensure NetworkManager is installed.
This will trigger glean to write out configuration files that are
suitable for use with NetworkManager and use a slightly different
service file that doesn’t trigger legacy tools likeifup.networkdnetworkdsupport is implemented as a separate distribution type.
Currently it is only supported on Gentoo, and will be automatically
selected byglean-install.  It will similarly install a systemd
service file or openrc config file (both are supported on Gentoo) and
udev rules to call glean.Other platformsupstartandsysvenvironments are also supported.  These will have
init scripts installed to run glean at boot.How do I use glean?Glean shipsglean-install, a script which install glean into your
system startup environment.  It should handlesysv,upstartandsystemdto cover all major distributions.  This should be run once,
during install or image build.The startup environment will be modified as described above to
configure any found interfaces.Differences to cloud-init?Glean differs tocloud-initmainly in its very reduced dependency
footprint.  In a dynamic CI environment such as OpenStack, many of the
python dependencies forcloud-initcan cause conflicts with packages
or versions required for testing.Glean also better supports static IP allocation within config-drive,
particuarly important within the Rackspace environment.More detailsFree software: Apache licenseDocumentation:http://docs.openstack.org/infra/gleanSource:http://git.openstack.org/cgit/openstack-infra/gleanBugs:http://storyboard.openstack.org