Hi all
as I promised during sprint demo 28 [1] in which I showed recent changes to
networking I'd like to start discussion over items that we've identified as
important regarding further networking stuff.
The goal is to find out which features are most important (feel free to +1) and
to find out how they should be implemented. There are many open questions. If
this is too complex for email discussion we could do some deep dive and
discuss each task separately. When we are clear on items I'll clean up redmine
and convert tasks to new issues.
Here's the list of items:
(1) Refactoring of existing code
- extract primary interface from host
- rework static flag in provisioning
- allow searching of hosts based on mac address (including all interfaces)
- rename Nic::Managed or merge with Nic::Interface class
- properly detect primary interface among facts, never use ipaddress and
macaddress facts - open question: what is primary interface, the one used for provisioning?
(2) Configuration
- currently we configure it by generating config files in provisioning templates
- open questions:
- should we try to configure it using puppet - I see several issues
- should we use some library (aka, nominate you favorite one)
- if any of previous question is yes, how and when do we get it to host
(3) User interface
- display all networking information in host detail so we don't have to edit
- improve host edit form (modal window? advanced link?)
(4) Should all interfaces be modeled in Foreman?
- we may want to manage vlan interfaces but not necessarily manage the
physical to which they are attached, same with bridges and bonds - open question: should we validate all linked devices or allow user to
specify e.g. bridge containing interfaces that do not exist in Foreman?
(5) Connect the form with interfaces from compute resource, so we can map them
(MAC address is not known at this moment)
(6) Support for bridge devices
- importing more information, like bridged devices
- configure it
(7) Support for bond devices
- importing
- configure it
- open question: what modes should we support?
(8) Support for VPN devices (tun/tap)
- importing
- open question: configure it?
(9) Publishing networking information in ENC output
- namespace it with a configurable string so users can avoid potential clashes
with other networking facts
(10) Custom facts
- we support parsing of custom facts for IPMI devices and link status in
discovery, how do propagate such facts to normal puppet agents? - this is needed for fixing vlan and aliases fact conflicts until they fix it in
upstream [2]
(11) Other
- should we allow boot mode to be overridden on interface level?
- fix alias vs. vlan detection (see custom facts)
- suggest new IP for interface link, similar to what we have for host
- should we delete interfaces that are not present in facts? it may be
reasonable for physical devices, probably not for virtuals as your vlan
interfaces can be down for a while - improve UI so user see more information about network he's assigning (e.g.
vlanid, whether it's tagged and such)
(12) Debian support
- currently we have provisioning templates for both, but wheezy installer
overrides configuration before reboot, so we need to find some workaround if we
want to use provisioning templates for configuration
I made a copy of this list on public pad [3]. Is there anything else not
covered by these tasks?
[1] https://www.youtube.com/watch?v=yCCViaCaQRo
[2] https://tickets.puppetlabs.com/browse/FACT-701
[3] https://titanpad.com/urGYwL9cDf
Thanks