Merge "Add documentation about physical network config"
This commit is contained in:
commit
3df008fdc4
@ -6,5 +6,6 @@ Configuration Guide
|
|||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
kayobe
|
kayobe
|
||||||
|
physical-network
|
||||||
network
|
network
|
||||||
kolla-ansible
|
kolla-ansible
|
||||||
|
261
doc/source/configuration/physical-network.rst
Normal file
261
doc/source/configuration/physical-network.rst
Normal file
@ -0,0 +1,261 @@
|
|||||||
|
==============================
|
||||||
|
Physical Network Configuration
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Kayobe supports configuration of physical network devices. This feature is
|
||||||
|
optional, and this section may be skipped if network device configuration will
|
||||||
|
be managed via other means.
|
||||||
|
|
||||||
|
Devices are added to the Ansible inventory, and configured using Ansible's
|
||||||
|
networking modules. Configuration is applied via the ``kayobe physical network
|
||||||
|
configure`` command. See :ref:`physical-network` for details.
|
||||||
|
|
||||||
|
The following switches are currently supported:
|
||||||
|
|
||||||
|
* Dell OS 6
|
||||||
|
* Dell OS 9
|
||||||
|
* Dell PowerConnect
|
||||||
|
* Juniper Junos OS
|
||||||
|
* Mellanox MLNX OS
|
||||||
|
|
||||||
|
Adding Devices to the Inventory
|
||||||
|
===============================
|
||||||
|
|
||||||
|
Network devices should be added to the Kayobe Ansible inventory, and should be
|
||||||
|
members of the ``switches`` group.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
:caption: ``inventory/hosts``
|
||||||
|
|
||||||
|
[switches]
|
||||||
|
switch0
|
||||||
|
switch1
|
||||||
|
|
||||||
|
In some cases it may be useful to differentiate different types of switches,
|
||||||
|
For example, a ``mgmt`` network might carry out-of-band management traffic, and
|
||||||
|
a ``ctl`` network might carry control plane traffic. A group could be created
|
||||||
|
for each of these networks, with each group being a child of the ``switches``
|
||||||
|
group.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
:caption: ``inventory/hosts``
|
||||||
|
|
||||||
|
[switches:children]
|
||||||
|
mgmt-switches
|
||||||
|
ctl-switches
|
||||||
|
|
||||||
|
[mgmt-switches]
|
||||||
|
switch0
|
||||||
|
|
||||||
|
[ctl-switches]
|
||||||
|
switch1
|
||||||
|
|
||||||
|
Network Device Configuration
|
||||||
|
============================
|
||||||
|
|
||||||
|
Configuration is typically specific to each network device. It is therefore
|
||||||
|
usually best to add a ``host_vars`` file to the inventory for each device.
|
||||||
|
Common configuration for network devices can be added in a ``group_vars`` file
|
||||||
|
for the ``switches`` group or one of its child groups.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
:caption: ``inventory/host_vars/switch0``
|
||||||
|
|
||||||
|
---
|
||||||
|
# Host configuration for switch0
|
||||||
|
ansible_host: 1.2.3.4
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
:caption: ``inventory/host_vars/switch1``
|
||||||
|
|
||||||
|
---
|
||||||
|
# Host configuration for switch1
|
||||||
|
ansible_host: 1.2.3.5
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
:caption: ``inventory/group_vars/switches``
|
||||||
|
|
||||||
|
---
|
||||||
|
# Group configuration for 'switches' group.
|
||||||
|
ansible_user: alice
|
||||||
|
|
||||||
|
Common Configuration Variables
|
||||||
|
==============================
|
||||||
|
|
||||||
|
The type of switch should be configured via the ``switch_type`` variable. See
|
||||||
|
:ref:`physical-network-device-specific` for details of the value to set for
|
||||||
|
each device type.
|
||||||
|
|
||||||
|
``ansible_host`` should be set to the management IP address used to access the
|
||||||
|
device. ``ansible_user`` should be set to the user used to access the device.
|
||||||
|
|
||||||
|
Global switch configuration is specified via the ``switch_config`` variable.
|
||||||
|
It should be a list of configuration lines to apply.
|
||||||
|
|
||||||
|
Per-interface configuration is specified via the ``switch_interface_config``
|
||||||
|
variable. It should be an object mapping switch interface names to
|
||||||
|
configuration objects. Each configuration object contains a ``description``
|
||||||
|
item and a ``config`` item. The ``config`` item should contain a list of
|
||||||
|
per-interface configuration lines.
|
||||||
|
|
||||||
|
The ``switch_interface_config_enable_discovery`` and
|
||||||
|
``switch_interface_config_disable_discovery`` variables take the same format as
|
||||||
|
the ``switch_interface_config`` variable. They define interface configuration
|
||||||
|
to apply to enable or disable hardware discovery of bare metal compute nodes.
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
:caption: ``inventory/host_vars/switch0``
|
||||||
|
|
||||||
|
---
|
||||||
|
ansible_host: 1.2.3.4
|
||||||
|
|
||||||
|
ansible_user: alice
|
||||||
|
|
||||||
|
switch_config:
|
||||||
|
- global config line 1
|
||||||
|
- global config line 2
|
||||||
|
|
||||||
|
switch_interface_config:
|
||||||
|
interface-0:
|
||||||
|
description: controller0
|
||||||
|
config:
|
||||||
|
- interface-0 config line 1
|
||||||
|
- interface-0 config line 2
|
||||||
|
interface-1:
|
||||||
|
description: compute0
|
||||||
|
config:
|
||||||
|
- interface-1 config line 1
|
||||||
|
- interface-1 config line 2
|
||||||
|
|
||||||
|
Network device configuration can become quite repetitive, so it can be helpful
|
||||||
|
to define group variables that can be referenced by multiple devices. For
|
||||||
|
example:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
:caption: ``inventory/group_vars/switches``
|
||||||
|
|
||||||
|
---
|
||||||
|
# Group configuration for the 'switches' group.
|
||||||
|
switch_config_default:
|
||||||
|
- default global config line 1
|
||||||
|
- default global config line 2
|
||||||
|
|
||||||
|
switch_interface_config_controller:
|
||||||
|
- controller interface config line 1
|
||||||
|
- controller interface config line 2
|
||||||
|
|
||||||
|
switch_interface_config_compute:
|
||||||
|
- compute interface config line 1
|
||||||
|
- compute interface config line 2
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
:caption: ``inventory/host_vars/switch0``
|
||||||
|
|
||||||
|
---
|
||||||
|
ansible_host: 1.2.3.4
|
||||||
|
|
||||||
|
ansible_user: alice
|
||||||
|
|
||||||
|
switch_config: "{{ switch_config_default }}"
|
||||||
|
|
||||||
|
switch_interface_config:
|
||||||
|
interface-0:
|
||||||
|
description: controller0
|
||||||
|
config: "{{ switch_interface_config_controller }}"
|
||||||
|
interface-1:
|
||||||
|
description: compute0
|
||||||
|
config: "{{ switch_interface_config_compute }}"
|
||||||
|
|
||||||
|
.. _physical-network-device-specific:
|
||||||
|
|
||||||
|
Device-specific Configuration Variables
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
Dell OS6 and OS9
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Configuration for these devices is applied using the ``dellos6_config`` and
|
||||||
|
``dellos9_config`` Ansible modules.
|
||||||
|
|
||||||
|
``switch_type`` should be set to ``dellos6`` or ``dellos9``.
|
||||||
|
|
||||||
|
Provider
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
* ``ansible_host`` is the hostname or IP address.
|
||||||
|
|
||||||
|
* ``ansible_user`` is the SSH username.
|
||||||
|
|
||||||
|
* ``ansible_ssh_pass`` is the SSH password.
|
||||||
|
|
||||||
|
* ``switch_auth_pass`` is the 'enable' password.
|
||||||
|
|
||||||
|
Alternatively, set ``switch_dellos_provider`` to the value to be passed as the
|
||||||
|
``provider`` argument to the ``dellos*_config`` module.
|
||||||
|
|
||||||
|
Dell PowerConnect
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Configuration for these devices is applied using the
|
||||||
|
``stackhpc.dell-powerconnect-switch`` Ansible role. The role uses the
|
||||||
|
``expect`` Ansible module to automate interaction with the switch CLI via SSH.
|
||||||
|
|
||||||
|
``switch_type`` should be set to ``dell-powerconnect``.
|
||||||
|
|
||||||
|
Provider
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
* ``ansible_host`` is the hostname or IP address.
|
||||||
|
|
||||||
|
* ``ansible_user`` is the SSH username.
|
||||||
|
|
||||||
|
* ``switch_auth_pass`` is the SSH password.
|
||||||
|
|
||||||
|
Juniper Junos OS
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Configuration for these devices is applied using the ``junos_config`` Ansible
|
||||||
|
module.
|
||||||
|
|
||||||
|
``switch_type`` should be set to ``junos``.
|
||||||
|
|
||||||
|
``switch_junos_config_format`` may be used to set the format of the
|
||||||
|
configuration. The variable is passed as the ``src_format`` argument to the
|
||||||
|
``junos_config`` module. The default value is ``text``.
|
||||||
|
|
||||||
|
Provider
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
* ``ansible_host`` is the hostname or IP address. Optional.
|
||||||
|
|
||||||
|
* ``ansible_user`` is the SSH username.
|
||||||
|
|
||||||
|
* ``ansible_ssh_pass`` is the SSH password. Mutually exclusive with
|
||||||
|
``ansible_ssh_private_key_file``.
|
||||||
|
|
||||||
|
* ``ansible_ssh_private_key_file`` is the SSH private key file. Mutually
|
||||||
|
exclusive with ``ansible_ssh_pass``.
|
||||||
|
|
||||||
|
* ``switch_junos_timeout`` may be set to a timeout in seconds for communicating
|
||||||
|
with the device.
|
||||||
|
|
||||||
|
Alternatively, set ``switch_junos_provider`` to the value to be passed as the
|
||||||
|
``provider`` argument to the ``junos_config`` module.
|
||||||
|
|
||||||
|
Mellanox MLNX OS
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Configuration for these devices is applied using the
|
||||||
|
``stackhpc.mellanox-switch`` Ansible role. The role uses the ``expect``
|
||||||
|
Ansible module to automate interaction with the switch CLI via SSH.
|
||||||
|
|
||||||
|
``switch_type`` should be set to ``mellanox``.
|
||||||
|
|
||||||
|
Provider
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
* ``ansible_host`` is the hostname or IP address.
|
||||||
|
|
||||||
|
* ``ansible_user`` is the SSH username.
|
||||||
|
|
||||||
|
* ``switch_auth_pass`` is the SSH password.
|
@ -23,6 +23,8 @@ To bootstrap the Ansible control host::
|
|||||||
|
|
||||||
(kayobe) $ kayobe control host bootstrap
|
(kayobe) $ kayobe control host bootstrap
|
||||||
|
|
||||||
|
.. _physical-network:
|
||||||
|
|
||||||
Physical Network
|
Physical Network
|
||||||
================
|
================
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user