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: