diff --git a/_templates/openstackdocs/theme.conf b/_templates/openstackdocs/theme.conf
index 8593370cf..b43f67fb9 100644
--- a/_templates/openstackdocs/theme.conf
+++ b/_templates/openstackdocs/theme.conf
@@ -4,6 +4,6 @@ stylesheet = css/basic.css
pygments_style = native
[options]
-globaltoc_depth = 4
+globaltoc_depth = 5
globaltoc_includehidden = true
analytics_tracking_code = UA-17511903-1
diff --git a/examples/network_templates.html b/examples/network_templates.html
new file mode 100644
index 000000000..888a7f425
--- /dev/null
+++ b/examples/network_templates.html
@@ -0,0 +1,17 @@
+
+
+network_templates
+
+
+network_templates
+ceph.yaml
+cinder.yaml
+cinder_add_nodes.yaml
+default.yaml
+hardware.yaml
+one_network.yaml
+two_networks.yaml
+two_nodegroups.yaml
+
+
+
diff --git a/examples/network_templates/default.yaml b/examples/network_templates/default.yaml
new file mode 100644
index 000000000..ea58ff9b7
--- /dev/null
+++ b/examples/network_templates/default.yaml
@@ -0,0 +1,199 @@
+adv_net_template:
+# default - is the name of the node network group. If you have additional
+# node network groups, add descriptions with all parameters for all node
+# network group.
+# If parameters of additional node network groups are not described in this
+# template, parameters of the default node network group apply.
+ default:
+ nic_mapping:
+# NIC mapping for nodes in this node network group. The default section will
+# be used for all nodes unless they are specifically configured. You can
+# specify mapping for every node by the node name
+ default:
+# Specify aliases for network interfaces, such as eth0, and
+# sub-interfaces (VLANs), such as eth0.101 to
+# later use them in the transformation section.
+ adm: eth0
+ pub: eth1
+ man: eth4
+ priv: eth2
+ stor: eth3
+ templates_for_node_role:
+# Specify templates for each type of node (node role), such as controller,
+# compute, storage, and so on. The order of templates
+# is important. For example, if you create a bond in one template and later
+# use it in the other template, you must place the template in which you
+# created the bond before the other template, so that the bond is created
+# before it is referenced in the other template.
+ controller:
+ - public
+ - private
+ - storage
+ - common
+ compute:
+ - common
+ - private
+ - storage
+ cinder:
+ - common
+ - storage
+ ceph-osd:
+ - common
+ - storage
+ network_assignments:
+# Specify an endpoint for each network, if you add additional custom networks,
+# add endpoints for these networks as well.
+ storage:
+ ep: br-storage
+ private:
+ ep: br-prv
+ public:
+ ep: br-ex
+ management:
+ ep: br-mgmt
+ fuelweb_admin:
+ ep: br-fw-admin
+ network_scheme:
+# Describe the network scheme for all node roles.
+# - transformations - describe actions required to create a network.
+# For service networks, such as Storage, Management, and Admin,
+# create a Linux bridge. For workload networks that
+# communicated with the OpenStack Networking service, such as
+# Private and Public service, create an Open vSwitch (OVS),
+# a Linux Bridge, a patch that connects the OVS with the Linux
+# bridge, and a port.
+# Available commands:
+#
+# * ``add-br`` - creates a bridge. By default, creates a Linux
+# bridge.
+#
+# * ``add-port`` - creates a port that connects a Linux bridge with a
+# physical network interface.
+#
+# * ``add-patch`` - connects two network bridges. All networks that
+# serve traffic to the control plane must have a patch that connects
+# the OVS bridge and the Linux bridge.
+#
+# * ``add-bond`` - add a network interface bonding for high workload
+# networks to increase performance and provide high availability.
+#
+# For more information about the properties that you can specify, see
+# the Fuel User Guide: http://docs.openstack.org/developer/fuel-docs.html.
+#
+# - endpoints - specify the list of logical endpoints for the networks
+# that you have defined in the network_assignments section.
+#
+# - roles - map network traffic (network roles) to logical endpoints in the
+# : format. The list of network roles is
+# available in the nailgun/nailgun/fixtures/openstack.yaml file.
+# Any type of traffic must be mentioned in the whole node network
+# group just once, therefore, do not repeat any type of traffic in multiple
+# entries. Otherwise, a network
+# conflict may occur. The roles section cannot be empty. If you do not
+# want to specify any type of traffic, create a fake mapping. For example:
+# roles:
+# fake/ext: br-pub-ext
+#
+# Plugins may have additional types of traffic. For more information, see
+# plugin documentation.
+#
+ storage:
+ transformations:
+ - action: add-br
+ name: br-storage
+ - action: add-port
+ bridge: br-storage
+ name: <% stor %>.1001
+ endpoints:
+ - br-storage
+ roles:
+ cinder/iscsi: br-storage
+ swift/replication: br-storage
+ ceph/replication: br-storage
+ storage: br-storage
+ private:
+ transformations:
+ - action: add-br
+ name: br-prv
+ provider: ovs
+ - action: add-br
+ name: br-aux
+ - action: add-patch
+ bridges:
+ - br-prv
+ - br-aux
+ provider: ovs
+ mtu: 65000
+ - action: add-port
+ bridge: br-aux
+ name: <% priv %>
+ endpoints:
+ - br-prv
+ roles:
+ neutron/private: br-prv
+ public:
+ transformations:
+ - action: add-br
+ name: br-ex
+ - action: add-br
+ name: br-floating
+ provider: ovs
+ - action: add-patch
+ bridges:
+ - br-floating
+ - br-ex
+ provider: ovs
+ mtu: 65000
+ - action: add-port
+ bridge: br-ex
+ name: <% pub %>
+ endpoints:
+ - br-ex
+ roles:
+ public/vip: br-ex
+ neutron/floating: br-floating
+ ceph/radosgw: br-ex
+ ex: br-ex
+ common:
+# In this example, the common template is created for Management and
+# Admin networks.
+ transformations:
+ - action: add-br
+ name: br-fw-admin
+ - action: add-port
+ bridge: br-fw-admin
+ name: <% adm %>
+ - action: add-br
+ name: br-mgmt
+ - action: add-port
+ bridge: br-mgmt
+ name: <% man %>
+ endpoints:
+ - br-fw-admin
+ - br-mgmt
+ roles:
+ admin/pxe: br-fw-admin
+ fw-admin: br-fw-admin
+ mongo/db: br-mgmt
+ management: br-mgmt
+ keystone/api: br-mgmt
+ neutron/api: br-mgmt
+ neutron/mesh: br-mgmt
+ swift/api: br-mgmt
+ sahara/api: br-mgmt
+ ceilometer/api: br-mgmt
+ cinder/api: br-mgmt
+ glance/api: br-mgmt
+ heat/api: br-mgmt
+ nova/api: br-mgmt
+ nova/migration: br-mgmt
+ murano/api: br-mgmt
+ horizon: br-mgmt
+ mgmt/api: br-mgmt
+ mgmt/memcache: br-mgmt
+ mgmt/database: br-mgmt
+ mgmt/messaging: br-mgmt
+ mgmt/corosync: br-mgmt
+ mgmt/vip: br-mgmt
+ mgmt/api: br-mgmt
+ ceph/public: br-mgmt
diff --git a/examples/network_templates/one_network.yaml b/examples/network_templates/one_network.yaml
new file mode 100644
index 000000000..289c83314
--- /dev/null
+++ b/examples/network_templates/one_network.yaml
@@ -0,0 +1,85 @@
+adv_net_template:
+ default:
+ network_assignments:
+ fuelweb_admin:
+ ep: br-fw-admin
+ network_scheme:
+ common:
+ endpoints:
+ - br-fw-admin
+ roles:
+ admin/pxe: br-fw-admin
+ ceilometer/api: br-fw-admin
+ ceph/public: br-fw-admin
+ cinder/api: br-fw-admin
+ fw-admin: br-fw-admin
+ glance/api: br-fw-admin
+ heat/api: br-fw-admin
+ horizon: br-fw-admin
+ keystone/api: br-fw-admin
+ management: br-fw-admin
+ mgmt/corosync: br-fw-admin
+ mgmt/database: br-fw-admin
+ mgmt/memcache: br-fw-admin
+ mgmt/messaging: br-fw-admin
+ mgmt/vip: br-fw-admin
+ mongo/db: br-fw-admin
+ murano/api: br-fw-admin
+ neutron/api: br-fw-admin
+ neutron/mesh: br-fw-admin
+ nova/api: br-fw-admin
+ nova/migration: br-fw-admin
+ sahara/api: br-fw-admin
+ swift/api: br-fw-admin
+ neutron/private: br-fw-admin
+ ceph/radosgw: br-fw-admin
+ ex: br-fw-admin
+ neutron/floating: br-floating
+ public/vip: br-fw-admin
+ ceph/replication: br-fw-admin
+ cinder/iscsi: br-fw-admin
+ storage: br-fw-admin
+ swift/replication: br-fw-admin
+ swift/public: br-fw-admin
+ transformations:
+ - action: add-br
+ name: br-fw-admin
+ - action: add-port
+ bridge: br-fw-admin
+ name: <% if1 %>
+ - action: add-br
+ name: br-aux
+ - action: add-br
+ name: br-prv
+ provider: ovs
+ - action: add-patch
+ bridges:
+ - br-prv
+ - br-fw-admin
+ mtu: 65000
+ provider: ovs
+ - action: add-br
+ name: br-floating
+ provider: ovs
+ - action: add-patch
+ bridges:
+ - br-floating
+ - br-fw-admin
+ mtu: 65000
+ provider: ovs
+ nic_mapping:
+ default:
+ if1: eth0
+ templates_for_node_role:
+ cinder:
+ - common
+ compute:
+ - common
+ controller:
+ - common
+ ceph-osd:
+ - common
+ mongo:
+ - common
+
+
diff --git a/examples/network_templates/two_networks.yaml b/examples/network_templates/two_networks.yaml
new file mode 100644
index 000000000..fd379836a
--- /dev/null
+++ b/examples/network_templates/two_networks.yaml
@@ -0,0 +1,93 @@
+adv_net_template:
+ default:
+ network_assignments:
+ fuelweb_admin:
+ ep: br-fw-admin
+ everything:
+ ep: br-all
+ network_scheme:
+ common:
+ endpoints:
+ - br-all
+ - br-fw-admin
+ roles:
+ admin/pxe: br-fw-admin
+ ceilometer/api: br-all
+ ceph/public: br-all
+ cinder/api: br-all
+ fw-admin: br-fw-admin
+ glance/api: br-all
+ heat/api: br-all
+ horizon: br-all
+ keystone/api: br-all
+ management: br-all
+ mgmt/corosync: br-all
+ mgmt/database: br-all
+ mgmt/memcache: br-all
+ mgmt/messaging: br-all
+ mgmt/vip: br-all
+ mongo/db: br-all
+ murano/api: br-all
+ neutron/api: br-all
+ neutron/mesh: br-all
+ nova/api: br-all
+ nova/migration: br-all
+ sahara/api: br-all
+ swift/api: br-all
+ neutron/private: br-all
+ ceph/radosgw: br-all
+ ex: br-all
+ neutron/floating: br-floating
+ public/vip: br-all
+ ceph/replication: br-all
+ cinder/iscsi: br-all
+ storage: br-all
+ swift/replication: br-all
+ swift/public: br-all
+ transformations:
+ - action: add-br
+ name: br-fw-admin
+ - action: add-port
+ bridge: br-fw-admin
+ name: <% if1 %>
+ - action: add-br
+ name: br-all
+ - action: add-port
+ bridge: br-all
+ name: <% if2 %>
+ - action: add-br
+ name: br-aux
+ - action: add-br
+ name: br-prv
+ provider: ovs
+ - action: add-patch
+ bridges:
+ - br-prv
+ - br-all
+ mtu: 65000
+ provider: ovs
+ - action: add-br
+ name: br-floating
+ provider: ovs
+ - action: add-patch
+ bridges:
+ - br-floating
+ - br-all
+ mtu: 65000
+ provider: ovs
+ nic_mapping:
+ default:
+ if1: eth0
+ if2: eth1
+ templates_for_node_role:
+ cinder:
+ - common
+ compute:
+ - common
+ controller:
+ - common
+ ceph-osd:
+ - common
+ mongo:
+ - common
+
diff --git a/examples/network_templates/two_nodegroups.yaml b/examples/network_templates/two_nodegroups.yaml
new file mode 100644
index 000000000..b2b112e53
--- /dev/null
+++ b/examples/network_templates/two_nodegroups.yaml
@@ -0,0 +1,285 @@
+adv_net_template:
+ default:
+ nic_mapping:
+ default:
+ if11: eth0 # admin
+ if12: eth1 # public
+ if13: eth2 # management
+ if14: eth3 # private
+ if15: eth4 # storage
+ templates_for_node_role:
+ controller:
+ - admin
+ - public
+ - management
+ - private
+ - storage
+ compute:
+ - admin
+ - public
+ - management
+ - private
+ - storage
+ cinder:
+ - admin
+ - public
+ - management
+ - private
+ - storage
+ network_assignments:
+ storage:
+ ep: br-storage
+ private:
+ ep: br-prv
+ public:
+ ep: br-ex
+ management:
+ ep: br-mgmt
+ fuelweb_admin:
+ ep: br-fw-admin
+ network_scheme:
+ admin:
+ transformations:
+ - action: add-br
+ name: br-fw-admin
+ - action: add-port
+ bridge: br-fw-admin
+ name: eth0
+ endpoints:
+ - br-fw-admin
+ roles:
+ admin/pxe: br-fw-admin
+ fw-admin: br-fw-admin
+ public:
+ transformations:
+ - action: add-br
+ name: br-ex
+ - action: add-br
+ name: br-floating
+ provider: ovs
+ - action: add-patch
+ bridges:
+ - br-floating
+ - br-ex
+ provider: ovs
+ mtu: 65000
+ - action: add-port
+ bridge: br-ex
+ name: eth1
+ endpoints:
+ - br-ex
+ roles:
+ public/vip: br-ex
+ neutron/floating: br-ex
+ ex: br-ex
+ public: br-ex
+ management:
+ transformations:
+ - action: add-br
+ name: br-mgmt
+ - action: add-port
+ bridge: br-mgmt
+ name: eth2
+ endpoints:
+ - br-mgmt
+ roles:
+ management: br-mgmt
+ mgmt/vip: br-mgmt
+ mgmt/api: br-mgmt
+ mongo/db: br-mgmt
+ keystone/api: br-mgmt
+ neutron/api: br-mgmt
+ neutron/mesh: br-mgmt
+ swift/api: br-mgmt
+ sahara/api: br-mgmt
+ ceilometer/api: br-mgmt
+ cinder/api: br-mgmt
+ glance/api: br-mgmt
+ heat/api: br-mgmt
+ nova/api: br-mgmt
+ nova/migration: br-mgmt
+ murano/api: br-mgmt
+ horizon: br-mgmt
+ mgmt/messaging: br-mgmt
+ mgmt/corosync: br-mgmt
+ mgmt/memcache: br-mgmt
+ mgmt/database: br-mgmt
+ cinder/iscsi: br-mgmt
+ swift/replication: br-mgmt
+ ceph/replication: br-mgmt
+ ceph/radosgw: br-mgmt
+ private:
+ transformations:
+ - action: add-br
+ name: br-prv
+ provider: ovs
+ - action: add-br
+ name: br-aux
+ - action: add-patch
+ bridges:
+ - br-prv
+ - br-aux
+ provider: ovs
+ mtu: 65000
+ - action: add-port
+ bridge: br-aux
+ name: eth3
+ endpoints:
+ - br-prv
+ roles:
+ private: br-prv
+ neutron/private: br-prv
+ storage:
+ transformations:
+ - action: add-br
+ name: br-storage
+ - action: add-port
+ bridge: br-storage
+ name: eth4
+ endpoints:
+ - br-storage
+ roles:
+ storage: br-storage
+ ceph/public: br-storage
+ group-custom-1:
+ nic_mapping:
+ default:
+ if11: eth0 # admin
+ if12: eth1 # public
+ if13: eth2 # management
+ if14: eth3 # private
+ if15: eth4 # storage
+ templates_for_node_role:
+ controller:
+ - admin
+ - public
+ - management
+ - private
+ - storage
+ compute:
+ - admin
+ - public
+ - management
+ - private
+ - storage
+ cinder:
+ - admin
+ - public
+ - management
+ - private
+ - storage
+ network_assignments:
+ storage:
+ ep: br-storage
+ private:
+ ep: br-prv
+ public:
+ ep: br-ex
+ management:
+ ep: br-mgmt
+ fuelweb_admin:
+ ep: br-fw-admin
+ network_scheme:
+ admin:
+ transformations:
+ - action: add-br
+ name: br-fw-admin
+ - action: add-port
+ bridge: br-fw-admin
+ name: eth0
+ endpoints:
+ - br-fw-admin
+ roles:
+ admin/pxe: br-fw-admin
+ fw-admin: br-fw-admin
+ public:
+ transformations:
+ - action: add-br
+ name: br-ex
+ - action: add-br
+ name: br-floating
+ provider: ovs
+ - action: add-patch
+ bridges:
+ - br-floating
+ - br-ex
+ provider: ovs
+ mtu: 65000
+ - action: add-port
+ bridge: br-ex
+ name: eth1
+ endpoints:
+ - br-ex
+ roles:
+ public/vip: br-ex
+ neutron/floating: br-ex
+ ex: br-ex
+ public: br-ex
+ management:
+ transformations:
+ - action: add-br
+ name: br-mgmt
+ - action: add-port
+ bridge: br-mgmt
+ name: eth2
+ endpoints:
+ - br-mgmt
+ roles:
+ management: br-mgmt
+ mgmt/vip: br-mgmt
+ mgmt/api: br-mgmt
+ mongo/db: br-mgmt
+ keystone/api: br-mgmt
+ neutron/api: br-mgmt
+ neutron/mesh: br-mgmt
+ swift/api: br-mgmt
+ sahara/api: br-mgmt
+ ceilometer/api: br-mgmt
+ cinder/api: br-mgmt
+ glance/api: br-mgmt
+ heat/api: br-mgmt
+ nova/api: br-mgmt
+ nova/migration: br-mgmt
+ murano/api: br-mgmt
+ horizon: br-mgmt
+ mgmt/messaging: br-mgmt
+ mgmt/corosync: br-mgmt
+ mgmt/memcache: br-mgmt
+ mgmt/database: br-mgmt
+ cinder/iscsi: br-mgmt
+ swift/replication: br-mgmt
+ ceph/replication: br-mgmt
+ ceph/radosgw: br-mgmt
+ private:
+ transformations:
+ - action: add-br
+ name: br-prv
+ provider: ovs
+ - action: add-br
+ name: br-aux
+ - action: add-patch
+ bridges:
+ - br-prv
+ - br-aux
+ provider: ovs
+ mtu: 65000
+ - action: add-port
+ bridge: br-aux
+ name: eth3
+ endpoints:
+ - br-prv
+ roles:
+ private: br-prv
+ neutron/private: br-prv
+ storage:
+ transformations:
+ - action: add-br
+ name: br-storage
+ - action: add-port
+ bridge: br-storage
+ name: eth4
+ endpoints:
+ - br-storage
+ roles:
+ storage: br-storage
+ ceph/public: br-storage
diff --git a/userdocs/fuel-user-guide/configure-environment.rst b/userdocs/fuel-user-guide/configure-environment.rst
index 02e68d73c..761105065 100644
--- a/userdocs/fuel-user-guide/configure-environment.rst
+++ b/userdocs/fuel-user-guide/configure-environment.rst
@@ -21,7 +21,7 @@ This section includes the following topics:
PageBreak
.. toctree::
- :maxdepth: 3
+ :maxdepth: 1
configure-environment/add-nodes.rst
configure-environment/add-label.rst
@@ -33,6 +33,7 @@ This section includes the following topics:
configure-environment/selectable-offload.rst
configure-environment/map-logical-to-physical-nic.rst
configure-environment/verify-networks.rst
+ configure-environment/network-templates.rst
configure-environment/customize-partitions.rst
configure-environment/config-drive-format.rst
configure-environment/settings.rst
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates.rst b/userdocs/fuel-user-guide/configure-environment/network-templates.rst
new file mode 100644
index 000000000..a240e4ea4
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates.rst
@@ -0,0 +1,31 @@
+.. _network-templates-intro:
+
+Deploy network configurations using network templates
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+By default, Fuel configures the following networks (Linux bridges): Public,
+Private, Storage, Admin (PXE), and Management. In addition, if you install the
+OpenStack Bare Metal service, Fuel creates the Baremetal network. If you need
+to add a custom network or do not need any of the default networks, you can
+configure or delete the required networks through network templates.
+
+Network templates enable you to:
+
+* Create a custom set of networks.
+* Create mappings of network roles to networks.
+* Use a network on a specific node only if a corresponding node role is
+ configured on the node
+* Implement custom networking topologies, such as sub-interface bonding,
+ and so on.
+
+This section includes the following topics:
+
+.. toctree::
+ :maxdepth: 1
+
+ network-templates/network-templates-overview.rst
+ network-templates/network-templates-limitations.rst
+ network-templates/network-templates-structure.rst
+ network-templates/network-templates-create.rst
+ network-templates/network-templates-delete.rst
+ network-templates/network-templates-examples.rst
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/examples/one-network.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/examples/one-network.rst
new file mode 100644
index 000000000..2fda2565a
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/examples/one-network.rst
@@ -0,0 +1,29 @@
+.. _one-network:
+
+Configure a single network topology
+-----------------------------------
+
+Fuel supports a single network configuration where one network serves
+all OpenStack traffic. This configuration is common in
+proof of concept deployments where no additional networks are
+available.
+
+**To configure a single network:**
+
+#. Save `network template for one network
+ `_
+ as ``network_template_.yaml``.
+
+#. Upload the network template by typing:
+
+ ::
+
+ # fuel network-template --upload --env
+
+#. Deploy the OpenStack environment.
+#. Allocate the correct floating IP pool to the network.
+
+ #. Clear the gateway from `router04`.
+ #. Delete the `admin_floating_net__subnet` subnet.
+ #. Create a new subnet with the floating IP pool from the single network.
+ #. Set gateway on `router04`.
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/examples/two-networks.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/examples/two-networks.rst
new file mode 100644
index 000000000..293fd6d6c
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/examples/two-networks.rst
@@ -0,0 +1,75 @@
+.. _two-networks:
+
+Configure the two-network topology
+----------------------------------
+
+Fuel supports two-network configuration where one network is
+dedicated for PXE traffic and another network for
+all other traffic.
+
+**To configure a two-network topology:**
+
+1. Create a new network for all non-PXE traffic:
+
+ ::
+
+ # fuel network-group --create --name everything --cidr
+ --gateway --nodegroup
+
+2. Set the ``render_addr_mask`` parameter to `internal` for this network by
+ typing:
+
+ ::
+
+ # fuel network-group --set --network 39 --meta '{"name":
+ "everything", "notation": "cidr", "render_type": null, "map_priority": 2,
+ "configurable": true, "use_gateway": true, "render_addr_mask":
+ "internal", "vlan_start": null, "cidr": "10.108.31.0/24"}'
+
+ This parameter is required by the Fuel library. The Fuel library requires
+ a value called ``internal_address`` for each node.
+ This value is set to the node's IP address from a network group which has
+ ``render_addr_mask`` set to `internal` in its metadata. Therefore, update
+ ``render_addr_mask`` for this network.
+
+3. Save `network template for two networks
+ `_
+ as ``network_template_.yaml``.
+
+ .. note::
+ Verify that ``nic_mapping`` matches your configuration.
+
+4. Upload the network template by typing:
+
+ ::
+
+ # fuel network-template --upload --env
+
+5. Deploy the environment.
+6. After Fuel completes the deployment, verify that only one bridge is
+ configured by typing:
+
+ ::
+
+ # ip -4 a
+
+ **Example of system output:**
+
+ ::
+
+ 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group
+ default
+ inet 127.0.0.1/8 scope host lo
+ valid_lft forever preferred_lft forever
+ 8: br-fw-admin: mtu 1500 qdisc noqueue
+ state UP group default
+ inet 10.108.5.3/24 brd 10.108.5.255 scope global br-fw-admin
+ valid_lft forever preferred_lft forever
+ 16: vr-host-base: mtu 1500 qdisc
+ pfifo_fast state UP group default qlen 1000
+ inet 240.0.0.5/30 scope global vr-host-base
+ valid_lft forever preferred_lft forever
+ 30: hapr-host: mtu 1500 qdisc pfifo_fast
+ state UP group default qlen 1000
+ inet 240.0.0.1/30 scope global hapr-host
+ valid_lft forever preferred_lft forever
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-create.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-create.rst
new file mode 100644
index 000000000..e2d3811da
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-create.rst
@@ -0,0 +1,127 @@
+.. _network-templates-create:
+
+Create a network template
+-------------------------
+
+You can use one of the network templates provided in
+:ref:`network-templates-examples`.
+However, if these templates do not meet your networking requirements,
+you can create your own. We strongly recommend that you use the
+``default.yaml`` network template provided in this documentation to
+build your own network template.
+
+.. note::
+ When you configure a network using network templates, you cannot apply
+ changes to the nodes network configuration using the Fuel web UI. For
+ example, if you configure an OpenStack environment using network
+ templates, deploy the OpenStack environment, and later decide to add
+ new nodes, you must update network configuration of these nodes using
+ network templates and do not use the Fuel web-UI. However, templates do
+ not describe the level 2 and level 3 network settings. Therefore, you
+ must set them using Fuel web UI, CLI, or API.
+
+After uploading a network template, you must create and/or
+delete networks and node groups using the Fuel CLI to reflect the uploaded
+network configuration. Otherwise, the configuration specified in the network
+template will not take effect and may result in a malfunction.
+
+**To create a network template:**
+
+#. Create a ``.yaml`` file.
+#. Specify your network configuration in the ``.yaml`` file following
+ the conventions described in :ref:`network-templates-structure`.
+#. Log in to the Fuel Master node CLI.
+#. Display the ID of the environment in which you want to upload the
+ template:
+
+ ::
+
+ fuel environment
+
+#. Upload the network template to Fuel:
+
+ ::
+
+ fuel --env network-template --upload --dir
+
+ **Example:**
+
+ ::
+
+ fuel --env 1 network-template --upload --dir /home/stack/
+
+#. Add or delete custom networks that you have introduced through
+ the network template:
+
+ * If you need to delete a network:
+
+ #. View the ID of the network by typing:
+
+ ::
+
+ fuel network-group
+
+ **Example of system response:**
+
+ ::
+
+ id | name | vlan_start | cidr | gateway |group_id
+ ---+---------------+------------+--------------+----------+--------
+ 24 | private | | | | 4
+ 23 | private | | | | 5
+ 22 | storage | 102 | 10.10.1.0/24 | 10.1.1.1 | 5
+ 25 | management | 101 | 10.10.0.0/24 | 10.0.0.1 | 4
+ 21 | public | | 10.10.0.0/24 | 10.10.0.1| 4
+
+ #. Delete the required network using the network ID.
+
+ ::
+
+ fuel network-group --delete --env --network
+
+
+ * If you need to add a new network, type:
+
+ ::
+
+ fuel network-group --create --node-group --name
+ --vlan --cidr
+
+#. Add or delete custom networks as described in
+ :ref:`cli-network-group`.
+
+#. Configure L2 and L3 network settings:
+
+ .. note:: You cannot modify VLAN settings through the Fuel web UI or CLI
+ Configure VLAN settings in the network template.
+
+ * Using Fuel web UI:
+
+ #. Log in to the Fuel web UI.
+ #. Click :guilabel:`Networks`.
+ #. Configure :guilabel:`Network Settings` as required.
+
+ .. note:: If you add additional node network group with different from the
+ default node network group settings, update the network template
+ with the required changes.
+
+ * Using Fuel CLI:
+
+ #. Log in to the Fuel CLI.
+ #. Download network configuration:
+
+ ::
+
+ fuel --env network --download
+
+ #. Make the required changes in the network ``.yaml`` file.
+ #. Upload the configuration to the Fuel Master node:
+
+ ::
+
+ fuel --env network --upload
+
+.. seealso::
+
+ - :ref:`cli-network-group`
+ - :ref:`cli-network-template`
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-delete.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-delete.rst
new file mode 100644
index 000000000..4f5743162
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-delete.rst
@@ -0,0 +1,32 @@
+.. _network-template-delete:
+
+Delete a network template
+-------------------------
+
+You can delete a network template that you have previously uploaded.
+
+.. warning::
+
+ Do not delete network templates that are used in your OpenStack
+ environment as it may result in failure of the whole network
+ configuration.
+
+**To delete a network template:**
+
+#. Log in to the Fuel Master node CLI.
+#. Type:
+
+ ::
+
+ fuel --env network-template --delete
+
+ **Example:**
+
+ ::
+
+ fuel --env 1 network-template --delete
+
+.. seealso::
+
+ - :ref:`cli-network-group`
+ - :ref:`cli-network-template`
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-examples.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-examples.rst
new file mode 100644
index 000000000..279c8addc
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-examples.rst
@@ -0,0 +1,35 @@
+.. _network-templates-examples:
+
+Network template examples
+=========================
+
+This section provides examples of network configurations
+using network templates. You can use the default template
+and modify it for your requirements or use any of the templates provided
+in the `network templates folder `_.
+
+The following table describes network template examples:
+
+.. list-table:: **Examples of network templates**
+ :widths: 10 10
+ :header-rows: 1
+
+ * - Template
+ - Description
+ * - ``default.yaml``
+ - The default network template deploys the basic configuration that you
+ can deploy using the Fuel web UI. You can use this template to create
+ your own network template. Additional information about network
+ configuration using network templates provided in the file.
+ * - ``one_network.yaml``
+ - A network template that describes a configuration in which one network
+ serves all traffic.
+ * - ``two_networks.yaml``
+ - A network template that describes a configuration in which all traffic
+ is served by two networks.
+
+.. toctree::
+ :maxdepth: 1
+
+ examples/one-network.rst
+ examples/two-networks.rst
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-limitations.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-limitations.rst
new file mode 100644
index 000000000..4f675af44
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-limitations.rst
@@ -0,0 +1,18 @@
+.. _network-templates-limitations:
+
+Network template limitations
+----------------------------
+
+When using network templates, consider the following limitations:
+
+* All operations with templates must be performed through CLI or API.
+ The Fuel web UI does not support network templates.
+* The Public network which maps to the External network in OpenStack
+ cannot be removed.
+* When you use network templates, do not download and modify Fuel
+ deployment configurations using the ``fuel download`` and
+ ``fuel upload`` commands as it may result in system malfunction.
+* Mapping of network roles to networks, as well as network topology cannot
+ be configured for individual nodes. They can only be set for a node role
+ or/and node group.
+* Network verification in the Fuel web UI has limited support.
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-overview.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-overview.rst
new file mode 100644
index 000000000..7749473a8
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-overview.rst
@@ -0,0 +1,17 @@
+.. _network-templates-overview:
+
+Overview of network templates
+-----------------------------
+
+A network template is a ``.yaml`` file that contains network configuration
+for an OpenStack environment. To apply custom network
+configurations, create and configure
+the template according to your environment requirements. For your convenience,
+use the following :ref:` Network template examples`.
+
+The name of the network template
+must follow this convention: ``network_template_.yaml``. Verify the
+ID of your OpenStack environment by running the ``fuel environment`` command.
+
+For example, if the ID of an OpenStack environment is ``1``, the name of the
+template is ``network_template_1.yaml``.
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure.rst
new file mode 100644
index 000000000..ad3843b79
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure.rst
@@ -0,0 +1,19 @@
+.. _network-templates-structure:
+
+Structure of network templates
+------------------------------
+
+You can use the structure described in this section, as well
+as the default template, to create a template that meets the
+requirements of your configuration.
+
+Network parameters are defined in the ``adv_net_template``
+section in the ``network_template_.yaml`` file.
+
+.. toctree::
+ :maxdepth: 1
+
+ network-templates-structure/network_scheme.rst
+ network-templates-structure/nic_mapping.rst
+ network-templates-structure/templates_for_node_role.rst
+ network-templates-structure/network_assignment.rst
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/network_assignment.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/network_assignment.rst
new file mode 100644
index 000000000..03c730f72
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/network_assignment.rst
@@ -0,0 +1,27 @@
+.. _network-assignment:
+
+network_assignment
+------------------
+
+**Description**
+
+Describes mapping between endpoints and network names. The **Example**
+section describes the mapping that Fuel configures by default
+without using templates. The set of networks can be changed
+using API.
+
+**Example**
+
+::
+
+ network_assignments:
+ storage:
+ ep: br-storage
+ private:
+ ep: br-prv
+ public:
+ ep: br-ex
+ management:
+ ep: br-mgmt
+ fuelweb_admin:
+ ep: br-fw-admin
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/network_scheme.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/network_scheme.rst
new file mode 100644
index 000000000..26bbefdab
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/network_scheme.rst
@@ -0,0 +1,200 @@
+.. _network-scheme:
+
+network_scheme
+--------------
+
+**Description**
+
+Defines the name of the network template as well as the following
+parameters that are applied to each network that needs to be
+configured:
+
+* ``priority`` - defines the order in which the network templates will
+ be applied to a node. The values range 0 to 64000.
+ For example, you can set ``100``, ``200``, ``300`` with ``100``
+ being the highest priority template.
+
+* ``transformations`` - a sequence of actions that builds the required
+ network configuration. For example: ``add-br`` - add a network
+ bridge, ``add-port`` - add a network port. The Puppet L23network
+ module creates network objects described in the ``transformations``
+ section that connect physical interfaces with logical endpoints. Order
+ of commands specified in this section is significant.
+
+ The sequence of commands that create network configuration must
+ be reflected in the transformation section:
+
+ * For service networks:
+
+ #. Create a Linux bridge. By default, if you do not specify a
+ provider a Linux bridge is created.
+ #. Create a network port that connects the Linux bridge and the
+ physical network interface.
+
+ * For workload networks:
+
+ #. Create an OVS bridge as a first point of connection between
+ the OpenStack Networking service and the physical network
+ interface.
+
+ #. Create a Linux bridge. Since an OVS bridge cannot directly connect
+ to a physical interface, a Linux bridge is required.
+
+ #. Create a patch that connects Linux and OVS bridges.
+
+ #. Create a network port that connects the Linux bridge and the
+ physical network interface.
+
+ You can specify the following commands in the ``transformation``
+ section:
+
+ * ``add-br`` - creates a bridge. By default, creates a Linux
+ bridge. You can specify the following parameters for this command:
+
+ * ``name`` - name of the network bridge. For example, ``br-admin``.
+
+ * ``provider`` - a network technology such as Open vSwitch (OVS) or
+ Linux Bridge, that connects physical interface with
+ the OpenStack Networking service. Default provider is Linux
+ Bridge. The options are: ``linux``, ``ovs``.
+
+ * ``mtu`` - (optional) enables you to specify MTU for this network bridge.
+
+ * ``add-port`` - create a port that connects a Linux bridge with a
+ physical network interface. You can specify the following parameters
+ for this command:
+
+ * ``name`` - name of the network port.
+
+ * ``bridge`` - name of the bridge for which the port is created.
+
+ * ``type`` - (optional) A type of the OVS interface for the port.
+ Default value is ``internal``. Available options include:
+ ``internal``, ``system``, ``tap``, ``gre``, ``null``.
+ See the OVS documentation for more details. Specify
+
+ * ``trunks`` - (optional) a set of 802.1q tags in the form of integers
+ from 0 to 4095) that are allowed to pass through if the "tag"
+ option equals 0. Available options include:
+
+ * Empty list - all traffic passes
+ * 0 - untagged traffic only.
+ * 2-4095 - traffic with the specified tag passes.
+ For example, 10,10,20.
+
+ * ``port_properties`` - (optional) a list of additional OVS port
+ properties to modify them in OVS database.
+
+ * ``interface_properties`` (optional) a list of additional OVS interface
+ properties to modify them in OVS database.
+
+ * ``add-patch`` - connects network bridges. Available parameters include:
+
+ * ``bridges`` - a pair of bridges to connect. You can specify either
+ bridges of the same type or of different types.
+
+ * ``peers`` - (optional) abstract names for each end of the patch.
+
+ * ``tags`` - (optional) a pair of integers that represent an
+ 802.1q tag of traffic that is captured from a corresponding
+ OVS bridge. Available values include:
+
+ * 0 - only the untagged traffic passes through
+ * 1-4094 - the bond allows only the traffic with the specific tag.
+ Specify the tags in the ``trunks`` parameter.
+
+ * ``trunks`` - (optional) a set of 802.1q tags in a form of
+ integers from 2 to 4095 which are allowed to pass through if the
+ ``tag`` parameter is set to ``0``. Available values include:
+
+ * Empty list - all traffic passes (default)
+ * 0 - untagged traffic only
+ * 2-4095 - traffic with the specified tag passes). For example, 0,10,20.
+
+ * ``add-bond`` - combines two or more network interfaces for redundancy
+ and creates a network object called bond. You can specify
+ the following parameters for this command:
+
+ * ``name`` - name of the network port.
+
+ * ``interfaces`` - a set of two or more network interfaces that you
+ want to bind. For example, ``eth1, eth2``.
+
+ * ``bridge`` - name of the bridge on which the bond must be created.
+
+ * ``tag`` - (optional) a 802.1q tag of traffic which
+ received from an OVS bridge. Available values include:
+
+ * 0 - the bond ignores the tag and allows all traffic to pass
+ through.
+
+ * 1 - 4094 - the bond allows only the traffic with the specific tag.
+ Specify the tags in the ``trunks`` parameter.
+
+ * ``trunks`` - (optional) a set of 802.1q tags in a form of
+ integers from 2 to 4095 which are allowed to pass through if the
+ ``tag`` parameter is set to ``0``. Available values include:
+
+ * Empty list - all traffic passes (default)
+ * 0 - untagged traffic only
+ * 2-4095 - traffic with the specified tag passes). For example, 0,10,20.
+
+ * ``properties`` - (optional) a list of additional OVS bonded port
+ properties to modify them in the OVS database. Use this parameter
+ to set the aggregation mode and balancing strategy, to configure LACP,
+ and so on. For more informations, see the OVS documentation.
+
+* ``endpoints`` - lists logical interfaces or bridges
+ with assigned IP addresses to which you can map one or more network
+ roles.
+
+* ``roles`` - mapping of a network traffic to a logical endpoint. When you
+ apply multiple templates to one node, verify that this parameter
+ in one template does not contradict this parameter in other templates.
+ The list of supported network traffics (network roles) is available in the
+ ``openstack.yaml`` file on the Fuel Master node. If you have Fuel plugins
+ installed in your environment, you can also map network traffic related
+ to the plugin. For the list of types of network traffic related to the
+ plugin, see the corresponding ``network_roles.yaml`` file in the plugin
+ repository.
+ The ``roles`` section cannot be empty. If you do not want to specify any
+ mappings, you must create one fake mapping. For example:
+
+ **Example:**
+
+ ::
+
+ roles:
+ fake/ext: br-pub-ext
+
+
+**Example**
+
+::
+
+ network_scheme:
+ storage:
+ priority:
+ ...
+ transformations:
+ ...
+ endpoints:
+ ...
+ roles:
+ ...
+ private:
+ priority:
+ ...
+ transformations:
+ ...
+ endpoints:
+ ...
+ roles:
+ ...
+
+.. seealso::
+
+ - `Network template spec
+ `_
+ - `Virtual IP reservation for Fuel plugins
+ `_
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/nic_mapping.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/nic_mapping.rst
new file mode 100644
index 000000000..22934644b
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/nic_mapping.rst
@@ -0,0 +1,30 @@
+.. _nic-mapping:
+
+nic_mapping
+-----------
+
+**Description**
+
+Specifies aliases to network interface names mapping,
+for example, ``adm: eth0``. If a node is not listed in this section,
+default mapping applies. You can configure custom mapping for
+any node by the node name. The number of NICs depends on the
+network topology and may vary. Aliases are optional and if
+all nodes have the same number of NICs connected in a similar
+manner, you can use NIC names instead.
+
+**Example**
+
+::
+
+ nic_mapping:
+ default:
+ adm: eth0
+ pub: eth1
+ man: eth2
+ stor: eth3
+ node-33:
+ adm: eth0
+ pub: eth4
+ man: eth1
+ stor: eth2
diff --git a/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/templates_for_node_role.rst b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/templates_for_node_role.rst
new file mode 100644
index 000000000..700a0714e
--- /dev/null
+++ b/userdocs/fuel-user-guide/configure-environment/network-templates/network-templates-structure/templates_for_node_role.rst
@@ -0,0 +1,35 @@
+.. _templates-for-node-role:
+
+templates_for_node_role
+-----------------------
+
+**Description**
+
+List of network schemes for every node role used in the environment.
+The order of the template names is significant and must be provided
+according to your configuration requirements. For example, first
+the Puppet module must create a network bridge and then the
+corresponding sub-interface and not vice versa. While templates
+can be reused for different node roles, each template is executed
+once for every node.
+When several roles are mixed on one node and no priority is set,
+an alphabetical order of node roles is used to determine the final
+order of the templates.
+
+**Example**
+
+::
+
+ templates_for_node_role:
+ controller:
+ - public
+ - private
+ - storage
+ - common
+ compute:
+ - common
+ - private
+ - storage
+ ceph-osd:
+ - common
+ - storage