From 4575a8feaccc929700ac79ec6ff68569ed1ef721 Mon Sep 17 00:00:00 2001 From: Ronelle Landy Date: Fri, 26 Aug 2016 17:58:08 -0400 Subject: [PATCH] Add docs for baremetal overcloud Change-Id: Ifca96338e02db818bbe2ff15bd206cac56d33f62 --- .../_images/TripleO_Network_Diagram_.jpg | Bin 0 -> 94564 bytes .../copying-customized-files.rst | 110 ++++++++++++++++++ .../customizing-external-network-vlan.rst | 21 ++++ .../customizing-undercloud-conf.rst | 21 ++++ docs/static/baremetal-overcloud/env-setup.rst | 43 +++++++ .../env-specific-pre-deploy-steps.rst | 15 +++ .../environment-settings-structure.rst | 94 +++++++++++++++ .../baremetal-overcloud/introduction.rst | 21 ++++ .../static/baremetal-overcloud/networking.rst | 37 ++++++ .../baremetal-overcloud/requirements.rst | 23 ++++ .../validate-prior-to-deploy.rst | 9 ++ .../virtual-vs-baremetal-undercloud.rst | 17 +++ 12 files changed, 411 insertions(+) create mode 100644 docs/static/baremetal-overcloud/_images/TripleO_Network_Diagram_.jpg create mode 100644 docs/static/baremetal-overcloud/copying-customized-files.rst create mode 100644 docs/static/baremetal-overcloud/customizing-external-network-vlan.rst create mode 100644 docs/static/baremetal-overcloud/customizing-undercloud-conf.rst create mode 100644 docs/static/baremetal-overcloud/env-setup.rst create mode 100644 docs/static/baremetal-overcloud/env-specific-pre-deploy-steps.rst create mode 100644 docs/static/baremetal-overcloud/environment-settings-structure.rst create mode 100644 docs/static/baremetal-overcloud/introduction.rst create mode 100644 docs/static/baremetal-overcloud/networking.rst create mode 100644 docs/static/baremetal-overcloud/requirements.rst create mode 100644 docs/static/baremetal-overcloud/validate-prior-to-deploy.rst create mode 100644 docs/static/baremetal-overcloud/virtual-vs-baremetal-undercloud.rst diff --git a/docs/static/baremetal-overcloud/_images/TripleO_Network_Diagram_.jpg b/docs/static/baremetal-overcloud/_images/TripleO_Network_Diagram_.jpg new file mode 100644 index 0000000000000000000000000000000000000000..72d9f3a9ef4acf1a3375b0b1a3b63d17d6c0ac0d GIT binary patch literal 94564 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%0AP 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. +A customized ``instackenv.json`` can be copied to the undercloud by overwriting the +``undercloud_instackenv_template`` variable with the path to the customized file. + +Below is an explanation of, and example of, the ``instackenv.json`` file: + +The JSON file describing your Overcloud baremetal nodes, is called +``instackenv.json``. The file should contain a JSON object with the only field +``nodes`` containing list of node descriptions. + +Each node description should contains required fields: + +* ``pm_type`` - driver for Ironic nodes, see `Ironic Drivers`_ for details + +* ``pm_addr`` - node BMC IP address (hypervisor address in case of virtual + environment) + +* ``pm_user``, ``pm_password`` - node BMC credentials + +Some fields are optional if you're going to use introspection later: + +* ``mac`` - list of MAC addresses, optional for bare metal + +* ``cpu`` - number of CPU's in system + +* ``arch`` - CPU architecture (common values are ``i386`` and ``x86_64``) + +* ``memory`` - memory size in MiB + +* ``disk`` - hard driver size in GiB + +It is also possible (but optional) to set Ironic node capabilities directly +in the JSON file. This can be useful for assigning node profiles or setting +boot options at registration time: + +* ``capabilities`` - Ironic node capabilities. For example:: + + "capabilities": "profile:compute,boot_option:local" + +For example:: + + { + "nodes": [ + { + "pm_type":"pxe_ipmitool", + "mac":[ + "fa:16:3e:2a:0e:36" + ], + "cpu":"2", + "memory":"4096", + "disk":"40", + "arch":"x86_64", + "pm_user":"admin", + "pm_password":"password", + "pm_addr":"10.0.0.8" + }, + { + "pm_type":"pxe_ipmitool", + "mac":[ + "fa:16:3e:da:39:c9" + ], + "cpu":"2", + "memory":"4096", + "disk":"40", + "arch":"x86_64", + "pm_user":"admin", + "pm_password":"password", + "pm_addr":"10.0.0.15" + }, + { + "pm_type":"pxe_ipmitool", + "mac":[ + "fa:16:3e:51:9b:68" + ], + "cpu":"2", + "memory":"4096", + "disk":"40", + "arch":"x86_64", + "pm_user":"admin", + "pm_password":"password", + "pm_addr":"10.0.0.16" + } + ] + } + + +network-environment.yaml +^^^^^^^^^^^^^^^^^^^^^^^^ + +Similarly, the ``network-environment.yaml`` file is generated from a template, + +A customized ``network-environment.yaml`` file can be copied to the undercloud by overwriting the +`` network_environment_file`` variable with the path to the customized file. + +nic-configs +^^^^^^^^^^^ + +By default, the virtual environment deployment uses the standard nic-configs files are there is no +ready section to copy custom nic-configs files. +The ``ansible-role-tripleo-overcloud-prep-config`` repo includes a task that copies the nic-configs +files if they are defined, + + diff --git a/docs/static/baremetal-overcloud/customizing-external-network-vlan.rst b/docs/static/baremetal-overcloud/customizing-external-network-vlan.rst new file mode 100644 index 0000000..e7c26e3 --- /dev/null +++ b/docs/static/baremetal-overcloud/customizing-external-network-vlan.rst @@ -0,0 +1,21 @@ +Customizing external network vlan +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If network-isolation is used in the deployment, tripleo-quickstart will, by default, +add a NIC on the external vlan to the undercloud, +. +When working with a baremetal overcloud, the vlan values must be customized with the correct +system-related values. The default vlan values can be overwritten in a settings file passed +to triple-quickstart as in the following example: +:: + + undercloud_networks: + external: + address: 10.0.7.13 + netmask: 255.255.255.192 + device_type: ovs + type: OVSIntPort + ovs_bridge: br-ctlplane + ovs_options: '"tag=102"' + tag: 102 + diff --git a/docs/static/baremetal-overcloud/customizing-undercloud-conf.rst b/docs/static/baremetal-overcloud/customizing-undercloud-conf.rst new file mode 100644 index 0000000..8a03677 --- /dev/null +++ b/docs/static/baremetal-overcloud/customizing-undercloud-conf.rst @@ -0,0 +1,21 @@ +Customizing undercloud.conf +=========================== + +The undercloud.conf file is copied to the undercloud VM using a template where the system values +are variables. . +The tripleo-quickstart defaults for these variables are suited to a virtual overcloud, +but can be overwritten by passing custom settings to tripleo-quickstart in a settings file +(--extra-vars @). For example: +:: + + undercloud_network_cidr: 10.0.5.0/24 + undercloud_local_ip: 10.0.5.1/24 + undercloud_network_gateway: 10.0.5.1 + undercloud_undercloud_public_vip: 10.0.5.2 + undercloud_undercloud_admin_vip: 10.0.5.3 + undercloud_local_interface: eth1 + undercloud_masquerade_network: 10.0.5.0/24 + undercloud_dhcp_start: 10.0.5.5 + undercloud_dhcp_end: 10.0.5.24 + undercloud_inspection_iprange: 10.0.5.100,10.0.5.120 + diff --git a/docs/static/baremetal-overcloud/env-setup.rst b/docs/static/baremetal-overcloud/env-setup.rst new file mode 100644 index 0000000..6567bfc --- /dev/null +++ b/docs/static/baremetal-overcloud/env-setup.rst @@ -0,0 +1,43 @@ +Install the dependencies +------------------------ + +You need some software available on your local system before you can run +`quickstart.sh`. You can install the necessary dependencies by running: + +:: + + bash quickstart.sh --install-deps + +Setup your virtual environment +------------------------------ + +tripleo-quickstart includes steps to set up libvirt on the undercloud host +machine and to create and setup the undercloud VM. + +Deployments on baremetal hardware require steps from third-party repos, +in addition to the steps in tripleo-quickstart. +Below is an example of a complete call to quickstart.sh to run a full deploy +on baremetal overcloud nodes: + +:: + + # $HW_ENV_DIR is the directory where the baremetal environment-specific + # files are stored + + pushd $WORKSPACE/tripleo-quickstart + bash quickstart.sh \ + --ansible-debug \ + --bootstrap \ + --working-dir $WORKSPACE/ \ + --tags all \ + --no-clone \ + --teardown all \ + --requirements quickstart-role-requirements.txt \ + --requirements $WORKSPACE/$HW_ENV_DIR/requirements_files/$REQUIREMENTS_FILE \ + --config $WORKSPACE/$HW_ENV_DIR/config_files/$CONFIG_FILE \ + --extra-vars @$WORKSPACE/$HW_ENV_DIR/env_settings.yml \ + --playbook $PLAYBOOK \ + --release $RELEASE \ + $VIRTHOST + popd + diff --git a/docs/static/baremetal-overcloud/env-specific-pre-deploy-steps.rst b/docs/static/baremetal-overcloud/env-specific-pre-deploy-steps.rst new file mode 100644 index 0000000..a9fbcae --- /dev/null +++ b/docs/static/baremetal-overcloud/env-specific-pre-deploy-steps.rst @@ -0,0 +1,15 @@ +Additional steps preparing the environment for deployment +--------------------------------------------------------- + +Depending on the parameters of the baremetal overcloud environment in use, +other pre-deployment steps may be needed to ensure that the deployment succeeds. + +includes a number of these steps. Whether each step is run, depends on variable values +that can be set per environment. + +Some examples of additional steps are: + +- Adding disk size hints +- Adjusting MTU values +- Rerunning introspection on failure + diff --git a/docs/static/baremetal-overcloud/environment-settings-structure.rst b/docs/static/baremetal-overcloud/environment-settings-structure.rst new file mode 100644 index 0000000..285623e --- /dev/null +++ b/docs/static/baremetal-overcloud/environment-settings-structure.rst @@ -0,0 +1,94 @@ +Settings for hardware environments +================================== + +Throughout the documentation, there are example settings and custom files to +overwrite the virt defaults in TripleO Quickstart. It is recommended to use a +organized directory structure to store the settings and files for each hardware +environment. + +Example Directory Structure +--------------------------- + +Each baremetal environment will need a directory structured as follows: + +|-- environment_name +| |-- instackenv.json +| |-- vendor_specific_setup +| |-- +| |-- network_configs +| | |-- +| | | |-- +| | | |-- env_settings.yml +| | | |-- nic_configs +| | | | |-- ceph-storage.yaml +| | | | |-- cinder-storage.yaml +| | | | |-- compute.yaml +| | | | |-- controller.yaml +| | | | |-- swift-storage.yaml +| | | |-- config_files +| | | | |--config.yml +| | | | |-- +| | | |-- requirements_files +| | | | |--requirements1.yml +| | | | |--requirements2.yml +| | |-- +| | | |-- +| | | |-- env_settings.yml +| | | |-- nic_configs +| | | | |-- ceph-storage.yaml +| | | | |-- cinder-storage.yaml +| | | | |-- compute.yaml +| | | | |-- controller.yaml +| | | | |-- swift-storage.yaml +| | | |-- config_files +| | | | |--config.yml +| | | | |-- +| | | |-- requirements_files +| | | | |--requirements1.yml +| | | | |--requirements2.yml + + +Explanation of Directory Contents +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + - instackenv.json (required) + + The instackenv.json file added at this top-level directory will replace the templated instackenv.json file for virt deployments. + + - vendor_specific_setup (optional) + + If any script needs to run to do environment setup before deployment, such as RAID configuration, it can be included here. + + - architecture diagram (optional) + + Although not required, if there is a diagram or document detailing the network architecture, it is useful to include that document or diagram here as all the settings and network isolation files will be based off of it. + + - network_configs (required) + + This directory is used to house the directories divided by network isolation type. + + - network-isolation-type (required) + + Even if deploying without network isolation, the files should be included in a 'none' directory. + There are files examples of the following network isolation types: single_nic_vlans, bond_with_vlans, native_networking, none. + + - network-environment.yaml (required, unless deploying with no network isolation) + + This file should be named after the network-isolation type, for example: bond_with_vlans.yaml. This naming convention follows the same pattern used by the default, virt workflow. + + - env_settings.yaml (required) + + This file stores all environment-specific settings to override default settings in TripleO quickstart and related repos, for example: the location of instackenv.json file, and setting 'overcloud_nodes' to empty so that quickstart does not create VMs for overcloud nodes. All settings required for undercloud.conf are included here. + + - nic_configs (optional) + + If the default nic-config files are not suitable for a particular hardware environment, specific ones can be added here and copied to the undercloud. Ensure that the network-environment.yaml file points to the correct location for the nic-configs to be used in deploy. + + - config_files (required) + + The deployment details are stored in the config file. Different config files can be created for scaling up nodes, HA, and other deployment combinations. + + - requirements_files (required) + + Multiple requirements files can be passed to quickstart.sh to include additional repos. For example, to include IPMI validation, the requirements files would need to include https://github.com/redhat-openstack/ansible-role-tripleo-validate-ipmi. + diff --git a/docs/static/baremetal-overcloud/introduction.rst b/docs/static/baremetal-overcloud/introduction.rst new file mode 100644 index 0000000..9dc1728 --- /dev/null +++ b/docs/static/baremetal-overcloud/introduction.rst @@ -0,0 +1,21 @@ +TripleO Quickstart +================== + +TripleO Quickstart is a fast and easy way to setup and configure your virtual environment for TripleO. +Further documentation can be found at https://github.com/openstack/tripleo-quickstart + +A quick way to test that your virthost machine is ready to rock is: + +:: + + ssh root@$VIRTHOST uname -a + +Getting the script +------------------ + +You can download the `quickstart.sh` script with `wget`: + +:: + + wget https://raw.githubusercontent.com/openstack/tripleo-quickstart/master/quickstart.sh + diff --git a/docs/static/baremetal-overcloud/networking.rst b/docs/static/baremetal-overcloud/networking.rst new file mode 100644 index 0000000..4dbd03e --- /dev/null +++ b/docs/static/baremetal-overcloud/networking.rst @@ -0,0 +1,37 @@ +Networking +---------- + +With a Virtual Environment, tripleo-quickstart sets up the networking as part of the workflow. +The networking arrangement needs to be set up prior to working with tripleo-quickstart. + +The overcloud nodes will be deployed from the undercloud machine and therefore the +machines need to have have their network settings modified to allow for the +overcloud nodes to be PXE boot'ed using the undercloud machine. +As such, the setup requires that: + +* All overcloud machines in the setup must support IPMI +* A management provisioning network is setup for all of the overcloud machines. + One NIC from every machine needs to be in the same broadcast domain of the + provisioning network. In the tested environment, this required setting up a new + VLAN on the switch. Note that you should use the same NIC on each of the + overcloud machines ( for example: use the second NIC on each overcloud + machine). This is because during installation we will need to refer to that NIC + using a single name across all overcloud machines e.g. em2 +* The provisioning network NIC should not be the same NIC that you are using + for remote connectivity to the undercloud machine. During the undercloud + installation, a openvswitch bridge will be created for Neutron and the + provisioning NIC will be bridged to the openvswitch bridge. As such, + connectivity would be lost if the provisioning NIC was also used for remote + connectivity to the undercloud machine. +* The overcloud machines can PXE boot off the NIC that is on the private VLAN. + In the tested environment, this required disabling network booting in the BIOS + for all NICs other than the one we wanted to boot and then ensuring that the + chosen NIC is at the top of the boot order (ahead of the local hard disk drive + and CD/DVD drives). +* For each overcloud machine you have: the MAC address of the NIC that will PXE + boot on the provisioning network the IPMI information for the machine (i.e. IP + address of the IPMI NIC, IPMI username and password) + +Refer to the following diagram for more information + +i.. image:: _images/TripleO_Network_Diagram_.jpg diff --git a/docs/static/baremetal-overcloud/requirements.rst b/docs/static/baremetal-overcloud/requirements.rst new file mode 100644 index 0000000..9abd1fa --- /dev/null +++ b/docs/static/baremetal-overcloud/requirements.rst @@ -0,0 +1,23 @@ +Minimum System Requirements +--------------------------- + +By default, tripleo-quickstart requires 3 machines: + +* 1 Undercloud (can be a Virtual Machine) +* 1 Overcloud Controller +* 1 Overcloud Compute + +Commonly, deployments include HA (3 Overcloud Controllers) and multiple Overcloud Compute nodes. + +Each Overcloud machine requires at least: + +* 1 quad core CPU +* 8 GB free memory +* 60 GB disk space + +The undercloud VM or baremetal machine requires: + +* 1 quad core CPU +* 16 GB free memory +* 80 GB disk space + diff --git a/docs/static/baremetal-overcloud/validate-prior-to-deploy.rst b/docs/static/baremetal-overcloud/validate-prior-to-deploy.rst new file mode 100644 index 0000000..edb1b2a --- /dev/null +++ b/docs/static/baremetal-overcloud/validate-prior-to-deploy.rst @@ -0,0 +1,9 @@ +Validating the environment prior to deployment +---------------------------------------------- + +In a baremetal overcloud deployment there is a custom environment and many related settings +and steps. As such, it is worthwhile to validate the environment and custom configuration +files prior to deployment. + +A collection of validation tools is available in the 'clapper' repo: +. diff --git a/docs/static/baremetal-overcloud/virtual-vs-baremetal-undercloud.rst b/docs/static/baremetal-overcloud/virtual-vs-baremetal-undercloud.rst new file mode 100644 index 0000000..d08ad09 --- /dev/null +++ b/docs/static/baremetal-overcloud/virtual-vs-baremetal-undercloud.rst @@ -0,0 +1,17 @@ +Virtual Undercloud VS. Baremetal Undercloud +------------------------------------------- + +When deploying the overcloud on baremetal nodes, there is the option of using an undercloud +deployed on a baremetal machine or creating a virtual machine (VM) on that same baremetal machine +and using the VM to serve as the undercloud. + +The advantages of using a VM undercloud are: + +* The VM can be rebuilt and reinstalled without reprovisioning the entire baremetal machine +* The tripleo-quickstart default workflow is written for a Virtual Environment deployment. + Using a VM undercloud requires less customization of the default workflow. + +.. note:: When using a VM undercloud, but baremetal nodes for the overcloud + deployment, the ``overcloud_nodes`` variable in tripleo-quickstart + must overwritten and set to empty. +