From 4049c1ee5b5c23364c2880141afe66685107d45f Mon Sep 17 00:00:00 2001 From: Jonathan Rosser Date: Tue, 13 Dec 2022 17:21:39 +0000 Subject: [PATCH] Update ironic documentation * A concrete example for an LXC based deployment * How to deploy multiple CPU architectures * Debugging tips Change-Id: Ic68cfc1116dd408c31948abbba92ac564f254b2b --- doc/source/configure-inspector.rst | 46 ++ doc/source/configure-ironic-debugging.rst | 79 +++ doc/source/configure-ironic-multiarch.rst | 142 +++++ doc/source/configure-ironic.rst | 7 + doc/source/configure-lxc-example.rst | 513 ++++++++++++++++++ .../figures/ironic-lxc-example.drawio.png | Bin 0 -> 100253 bytes doc/source/index.rst | 3 + 7 files changed, 790 insertions(+) create mode 100644 doc/source/configure-ironic-debugging.rst create mode 100644 doc/source/configure-ironic-multiarch.rst create mode 100644 doc/source/configure-lxc-example.rst create mode 100644 doc/source/figures/ironic-lxc-example.drawio.png diff --git a/doc/source/configure-inspector.rst b/doc/source/configure-inspector.rst index 3cbf9a8b..b0c05266 100644 --- a/doc/source/configure-inspector.rst +++ b/doc/source/configure-inspector.rst @@ -35,3 +35,49 @@ Required Overrides ironic_inspector_dhcp_subnet_mask: 255.255.252.0 ironic_inspector_dhcp_gateway: ironic_inspector_dhcp_nameservers: 8.8.8.8 + +To enable LLDP discovery of switch ports during inspection +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +During inspection Ironic Inspector can automatically populate +information into the node ``local_link_connection`` which can +automatically create a baremetal port for the node. + +This example is suitable for switches that have a common MAC address +per switch port and are identified to networking-generic-switch +using the ``ngs_mac_address`` parameter which matches against +the ``switch_id`` field in the Ironic node ``local_link_connection`` +information. + +Set the following variables in ``/etc/openstack_deploy/user_variables.yml`` + +.. code-block:: yaml + + # enable LLDP discovery for inspector + ironic_inspector_processing_hooks: "$default_processing_hooks,lldp_basic,local_link_connection" + ironic_inspector_extra_callback_parameters: "ipa-collect-lldp=1" + +To enable LLDP discovery of switch system name during inspection +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example is suitable for switches that have a different MAC address +per switch port and are identified to networking-generic-switch +using the switch hostname which is matched against +the ``switch_info`` field in the Ironic node ``local_link_connection`` +information. + +An additional out-of-tree Ironic Inspector plugin is needed to +obtain the system name of the switch and write it to ``switch_info`` +during inspection. + +Set the following variables in ``/etc/openstack_deploy/user_variables.yml`` + +.. code-block:: yaml + + # enable LLDP discovery for inspector + ironic_inspector_processing_hooks: "$default_processing_hooks,lldp_basic,local_link_connection,system_name_llc" + ironic_inspector_extra_callback_parameters: "ipa-collect-lldp=1" + + # stackhpc inspector plugins + ironic_inspector_user_pip_packages: + - git+https://github.com/stackhpc/stackhpc-inspector-plugins@master#egg=stackhpc-inspector- diff --git a/doc/source/configure-ironic-debugging.rst b/doc/source/configure-ironic-debugging.rst new file mode 100644 index 00000000..214c6bf1 --- /dev/null +++ b/doc/source/configure-ironic-debugging.rst @@ -0,0 +1,79 @@ +=================================================== +Debugging the Bare Metal (ironic) inspector service +=================================================== + +Ironic Python Agent debug logs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If IPA fails, a log file will be written to ``/var/log/ironic`` +on the conductor node responsible for the Ironic node being deployed. + +A lot of useful information is collected including a copy of the journal +log from the host. + +Pausing during a deployment +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To pause the deployment, possibly to log into an Ironic node running the +IPA to do diagnostic work, the node can have ``maintainance`` +switched on either through the OpenStack CLI or Horizon web interface. + +The ironic state machine will not change state again until maintainance mode +is switched off, triggered by a heartbeat from IPA. Note +that you will have to wait for up to one heartbeat period for the deployment +to resume after switching off maintainance mode. + +Logging into IPA +~~~~~~~~~~~~~~~~ + +To perform diagnostic steps on an ironic node during deployment or cleaning +it might be helpful to be able to log into the node from the controller after +the deploy image has booted. + +To build a version of the deploy image which has the ``dynamic-login`` element +enabled, in this case building on a Rocky Linux host: + +.. code-block:: bash + + dnf install python3-virtualenv git qemu-img + + virtualenv venv + source ./venv/bin/activate + pip install ironic-python-agent-builder + + export DIB_REPOREF_ironic_python_agent=origin/stable/zed + export DIB_REPOREF_requirements=origin/stable/zed + ironic-python-agent-builder -e dynamic-login -o my-login-ipa --extra-args=--no-tmpfs --release 8-stream centos + +Once the IPA kernel and initramfs are built, upload them to glance and +set them as the deploy kernel/initramfs for the Ironic node to log into +during deployment. + +Create a password to log into the Ironic node: + +.. code-block:: bash + + openssl passwd -1 -stdin <<< YOUR_PASSWORD | sed 's/\$/\$\$/g' + +Set debugging options on the IPA kernel parameters +in ``/etc/openstack_deploy/user_variables.yml``, substituing the encrypted +password just generated into the ``rootpwd`` field. Ensure that the +encrypted password is enclosed in double quotation marks. + +.. code-block:: bash + + ironic_ironic_conf_overrides: + # Set a password on the root user in IPA for debug purposes + pxe: + kernel_append_params: 'ipa-debug=1 systemd.journald.forward_to_console=yes rootpwd=""' + +.. note:: + + You must combine this override with any existing definition of + ``ironic_ironic_conf_overrides``. + +Deploy the configuration file changes to the Ironic control plane. + +The node can now be cleaned or provisioned, possibly pausing the deployment +by enabling maintainance on the node and then logging into the node +with SSH as the root user with the password previously encrypted. diff --git a/doc/source/configure-ironic-multiarch.rst b/doc/source/configure-ironic-multiarch.rst new file mode 100644 index 00000000..eb07e588 --- /dev/null +++ b/doc/source/configure-ironic-multiarch.rst @@ -0,0 +1,142 @@ +=============================================================== +Deploying multiple Ironic nodes with different CPU architecures +=============================================================== + +Ironic can deploy nodes with CPU architectures which do not match +the CPU architecture of the control plane. The default settings for +Openstack-Ansible assume an x86-64 control plane deploying x86-64 +Ironic nodes. + +This documentation describes how to deploy aarch64 Ironic nodes +using an x86-64 control plane. Other combinations of architecture +could be supported using the same approach with different variable +definitions. + +This example assumes that Glance is used for Ironic image storage +and the Ironic control plane web server serves these for deployment. + +Building ironic-python-agent deploy image for aarch64 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There must be an ironic-python-agent kernel and initramfs built and +uploaded to Glance for each architecture that needs to be deployed. + +To build an aarch64 ironic-python-agent image using a Rocky Linux +aarch64 host: + +.. code-block:: bash + + dnf install python3-virtualenv git qemu-img + + virtualenv venv + source ./venv/bin/activate + pip install ironic-python-agent-builder + + export DIB_REPOREF_ironic_python_agent=origin/master + export DIB_REPOREF_requirements=origin/master + ironic-python-agent-builder -o my-ipa --extra-args=--no-tmpfs --release 9-stream centos + +- Replace ``origin/master`` with another branch reference in order to + build specific versions of IPA, for example ``stable/zed`` + +Configuring Ironic for multiple architectures +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This configuration assumes the use of iPXE. The settings required to +support an additional architecture are minimal. Ironic has a default setting +for which EFI firmware file to use that can be overridden on a per-architecture +basis with the ``ipxe_bootfile_name_by_arch`` config setting. + +On the control plane the aarch64 EFI iPXE firmware must be present in +the tftp server root directory. Note that not all distributions supply +packages for EFI firmware for architectures different to the host so +it may be necessary to download architecture specific firmware directly +from https://boot.ipxe.org + +This example shows how to specify the iPXE boot firmware to use for +aarch64 nodes, and where that firmware should be obtained from to +populate the tftp server. + +.. code-block:: + + ironic_ironic_conf_overrides: + # Point to aarch64 uefi firmware on aarch64 platforms + pxe: + ipxe_bootfile_name_by_arch: 'aarch64:ipxe_aa64.efi' + + ironic_tftp_extra_content: + - url: http://boot.ipxe.org/arm64-efi/ipxe.efi + name: ipxe_aa64.efi + +.. note:: + + You must combine this override with any existing definition of + ``ironic_ironic_conf_overrides``. + +Enrolling an aarch64 node +~~~~~~~~~~~~~~~~~~~~~~~~~ + +When enrolling an aarch64 node the ``boot_mode`` must be uefi even +if existing Ironic nodes use legacy bios boot. + +An example of the node capabilities including uefi boot would be: + +.. code-block:: bash + + capabilities='boot_option:local,disk_label:gpt,boot_mode:uefi' + +Enrolling an aarch64 node is exactly the same as enrolling an x86_64 +node, except that ``deploy_kernel`` and ``deploy_ramdisk`` must be +set to the aarch64 version of the deploy image. + +Building an aarch64 user image +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Example of building a whole-disk aarch64 user image on an existing +aarch64 Ubuntu host: + +.. code-block:: bash + + sudo apt update + sudo apt install python3-venv qemu-utils + python3 -m venv venv + source ./venv/bin/activate + pip install diskimage-builder + DIB_RELEASE=jammy DIB_CLOUD_INIT_DATASOURCES=Ec2 disk-image-create -a arm64 ubuntu vm block-device-efi cloud-init-datasources -o baremetal-ubuntu-22.04-efi-arm64.qcow2 + + +- The DIB_RELEASE= environment variable tells the 'ubuntu' + element which version of Ubuntu to create an image for. This defaults + to Focal if left unspecified. + +- The DIB_CLOUD_INIT_DATASOURCES=Ec2 environment variable is used + by the ``cloud-init-datasources`` element to force ``cloud-init`` to use + its Ec2 datasource. The native OpenStack datasource can't be used + because it doesn't currently have working support for bare metal + instances until ``cloud-init`` version 23.1. (Since the OpenStack + metadata service also provides an EC2 compatible API, the Ec2 datasource + is a reasonable workaround. (NB: This is actually the default behaviour + for Ubuntu cloud images, but for entirely unrelated reasons hence it + being worth making explicit here.) + +Use a similar approach on a Rocky Linux aarch64 system to build +a whole-disk user image of the latest version of Rocky Linux: + +.. code-block:: bash + + DIB_RELEASE=9 DIB_CLOUD_INIT_DATASOURCES=Ec2 DIB_CLOUD_INIT_GROWPART_DEVICES='["/"]' disk-image-create -a arm64 rocky-container vm block-device-efi cloud-init openssh-server cloud-init-datasources cloud-init-growpart -o baremetal-rocky-9-efi-arm64.qcow2 + +- The DIB_RELEASE= environment variable tells the 'rocky-container' + element which version of Rocky to create an image for. +- The ``cloud-init`` and ``openssh-server`` elements are essential since the + Rocky container image does not include these packages. (As an aside: + the ``diskimage-builder`` documentation erroneously claims that the + ``cloud-init`` element only works on Gentoo, but this is not the case). +- As with Ubuntu, setting DIB_CLOUD_INIT_DATASOURCES=Ec2 and using the + ``cloud-init-datasources`` element is necessary since the OpenStack + ``cloud-init`` datasource doesn't work. Unlike the Ubuntu case, using the + Ec2 datasource is not the default and so adding these options is + essential to obtain a working image. +- DIB_CLOUD_INIT_GROWPART_DEVICES variable tells cloud-init-growpart to + configure cloud-init to grow the root partition on first boot which is + must be explicitly set on some OS/architecture combinations. diff --git a/doc/source/configure-ironic.rst b/doc/source/configure-ironic.rst index 4360d99a..d81ceeb1 100644 --- a/doc/source/configure-ironic.rst +++ b/doc/source/configure-ironic.rst @@ -2,6 +2,13 @@ Configuring the Bare Metal (Ironic) Service (optional) ====================================================== +This section describes the general concepts involved in an Ironic +deployment. It will be necessary for a deployer to make decisions +about how to apply the general concepts in their own environment to +meet a specific set of requirements. It should be understood that +the Ironic service is highly configurable and pluggable so there is +no single reference design specified by the Ironic project team. + .. note:: This feature is experimental at this time and has not been fully diff --git a/doc/source/configure-lxc-example.rst b/doc/source/configure-lxc-example.rst new file mode 100644 index 00000000..3d633eae --- /dev/null +++ b/doc/source/configure-lxc-example.rst @@ -0,0 +1,513 @@ +=================================== +Example LXC based Ironic deployment +=================================== + +This section describes a specific deployment of Ironic using +Openstack-Ansible. A number of design choices are made which +illustrate how to configure the Ironic service for a specific +set of requirements. + +Deployment design decisions: + +* LXC containers are used in the openstack control plane +* A single ``bmaas`` network is used for Ironic provisioning, + cleaning and inspection +* The ``bmaas`` network is not routable to any other networks + nor to the internal VIP +* Multitenancy is used with Ironic servers attached to project + networks +* networking-generic-switch will be used to control network devices + to achieve multitenancy +* Cisco NXOS switches +* The deployment uses VXLAN project networks + +A number of these design decisions are opinionated and could be +changed, e.g. allowing the ``bmaas`` network to be routed to +other networks including the internal VIP would result in some +simplification. + +This example is illustrative of a specific set of deployment +requirements but is not intended to be followed rigidly. It +demonstrates some of the capabilities of Ironic and +Openstack-Ansible and how to approach most parts of a practical +deployment of Ironic at small to modest scales. + +.. warning:: + Consideration should be given to the security of IPMI or other + out-of-band interfaces which are notoriously buggy and often + have vendor specific in-band tools which allow the BMC and its + firmware to be manipulated from userspace. Understand the risks + of allowing IPMI/BMC interfaces to share a physical interface + with onboard ethernet ports, this feature will allow full access + to the management interface of a deployed Ironic node. For high + security environments or where the users are untrusted consult + your hardware vendor for appropriate hardening steps. + +.. image:: figures/ironic-lxc-example.drawio.png + +BMAAS network address plan +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In this example the subnet for the ``bmaas`` network is 10.88.104.0/24. +The size of the subnet determines the maximum number of nodes +in the Ironic deployment. + +===================== ============================================== +Address Purpose +===================== ============================================== +10.88.104.0 to .10 Reserve for potential physical routers / SVI +10.88.104.11 to .29 Control plane Ironic container interfaces +10.88.104.64 to .95 Neutron DHCP allocation pool in Ironic_Network +10.88.104.96 to .127 Ironic Inspector DHCP pool range +10.88.104.128 to .254 Static IPs manually assigned to IPMI/iDRAC +===================== ============================================== + +In this deployment the ``bmaas`` network combines several functions +for simplicity. It would be possible to use separate networks for +inspection, cleaning and provisioning but that is beyond the scope +of this example. + +The subnet is divided into several address ranges, a reservation for +future interfaces on physical routers, or a gateway address if the +subnet is to be made routable in the future. A small number of addresses +are then reserved for the ``bmaas`` network to connect to the Ironic +containers in the control plane, and the remainder of the addresses +are shared between a neutron network for provisioning, a range for +Ironic Inspector to allocate with DHCP and finally a block of +addresses for the IPMI (or other protocol) management ports +of the Ironic nodes. + +.. note:: + This example will use VLAN ID 3003 for the ``bmaas`` network but + any available VLAN ID could be used. + +.. warning:: + This example collapses the Ironic IPMI, provisioning, cleaning + and inspection networks into the same subnet. It is possible + to make these be separate from each other by creating a network + for each different function and updating the container networks + and Ironic service configuration suitably. In particular it should + be understood that the nodes are "untrusted" during the cleaning + phase and will be in an arbitrary state as left by the previous + user. + +IPMI Interfaces +~~~~~~~~~~~~~~~ + +When configuring IPMI interfaces for Ironic nodes, the following steps +are recommended: + +* Use static IP allocations for the IPMI interfaces, unless there is + already a very reliable means of allocating addresses with DHCP. The + Ironic team do not consider the Neutron DHCP agent to be suitable + for assigning addresses to the IPMI interfaces. + +* Use dedicated IPMI ports on Ironic nodes especially if multitenancy + is required. A node with a shared onboard ethernet/IPMI port will have + that port moved into the tenant network when deployment is complete + and the Ironic control plane will no longer be able to communicate with + the management interface of the node. + +Maximum size of the deployment +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The maximum size of this Ironic deployment is limited by the +address alloction in the ``bmaas`` network. In this example there can +be a maximum of 127 server BMC interfaces in the range 10.88.104.128/25. + +The maxiumum number of servers that can be simultanously provisioned is +determined by the address allocation to the Neutron DHCP pool. + +The maximum number of servers that can be simultanously inspected is +determined by the address allocation to the Ironic Inspector DHCP pool. + +To increase the size of the deployment, the size of the ``bmaas`` +subnet should be increased and the addresses allocated to meet the +number of required nodes and maximum number of simultaneous nodes +being provisioned and inspected. + +Openstack-Ansible configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Once the address plan has been decided, the Openstack-Ansible configuration +can be updated to match. + +The existing ``cidr_networks`` and ``used_ips`` sections in +``/etc/openstack_deploy/openstack_user_config.yml`` must have extra +entries to describe the network range available for the Ansible inventory +to assign to Ironic control plane containers, in this example all addresses +in the ``bmaas`` network are marked as used except the range 10.88.104.11 +to 10.88.104.29. + +An additional network is defined in the ``provider_networks`` list which +represents the connection between the bridge ``br-bmaas`` on the +controller and ``eth15`` inside the ironic service containers. + +The ``bmaas`` network must be extended from the control plane hosts +to the switch ports connected to the Ironic node IPMI interfaces, +and also to switch ports connected to the interfaces on the Ironic +nodes that will be used for PXEboot. This will typically be a VLAN +allocated specifically for Ironic provisioning. + +The hosts for the Ironic control plane containers are assigned. + +.. note:: + + It is the responsibility of the deployer to create br-bmaas + on the controller nodes and ensure that it is connected to + the correct VLAN ID for the ``bmaas`` network. Configuration of + host networking is outside the scope of Openstack-Ansible. + +.. note:: + + The ``range`` key in the provider network definition is not used + but its useful as an reminder in the config file of the VLAN ID. + +.. code-block:: yaml + + cidr_networks: + + bmaas: 10.88.104.0/24 # for containers on the bmaas network + + used_ips: + + # bmaas ips + - "10.88.104.0,10.88.104.10" # reserve for routers or other infrastructure + - "10.88.104.30,10.88.104.255" # reserve for ironic IPMI and provisioning + + provider_networks: + + # Network definition to connect Ironic LXC containers to the bmaas network + # on the infra hosts + - network: + net_name: physnet_neutron + container_type: "veth" + container_bridge: "br-bmaas" + container_interface: "eth15" + ip_from_q: bmaas + type: "vlan" + range: "3003:3003" + group_binds: + - ironic_api_container + - ironic_compute_container + - ironic_inspector_container + + + # ironic API and conductor + ironic-infra_hosts: + infra1: *_infra1_ + infra2: *_infra2_ + infra3: *_infra3_ + + # nova used by ironic for machine state management + ironic-compute_hosts: + infra1: *_infra1_ + infra2: *_infra2_ + infra3: *_infra3_ + + # Ironic-inspector can only support a single instance at the moment + # High availability for ironic-inspector is not yet implemented + ironic-inspector_hosts: + infra1: *_infra1_ + +.. note:: + This example uses YAML Anchors to simplify ``openstack_user_config.yml`` + allowing the IP addresses of the infra nodes to be defined only once. + See https://yaml.org/spec/1.2.2/#alias-nodes. + +Create the Neutron configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Enable the Neutron ``baremetal`` and ``genericswitch`` mechanism drivers +by updating ``/etc/openstack_deploy/group_vars/neutron_server.yml`` + +.. code-block:: yaml + + --- + neutron_plugin_types: + - ml2.genericswitch + - ml2.baremetal + + # keep the ml2 drivers in this order + # see https://storyboard.openstack.org/#!/story/2008686 + neutron_ml2_mechanism_drivers: "genericswitch,baremetal" + +Configure neutron networking-generic-switch to know about the switches +that the Ironic nodes are connected to in ``/etc/openstack_deploy/user_variables.yml``. +These switches are programmed by neutron to switch the Ironic nodes between the +provisioning and project networks once deployment is complete. This is enabling +multitenancy for Ironic. + +This example is for a Cisco NXOS based switch, which uses the same command +set as a Cisco IOS based switch for the functions needed by +networking-generic-switch. There is no specific ``device_type`` for NXOS. + +.. note:: + + A MAC address for the switch must be specified in the neutron config, but Cisco + and some other switch vendors present a unique MAC address per port so the MAC + address as seen from the client cannot be used to identify the switch. For IOS/NXOS + networking-generic-switch uses the field ``switch_info`` from the Ironic node + ``local_link_connection`` information rather than match a MAC address when + choosing which switch to configure for a particular node. + +.. code-block:: yaml + + neutron_neutron_conf_overrides: + genericswitch:my-switch-name: # This should match the hostname configured on the switch + device_type: netmiko_cisco_ios # It is really NXOS but the commands are the same + ngs_mac_address: "cc:46:d6:64:4b:41" # Doesn't seem to matter but is required - this is taken from an SVI on the mgmt network + ip: "10.80.240.3" # An IP on the switch which has ssh access from the br-mgmt network, loopback, SVI or mgmt0 as needed + username: "neutron" # The user that Neutron will SSH to the switch as + password: "supersecret" # The password that Neutron will use to SSH to the switch + ## key_file: # An SSH key may be used instead of a password + ngs_manage_vlans: "False" # VLANs are already provisioned on the switch so tell neutron not to create/delete VLANs + +.. note:: + + The configuration for networking-generic-switch is added to neturon.conf + rather than ml2_conf_genericswitch.ini as the config needs to be read by + both neutron-rpc-server and neutron-server. neutron-server is a uwsgi + service in openstack-ansible so is only passed one config file, + see https://bugs.launchpad.net/openstack-ansible/+bug/1987405 + +.. note:: + If there is already an override in place for this variable + then extend the existing override rather than making a + second one. + +Configure switch to allow ssh from Neutron +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To achieve multitenancy, Neutron will connect to the specified switch and +configure the port for the Ironic node being provisioned to be in the +correct project VLAN once the deployment is complete. During deployment +Neutron will ensure that the node is in the ``bmaas`` provisioning +network as specified in the Ironic config. + +A suitable user and credential must exist on the switch. The SSH +connection will originate from the Neutron processes running on the +OpenStack control plane, on the ``mgmt`` network. There must be an IP +route from the ``mgmt`` network to an interface on the switch which +permits SSH login. That interface could be a physical management port +(``mgmt0`` on NXOS), a loopback interface, an SVI or another interface +with an IP address. SSH communication with the switch can happen either +in-band or out-of-band depending on the requirements of the deployment. + +This example config is for a ``neutron`` user using password authentication +on an NXOS switch as seen by ``show run``. The config applied on the +switch gives the ``neutron`` user access to a minimal set of commands +for configuring VLAN membership on specific ports. + +To control the commands that the ``neutron`` user is allowed to issue +on the switch create a role: + +.. code-block:: bash + + role name neutron-role + rule 3 permit command configure t + rule 2 permit read-write feature interface + rule 1 permit read + vlan policy deny + permit vlan 3003-3003 + permit vlan 3100-3200 + interface policy deny + permit interface Ethernet1/1 + permit interface Ethernet1/2 + permit interface Ethernet1/3 + permit interface Ethernet1/4 + permit interface Ethernet1/5 + permit interface Ethernet1/6 + permit interface Ethernet1/7 + permit interface Ethernet1/8 + +This role allows the ``neutron`` user assign a port to VLAN 3003 +which is the ``bmaas`` network and is used during node provisioning. +Any project VLANS that nodes should be able to be moved into after +deployment should also be permitted, range 3100-3200 here. + +The interfaces which the ``neutron`` user is permitted to modify are +listed, in this case individually but consult the switch documentation +for other options such as a regular expression. + +Create the user and password, which must match those in the +``neutron.conf / genericswitch`` config file options: + +.. code-block:: bash + + username neutron password 5 role neutron-role + +Allow SSH to the switch from the expected +IP addresses, for example a pair out of band management hosts +192.168.0.100/31 and the OpenStack ``mgmt`` network 10.80.240.0/24. + +.. code-block:: bash + + ip access-list ACL_ALLOW_SSH_VTY + 10 permit tcp 192.168.0.100/31 any eq 22 + 20 permit tcp 10.80.240.0/22 any eq 22 + + line vty + session-limit 5 + exec-timeout 10 + access-class ACL_ALLOW_SSH_VTY in + +Create the Neutron network for Ironic provisioning, cleaning and inspection +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + openstack network create \ + --internal \ + --provider-network-type vlan \ + --provider-physical-network physnet_neutron \ + --provider-segment 3003 \ + Ironic_Network + + openstack subnet create \ + --allocation-pool 10.88.104.64-10.88.104.95 \ + --dhcp \ + --subnet-range 10.88.104.0/24 + --gateway none + Ironic_Subnet + +Create the Ironic configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In ``/etc/openstack_deploy/user_variables_ironic.yml`` + +.. code-block:: yaml + + ## IRONIC ## + + ironic_ipxe_enabled: yes # use HTTP image download from the ironic conductor container + ironic_enable_web_server_for_images: yes # use same web server to cache user images + + # Ensure values used during PXEboot refer directly to the correct interface on Ironic API container + # instead of the internal VIP + ironic_http_url: "{{ ironic_ipxe_proto }}://{{ container_networks['bmaas_address']['address'] }}:{{ ironic_ipxe_port }}" + ironic_tftp_server_address: "{{ container_networks['bmaas_address']['address'] }}" + + # Enable ironic drivers + ironic_drivers_enabled: # Use PXE boot and IPMItool + - agent_ipmitool + - pxe_ipmitool + - pxe_drac # enables drivers for Dell iDrac interface + + # Configure Ironic to use Neutron networking + ironic_enabled_network_interfaces_list: "noop,neutron" + ironic_default_network_interface: neutron + + # Enable the default set of cleaning steps + ironic_automated_clean: yes + + # Configure the neutron networks that Ironc should use + ironic_neutron_provisioning_network_name: "Ironic_Network" + ironic_neutron_cleaning_network_name: "Ironic_Network" + ironic_neutron_inspection_network_name: "Ironic_Network" + + # Ensure ironic API (using uwsgi) listens on br-bmaas for agent callbacks + # as well as the mgmt interface for the loadbalancer + ironic_uwsgi_bind_address: 0.0.0.0 + + # INI file overrides + ironic_ironic_conf_overrides: + # Disable full device erasure (slow) and just metadata erasure, and replace with "Express erasure" + # which tries to use firmware secure-erase command, but if that fails, reverts to metadata erasure. + # See: https://docs.openstack.org/ironic/yoga/admin/cleaning.html#storage-cleaning-options + deploy: + erase_devices_priority: 0 + erase_devices_metadata_priority: 0 + conductor: + clean_step_priority_override: "deploy.erase_devices_express:5" + + # Direct IPA to callback directly to deploying ironic container (via BMAAS network) + # instead of going via HAProxy on mgmt network. Only applies when bmaas network is isolated. + service_catalog: + endpoint_override: "http://{{ container_networks['bmaas_address']['address'] }}:6385" + + # Enable ipmitool's Serial-over-LAN terminal console for baremetal nodes + DEFAULT: + enabled_console_interfaces: "ipmitool-socat,no-console" + + ## IRONIC INSPECTOR ## + + # Direct Inspector to callback directly to deploying ironic container (via BMAAS network) + # instead of going via HAProxy on mgmt network. Only applies when bmaas network is isolated. + ironic_inspector_callback_url: "{{ ironic_inspector_service_internaluri_proto }}://{{ container_networks['bmaas_address']['address'] }}:{{ ironic_inspector_service_port }}/v1/continue" + + # Ensure inspector API (using uwsgi) listens on br-bmaas for agent callbacks + # as well as the mgmt interface for the loadbalancer + ironic_inspector_service_address: "0.0.0.0" + + # dnsmasq/dhcp information for inspector + ironic_inspector_dhcp_pool_range: 10.88.104.96 10.88.104.127 + ironic_inspector_dhcp_subnet: 10.88.104.0/24 + ironic_inspector_dhcp_subnet_mask: 255.255.255.0 + ironic_inspector_dhcp_enable_gateway: False + ironic_inspector_dhcp_enable_nameservers: False + + ironic_inspector_dhcp_interface: eth15 # connected to br-bmaas on the host + +Deploy Neutron changes +~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + openstack-ansible playbooks/os-neutron-install.yml + +Deploy the ironic-specific nova services +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This deploys nova compute and nova console services +to the ironic compute containers. + +.. code-block:: + + playbooks/os-nova-install.yml --limit ironic_all + +Deploy changes to HAProxy +~~~~~~~~~~~~~~~~~~~~~~~~~ + +This will bring up the required Ironic, Inspector, and console +endpoints. + +.. code-block:: bash + + openstack-ansible playbooks/haproxy-install.yml --tags haproxy_server-config + +Deploy the Ironic and Inspector services +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: + + openstack-ansible playbooks/os-ironic-install.yml + +Deploy the Horizon dashbaords for Ironic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + openstack-ansible playbooks/os-horizon-install.yml + +Using Ironic +~~~~~~~~~~~~ + +Please refer to the general instructions in the Configuring Ironic +section of this documentation. + +VXLAN project networks +~~~~~~~~~~~~~~~~~~~~~~ + +In this example Ironic multitenancy is implemented using +VLANs. In an OpenStack deployment where project networks +are implemented using an overlay such as VXLAN, it will not +be possible to attach Ironic nodes directly to these networks. +In addition, it is not possible for an end user to request that +the underlying implementation is VLAN when creating a project +network. + +In a cloud using overlay project networks it will be +necessary for the cloud administrator to create VLAN provider +networks for users to attach Ironic nodes to and to share these +into individual projects using Neutron RBAC. diff --git a/doc/source/figures/ironic-lxc-example.drawio.png b/doc/source/figures/ironic-lxc-example.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..fe1c3f681d8ff9c779d460f4fb34f2686f79b902 GIT binary patch literal 100253 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

pIoh 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