diff options
Diffstat (limited to 'docs/release/installation/installation_baremetal.rst')
-rw-r--r-- | docs/release/installation/installation_baremetal.rst | 583 |
1 files changed, 583 insertions, 0 deletions
diff --git a/docs/release/installation/installation_baremetal.rst b/docs/release/installation/installation_baremetal.rst new file mode 100644 index 00000000..ff4e6e53 --- /dev/null +++ b/docs/release/installation/installation_baremetal.rst @@ -0,0 +1,583 @@ +.. highlight:: bash + + +Bare Metal Installation +======================= +Before proceeding, make sure that your hardware infrastructure satisfies the +:ref:`setup-requirements`. + + +Networking +---------- +Make sure you have at least two networks configured: + +1. *Admin* (management) network with gateway to access the Internet (for + downloading installation resources). +2. A *public/floating* network to consume by tenants for floating IPs. + +You may configure other networks, e.g. for data or storage, based on your +network options for Openstack. + + +.. _jumphost-install-os: + +Jumphost installation and configuration +--------------------------------------- + +1. Install Ubuntu 16.04 (Xenial) LTS server on Jumphost (one of the physical + nodes). + + .. tip:: + Use ``ubuntu`` as username as password, as this matches the MAAS + credentials installed later. + + During the OS installation, install the OpenSSH server package to + allow SSH connections to the Jumphost. + + If the data size of the image is too big or slow (e.g. when mounted + through a slow virtual console), you can also use the Ubuntu mini ISO. + Install packages: standard system utilities, basic Ubuntu server, + OpenSSH server, Virtual Machine host. + + If you have issues with blank console after booting, see + `this SO answer <https://askubuntu.com/a/38782>`_ and set + ``nomodeset``, (removing ``quiet splash`` can also be useful to see log + during booting) either through console in recovery mode or via SSH (if + installed). + +2. Install git and bridge-utils packages + + :: + + sudo apt install git bridge-utils + +3. Configure bridges for each network to be used. + + Example ``/etc/network/interfaces`` file: + + :: + + source /etc/network/interfaces.d/* + + # The loopback network interface (set by Ubuntu) + auto lo + iface lo inet loopback + + # Admin network interface + iface eth0 inet manual + auto brAdmin + iface brAdmin inet static + bridge_ports eth0 + address 10.5.1.1 + netmask 255.255.255.0 + + # Ext. network for floating IPs + iface eth1 inet manual + auto brExt + iface brExt inet static + bridge_ports eth1 + address 10.5.15.1 + netmask 255.255.255.0 + + .. + + .. note:: + If you choose to use the separate network for management, public, data + and storage, then you need to create bridge for each interface. In case + of VLAN tags, use the appropriate network on Jumphost depending on the + VLAN ID on the interface. + + +Configure JOID for your lab +--------------------------- + +All configuration for the JOID deployment is specified in a ``labconfig.yaml`` +file. Here you describe all your physical nodes, their roles in OpenStack, +their network interfaces, IPMI parameters etc. It's also where you configure +your OPNFV deployment and MAAS networks/spaces. +You can find example configuration files from already existing nodes in the +`repository <https://gerrit.opnfv.org/gerrit/gitweb?p=joid.git;a=tree;f=labconfig>`_. + +First of all, download JOID to your Jumphost. We recommend doing this in your +home directory. + +:: + + git clone https://gerrit.opnfv.org/gerrit/p/joid.git + +.. tip:: + You can select the stable version of your choice by specifying the git + branch, for example: + + :: + + git clone -b stable/danube https://gerrit.opnfv.org/gerrit/p/joid.git + +Create a directory in ``joid/labconfig/<company_name>/<pod_number>/`` and +create or copy a ``labconfig.yaml`` configuration file to that directory. +For example: + +:: + + # All JOID actions are done from the joid/ci directory + cd joid/ci + mkdir -p ../labconfig/your_company/pod1 + cp ../labconfig/nokia/pod1/labconfig.yaml ../labconfig/your_company/pod1/ + +Example ``labconfig.yaml`` configuration file: + +:: + + lab: + location: your_company + racks: + - rack: pod1 + nodes: + - name: rack-1-m1 + architecture: x86_64 + roles: [network,control] + nics: + - ifname: eth0 + spaces: [admin] + mac: ["12:34:56:78:9a:bc"] + - ifname: eth1 + spaces: [floating] + mac: ["12:34:56:78:9a:bd"] + power: + type: ipmi + address: 192.168.10.101 + user: admin + pass: admin + - name: rack-1-m2 + architecture: x86_64 + roles: [compute,control,storage] + nics: + - ifname: eth0 + spaces: [admin] + mac: ["23:45:67:89:ab:cd"] + - ifname: eth1 + spaces: [floating] + mac: ["23:45:67:89:ab:ce"] + power: + type: ipmi + address: 192.168.10.102 + user: admin + pass: admin + - name: rack-1-m3 + architecture: x86_64 + roles: [compute,control,storage] + nics: + - ifname: eth0 + spaces: [admin] + mac: ["34:56:78:9a:bc:de"] + - ifname: eth1 + spaces: [floating] + mac: ["34:56:78:9a:bc:df"] + power: + type: ipmi + address: 192.168.10.103 + user: admin + pass: admin + - name: rack-1-m4 + architecture: x86_64 + roles: [compute,storage] + nics: + - ifname: eth0 + spaces: [admin] + mac: ["45:67:89:ab:cd:ef"] + - ifname: eth1 + spaces: [floating] + mac: ["45:67:89:ab:ce:f0"] + power: + type: ipmi + address: 192.168.10.104 + user: admin + pass: admin + - name: rack-1-m5 + architecture: x86_64 + roles: [compute,storage] + nics: + - ifname: eth0 + spaces: [admin] + mac: ["56:78:9a:bc:de:f0"] + - ifname: eth1 + spaces: [floating] + mac: ["56:78:9a:bc:df:f1"] + power: + type: ipmi + address: 192.168.10.105 + user: admin + pass: admin + floating-ip-range: 10.5.15.6,10.5.15.250,10.5.15.254,10.5.15.0/24 + ext-port: "eth1" + dns: 8.8.8.8 + opnfv: + release: d + distro: xenial + type: noha + openstack: ocata + sdncontroller: + - type: nosdn + storage: + - type: ceph + disk: /dev/sdb + feature: odl_l2 + spaces: + - type: admin + bridge: brAdmin + cidr: 10.5.1.0/24 + gateway: + vlan: + - type: floating + bridge: brExt + cidr: 10.5.15.0/24 + gateway: 10.5.15.1 + vlan: + +.. TODO: Details about the labconfig.yaml file + +Once you have prepared the configuration file, you may begin with the automatic +MAAS deployment. + +MAAS Install +------------ + +This section will guide you through the MAAS deployment. This is the first of +two JOID deployment steps. + +.. note:: + For all the commands in this document, please do not use a ``root`` user + account to run but instead use a non-root user account. We recommend using + the ``ubuntu`` user as described above. + + If you have already enabled maas for your environment and installed it then + there is no need to enabled it again or install it. If you have patches + from previous MAAS install, then you can apply them here. + + Pre-installed MAAS without using the ``03-maasdeploy.sh`` script is not + supported. We strongly suggest to use ``03-maasdeploy.sh`` script to deploy + the MAAS and JuJu environment. + +With the ``labconfig.yaml`` configuration file ready, you can start the MAAS +deployment. In the joid/ci directory, run the following command: + +:: + + # in joid/ci directory + ./03-maasdeploy.sh custom <absolute path of config>/labconfig.yaml + +.. + +If you prefer, you can also host your ``labconfig.yaml`` file remotely and JOID +will download it from there. Just run + +:: + + # in joid/ci directory + ./03-maasdeploy.sh custom http://<web_site_location>/labconfig.yaml + +.. + +This step will take approximately 30 minutes to a couple of hours depending on +your environment. +This script will do the following: + +* If this is your first time running this script, it will download all the + required packages. +* Install MAAS on the Jumphost. +* Configure MAAS to enlist and commission a VM for Juju bootstrap node. +* Configure MAAS to enlist and commission bare metal servers. +* Download and load Ubuntu server images to be used by MAAS. + +Already during deployment, once MAAS is installed, configured and launched, +you can visit the MAAS Web UI and observe the progress of the deployment. +Simply open the IP of your jumphost in a web browser and navigate to the +``/MAAS`` directory (e.g. ``http://10.5.1.1/MAAS`` in our example). You can +login with username ``ubuntu`` and password ``ubuntu``. In the *Nodes* page, +you can see the bootstrap node and the bare metal servers and their status. + +.. hint:: + If you need to re-run this step, first undo the performed actions by + running + + :: + + # in joid/ci + ./cleanvm.sh + ./cleanmaas.sh + # now you can run the ./03-maasdeploy.sh script again + + .. + + +Juju Install +------------ + +This section will guide you through the Juju an OPNFV deployment. This is the +second of two JOID deployment steps. + +JOID allows you to deploy different combinations of OpenStack and SDN solutions +in HA or no-HA mode. For OpenStack, it supports Newton and Ocata. For SDN, it +supports Open vSwitch, OpenContrail, OpenDaylight and ONOS (Open Network +Operating System). In addition to HA or no-HA mode, it also supports deploying +the latest from the development tree (tip). + +To deploy OPNFV on the previously deployed MAAS system, use the ``deploy.sh`` +script. For example: + +:: + + # in joid/ci directory + ./deploy.sh -d xenial -m openstack -o ocata -s nosdn -f none -t noha -l custom + +The above command starts an OPNFV deployment with Ubuntu Xenial (16.04) distro, +OpenStack model, Ocata version of OpenStack, Open vSwitch (and no other SDN), +no special features, no-HA OpenStack mode and with custom labconfig. I.e. this +corresponds to the ``os-nosdn-nofeature-noha`` OPNFV deployment scenario. + +.. note:: + You can see the usage info of the script by running + + :: + + ./deploy.sh --help + + Possible script arguments are as follows. + + **Ubuntu distro to deploy** + :: + + [-d <trusty|xenial>] + + - ``trusty``: Ubuntu 16.04. + - ``xenial``: Ubuntu 17.04. + + **Model to deploy** + :: + + [-m <openstack|kubernetes>] + + JOID introduces two various models to deploy. + + - ``openstack``: Openstack, which will be used for KVM/LXD + container-based workloads. + - ``kubernetes``: Kubernetes model will be used for docker-based + workloads. + + **Version of Openstack deployed** + :: + + [-o <newton|mitaka>] + + - ``newton``: Newton version of OpenStack. + - ``ocata``: Ocata version of OpenStack. + + **SDN controller** + :: + + [-s <nosdn|odl|opencontrail|onos>] + + - ``nosdn``: Open vSwitch only and no other SDN. + - ``odl``: OpenDayLight Boron version. + - ``opencontrail``: OpenContrail SDN. + - ``onos``: ONOS framework as SDN. + + **Feature to deploy** (comma separated list) + :: + + [-f <lxd|dvr|sfc|dpdk|ipv6|none>] + + - ``none``: No special feature will be enabled. + - ``ipv6``: IPv6 will be enabled for tenant in OpenStack. + - ``lxd``: With this feature hypervisor will be LXD rather than KVM. + - ``dvr``: Will enable distributed virtual routing. + - ``dpdk``: Will enable DPDK feature. + - ``sfc``: Will enable sfc feature only supported with ONOS deployment. + - ``lb``: Load balancing in case of Kubernetes will be enabled. + + **Mode of Openstack deployed** + :: + + [-t <noha|ha|tip>] + + - ``noha``: No High Availability. + - ``ha``: High Availability. + - ``tip``: The latest from the development tree. + + **Where to deploy** + :: + + [-l <custom|default|...>] + + - ``custom``: For bare metal deployment where labconfig.yaml was provided + externally and not part of JOID package. + - ``default``: For virtual deployment where installation will be done on + KVM created using ``03-maasdeploy.sh``. + + **Architecture** + :: + + [-a <amd64|ppc64el|aarch64>] + + - ``amd64``: Only x86 architecture will be used. Future version will + support arm64 as well. + +This step may take up to a couple of hours, depending on your configuration, +internet connectivity etc. You can check the status of the deployment by +running this command in another terminal: + +:: + + watch juju status --format tabular + + +.. hint:: + If you need to re-run this step, first undo the performed actions by + running + :: + + # in joid/ci + ./clean.sh + # now you can run the ./deploy.sh script again + + .. + + +OPNFV Scenarios in JOID +----------------------- +Following OPNFV scenarios can be deployed using JOID. Separate yaml bundle will +be created to deploy the individual scenario. + +======================= ======= =============================================== +Scenario Owner Known Issues +======================= ======= =============================================== +os-nosdn-nofeature-ha Joid +os-nosdn-nofeature-noha Joid +os-odl_l2-nofeature-ha Joid Floating ips are not working on this deployment. +os-nosdn-lxd-ha Joid Yardstick team is working to support. +os-nosdn-lxd-noha Joid Yardstick team is working to support. +os-onos-nofeature-ha ONOSFW +os-onos-sfc-ha ONOSFW +k8-nosdn-nofeature-noha Joid No support from Functest and Yardstick +k8-nosdn-lb-noha Joid No support from Functest and Yardstick +======================= ======= =============================================== + + +.. _troubleshooting: + +Troubleshoot +------------ +By default debug is enabled in script and error messages will be printed on ssh +terminal where you are running the scripts. + +Logs are indispensable when it comes time to troubleshoot. If you want to see +all the service unit deployment logs, you can run ``juju debug-log`` in another +terminal. The debug-log command shows the consolidated logs of all Juju agents +(machine and unit logs) running in the environment. + +To view a single service unit deployment log, use ``juju ssh`` to access to the +deployed unit. For example to login into ``nova-compute`` unit and look for +``/var/log/juju/unit-nova-compute-0.log`` for more info: + +:: + + ubuntu@R4N4B1:~$ juju ssh nova-compute/0 + Warning: Permanently added '172.16.50.60' (ECDSA) to the list of known hosts. + Warning: Permanently added '3-r4n3b1-compute.maas' (ECDSA) to the list of known hosts. + Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 3.13.0-77-generic x86_64) + + * Documentation: https://help.ubuntu.com/ + <skipped> + Last login: Tue Feb 2 21:23:56 2016 from bootstrap.maas + ubuntu@3-R4N3B1-compute:~$ sudo -i + root@3-R4N3B1-compute:~# cd /var/log/juju/ + root@3-R4N3B1-compute:/var/log/juju# ls + machine-2.log unit-ceilometer-agent-0.log unit-ceph-osd-0.log unit-neutron-contrail-0.log unit-nodes-compute-0.log unit-nova-compute-0.log unit-ntp-0.log + root@3-R4N3B1-compute:/var/log/juju# + +.. note:: + By default Juju will add the Ubuntu user keys for authentication into the + deployed server and only ssh access will be available. + +Once you resolve the error, go back to the jump host to rerun the charm hook +with + +:: + + $ juju resolved --retry <unit> + +If you would like to start over, run +``juju destroy-environment <environment name>`` to release the resources, then +you can run ``deploy.sh`` again. + +To access of any of the nodes or containers, use + +:: + + juju ssh <service name>/<instance id> + +For example: + +:: + + juju ssh openstack-dashboard/0 + juju ssh nova-compute/0 + juju ssh neutron-gateway/0 + +You can see the available nodes and containers by running + +:: + + juju status + +All charm log files are available under ``/var/log/juju``. + +----- + +If you have questions, you can join the JOID channel ``#opnfv-joid`` on +`Freenode <https://webchat.freenode.net/>`_. + + +Common Issues +------------- + +The following are the common issues we have collected from the community: + +- The right variables are not passed as part of the deployment procedure. + + :: + + ./deploy.sh -o newton -s nosdn -t ha -l custom -f none + +- If you have not setup MAAS with ``03-maasdeploy.sh`` then the + ``./clean.sh`` command could hang, the ``juju status`` command may hang + because the correct MAAS API keys are not mentioned in cloud listing for + MAAS. + + _Solution_: Please make sure you have an MAAS cloud listed using juju + clouds and the correct MAAS API key has been added. +- Deployment times out: use the command ``juju status`` and make sure all + service containers receive an IP address and they are executing code. + Ensure there is no service in the error state. +- In case the cleanup process hangs,run the juju destroy-model command + manually. + +**Direct console access** via the OpenStack GUI can be quite helpful if you +need to login to a VM but cannot get to it over the network. +It can be enabled by setting the ``console-access-protocol`` in the +``nova-cloud-controller`` to ``vnc``. One option is to directly edit the +``juju-deployer`` bundle and set it there prior to deploying OpenStack. + +:: + + nova-cloud-controller: + options: + console-access-protocol: vnc + +To access the console, just click on the instance in the OpenStack GUI and +select the Console tab. + + + +.. Links: +.. _`Ubuntu download`: https://www.ubuntu.com/download/server |