summaryrefslogtreecommitdiff
path: root/doc/rtd/topics/network-config.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rtd/topics/network-config.rst')
-rw-r--r--doc/rtd/topics/network-config.rst326
1 files changed, 0 insertions, 326 deletions
diff --git a/doc/rtd/topics/network-config.rst b/doc/rtd/topics/network-config.rst
deleted file mode 100644
index b6d7a9be..00000000
--- a/doc/rtd/topics/network-config.rst
+++ /dev/null
@@ -1,326 +0,0 @@
-.. _network_config:
-
-*********************
-Network Configuration
-*********************
-
-- Default Behavior
-- Disabling Network Configuration
-- Fallback Networking
-- Network Configuration Sources
-- Network Configuration Outputs
-- Network Output Policy
-- Network Configuration Tools
-- Examples
-
-.. _default_behavior:
-
-Default Behavior
-================
-
-`Cloud-init`_ 's searches for network configuration in order of increasing
-precedence; each item overriding the previous.
-
-**Datasource**
-
-For example, OpenStack may provide network config in the MetaData Service.
-
-**System Config**
-
-A ``network:`` entry in ``/etc/cloud/cloud.cfg.d/*`` configuration files.
-
-**Kernel Command Line**
-
-``ip=`` or ``network-config=<Base64 encoded YAML config string>``
-
-User-data cannot change an instance's network configuration. In the absence
-of network configuration in any of the above sources , `Cloud-init`_ will
-write out a network configuration that will issue a DHCP request on a "first"
-network interface.
-
-.. note::
-
- The network-config value is expected to be a Base64 encoded YAML string in
- :ref:`network_config_v1` or :ref:`network_config_v2` format. Optionally it
- can be compressed with ``gzip`` prior to Base64 encoding.
-
-
-Disabling Network Configuration
-===============================
-
-Users may disable `Cloud-init`_ 's network configuration capability and rely
-on other methods, such as embedded configuration or other customizations.
-
-`Cloud-init`_ supports the following methods for disabling cloud-init.
-
-
-**Kernel Command Line**
-
-`Cloud-init`_ will check additionally check for the parameter
-``network-config=disabled`` which will automatically disable any network
-configuration.
-
-Example disabling kernel command line entry: ::
-
- network-config=disabled
-
-
-**cloud config**
-
-In the combined cloud-init configuration dictionary, merged from
-``/etc/cloud/cloud.cfg`` and ``/etc/cloud/cloud.cfg.d/*``::
-
- network:
- config: disabled
-
-If `Cloud-init`_ 's networking config has not been disabled, and
-no other network information is found, then it will proceed
-to generate a fallback networking configuration.
-
-Disabling Network Activation
-----------------------------
-
-Some datasources may not be initialized until after network has been brought
-up. In this case, cloud-init will attempt to bring up the interfaces specified
-by the datasource metadata using a network activator discovered by
-`cloudinit.net.activators.select_activators`_.
-
-This behavior can be disabled in the cloud-init configuration dictionary,
-merged from ``/etc/cloud/cloud.cfg`` and ``/etc/cloud/cloud.cfg.d/*``::
-
- disable_network_activation: true
-
-Fallback Network Configuration
-==============================
-
-`Cloud-init`_ will attempt to determine which of any attached network devices
-is most likely to have a connection and then generate a network
-configuration to issue a DHCP request on that interface.
-
-`Cloud-init`_ runs during early boot and does not expect composed network
-devices (such as Bridges) to be available. `Cloud-init`_ does not consider
-the following interface devices as likely 'first' network interfaces for
-fallback configuration; they are filtered out from being selected.
-
-- **loopback**: ``name=lo``
-- **Virtual Ethernet**: ``name=veth*``
-- **Software Bridges**: ``type=bridge``
-- **Software VLANs**: ``type=vlan``
-
-
-`Cloud-init`_ will prefer network interfaces that indicate they are connected
-via the Linux ``carrier`` flag being set. If no interfaces are marked
-connected, then all unfiltered interfaces are potential connections.
-
-Of the potential interfaces, `Cloud-init`_ will attempt to pick the "right"
-interface given the information it has available.
-
-Finally after selecting the "right" interface, a configuration is
-generated and applied to the system.
-
-.. note::
-
- PhotonOS disables fallback networking configuration by default leaving
- network unrendered when no other network config is provided.
- If fallback config is still desired on PhotonOS, it can be enabled by
- providing `disable_fallback_netcfg: false` in
- `/etc/cloud/cloud.cfg:sys_config` settings.
-
-Network Configuration Sources
-=============================
-
-`Cloud-init`_ accepts a number of different network configuration formats in
-support of different cloud substrates. The Datasource for these clouds in
-`Cloud-init`_ will detect and consume Datasource-specific network
-configuration formats for use when writing an instance's network
-configuration.
-
-The following Datasources optionally provide network configuration:
-
-- :ref:`datasource_config_drive`
-
- - `OpenStack Metadata Service Network`_
- - :ref:`network_config_eni`
-
-- :ref:`datasource_digital_ocean`
-
- - `DigitalOcean JSON metadata`_
-
-- :ref:`datasource_nocloud`
-
- - :ref:`network_config_v1`
- - :ref:`network_config_v2`
- - :ref:`network_config_eni`
-
-- :ref:`datasource_opennebula`
-
- - :ref:`network_config_eni`
-
-- :ref:`datasource_openstack`
-
- - :ref:`network_config_eni`
- - `OpenStack Metadata Service Network`_
-
-- :ref:`datasource_smartos`
-
- - `SmartOS JSON Metadata`_
-
-- :ref:`datasource_upcloud`
-
- - `UpCloud JSON metadata`_
-
-- :ref:`datasource_vultr`
-
- - `Vultr JSON metadata`_
-
-For more information on network configuration formats
-
-.. toctree::
- :maxdepth: 1
-
- network-config-format-eni.rst
- network-config-format-v1.rst
- network-config-format-v2.rst
-
-
-Network Configuration Outputs
-=============================
-
-`Cloud-init`_ converts various forms of user supplied or automatically
-generated configuration into an internal network configuration state. From
-this state `Cloud-init`_ delegates rendering of the configuration to Distro
-supported formats. The following ``renderers`` are supported in cloud-init:
-
-- **NetworkManager**
-
-`NetworkManager <https://networkmanager.dev>`_ is the standard Linux network
-configuration tool suite. It supports a wide range of networking setups.
-Configuration is typically stored in ``/etc/NetworkManager``.
-
-It is the default for a number of Linux distributions, notably Fedora;
-CentOS/RHEL; and derivatives.
-
-- **ENI**
-
-/etc/network/interfaces or ``ENI`` is supported by the ``ifupdown`` package
-found in Alpine Linux, Debian and Ubuntu.
-
-- **Netplan**
-
-Introduced in Ubuntu 16.10 (Yakkety Yak), `netplan <https://netplan.io/>`_ has
-been the default network configuration tool in Ubuntu since 17.10 (Artful
-Aardvark). netplan consumes :ref:`network_config_v2` input and renders
-network configuration for supported backends such as ``systemd-networkd`` and
-``NetworkManager``.
-
-- **Sysconfig**
-
-Sysconfig format is used by RHEL, CentOS, Fedora and other derivatives.
-
-
-- **NetBSD, OpenBSD, FreeBSD**
-
-Network renders supporting BSD releases which typically write configuration to
-``/etc/rc.conf``. Unique to BSD renderers is that each renderer also calls
-something akin to `FreeBSD.start_services`_ which will invoke applicable
-network services to setup the network, making network activators unneeded
-for BSD flavors at the moment.
-
-
-Network Output Policy
-=====================
-
-The default policy for selecting a network ``renderer`` in order of preference
-is as follows:
-
-- ENI
-- Sysconfig
-- Netplan
-- NetworkManager
-- FreeBSD
-- NetBSD
-- OpenBSD
-- Networkd
-
-The default policy for selecting a network ``activator`` in order of preference
-is as follows:
-- ENI: using `ifup`, `ifdown` to manage device setup/teardown
-- Netplan: using `netplan apply` to manage device setup/teardown
-- NetworkManager: using `nmcli` to manage device setup/teardown
-- Networkd: using `ip` to manage device setup/teardown
-
-
-When applying the policy, `Cloud-init`_ checks if the current instance has the
-correct binaries and paths to support the renderer. The first renderer that
-can be used is selected. Users may override the network renderer policy by
-supplying an updated configuration in cloud-config. ::
-
- system_info:
- network:
- renderers: ['netplan', 'network-manager', 'eni', 'sysconfig', 'freebsd', 'netbsd', 'openbsd']
- activators: ['eni', 'netplan', 'network-manager', 'networkd']
-
-
-Network Configuration Tools
-===========================
-
-`Cloud-init`_ contains one tool used to test input/output conversion between
-formats. The ``tools/net-convert.py`` in the `Cloud-init`_ source repository
-is helpful for examining expected output for a given input format.
-
-CLI Interface :
-
-.. code-block:: shell-session
-
- % tools/net-convert.py --help
- usage: net-convert.py [-h] --network-data PATH --kind
- {eni,network_data.json,yaml} -d PATH [-m name,mac]
- --output-kind {eni,netplan,sysconfig}
-
- optional arguments:
- -h, --help show this help message and exit
- --network-data PATH, -p PATH
- --kind {eni,network_data.json,yaml}, -k {eni,network_data.json,yaml}
- -d PATH, --directory PATH
- directory to place output in
- -m name,mac, --mac name,mac
- interface name to mac mapping
- --output-kind {eni,netplan,sysconfig}, -ok {eni,netplan,sysconfig}
-
-
-Example output converting V2 to sysconfig:
-
-.. code-block:: shell-session
-
- % tools/net-convert.py --network-data v2.yaml --kind yaml \
- --output-kind sysconfig -d target
- % cat target/etc/sysconfig/network-scripts/ifcfg-eth*
- # Created by cloud-init on instance boot automatically, do not edit.
- #
- BOOTPROTO=static
- DEVICE=eth7
- IPADDR=192.168.1.5/255.255.255.0
- NM_CONTROLLED=no
- ONBOOT=yes
- TYPE=Ethernet
- USERCTL=no
- # Created by cloud-init on instance boot automatically, do not edit.
- #
- BOOTPROTO=dhcp
- DEVICE=eth9
- NM_CONTROLLED=no
- ONBOOT=yes
- TYPE=Ethernet
- USERCTL=no
-
-
-.. _Cloud-init: https://launchpad.net/cloud-init
-.. _DigitalOcean JSON metadata: https://developers.digitalocean.com/documentation/metadata/
-.. _OpenStack Metadata Service Network: https://specs.openstack.org/openstack/nova-specs/specs/liberty/implemented/metadata-service-network-info.html
-.. _SmartOS JSON Metadata: https://eng.joyent.com/mdata/datadict.html
-.. _UpCloud JSON metadata: https://developers.upcloud.com/1.3/8-servers/#metadata-service
-.. _Vultr JSON metadata: https://www.vultr.com/metadata/
-.. _cloudinit.net.activators.select_activators: https://github.com/canonical/cloud-init/blob/main/cloudinit/net/activators.py#L279
-.. _FreeBSD.start_services: https://github.com/canonical/cloud-init/blob/main/cloudinit/net/freebsd.py#L28
-
-.. vi: textwidth=79