diff options
Diffstat (limited to 'resources/tools/testbed-setup/README.rst')
-rw-r--r-- | resources/tools/testbed-setup/README.rst | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/resources/tools/testbed-setup/README.rst b/resources/tools/testbed-setup/README.rst deleted file mode 100644 index 9059e28500..0000000000 --- a/resources/tools/testbed-setup/README.rst +++ /dev/null @@ -1,152 +0,0 @@ -Testbed Setup -============= - -Introduction ------------- - -This directory contains the *high-level* process to set up a hardware machine -as a CSIT testbed, either for use as a physical performance testbed host or as -a vpp_device host. - -Code in this directory is NOT executed as part of a regular CSIT test case -but is stored here for ad-hoc installation of HW, archiving and documentation -purposes. - -Documentation below is step by step tutorial and assumes an understanding of PXE -boot and `Ansible <https://www.ansible.com/>`_ and managing physical hardware -via CIMC or IPMI. - -This process is not specific for Linux Foundation lab, but associated files and -code, is based on the assumption that it runs in Linux Foundation environment. -If run elsewhere, changes will be required in following files: - -#. Inventory directory: `ansible/inventories/sample_inventory/` -#. Inventory files: `ansible/inventories/sample_inventory/hosts` - -The process below assumes that there is a host used for bootstrapping (referred -to as a "Cobbler provision host" below), with reachable DHCP service. - -Ansible host ------------- - -Prerequisities for running Ansible -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -- CIMC/IPMI address, username, password are set in BIOS. -- Ansible can be invoked on any host that has direct SSH connectivity to - the remote hosts that will be provisioned (does not need to be Cobbler - provision host). This may require installed ssh_keys `ssh-copy-id` on remote - host or disabled StrictHostChecking on host running Ansible: - - :: - - Host <host_ip or host subnet_ip> - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null - -- Ansible version 2.7+ is installed via PIP or via standard package - distribution (apt, yum, dnf). -- User `testuser` with password `Csit1234` is created with home folder - initialized on all remote machines that will be provisioned. -- Inventory directory is created with same or similar content as - `inventories/lf_inventory` in `inventories/` directory (`sample_inventory` - can be used). -- Group variables in `ansible/inventories/<inventory>/group_vars/all.yaml` are - adjusted per environment with special attention to `proxy_env` variable. -- Host variables in `ansible/inventories/<inventory>/host_vars/x.x.x.x.yaml` are - defined. - -Ansible structure -~~~~~~~~~~~~~~~~~ - -Ansible is defining roles `tg` (Traffic Generator), `sut` (System Under Test), -`vpp_device` (vpp_device host for functional device testing), `common` -(Applicable for all hosts in inventory) and `cobbler` (Cobbler provision host). - -Each host has corresponding Ansible role mapped and is applied only if a host -with that role is present in inventory file. As a part of optimization the role -`common` contains Ansible tasks applied for all hosts. - -.. note:: - - You may see `[WARNING]: Could not match supplied host pattern, ignoring: - <role>` in case you have not define hosts for that particular role. - -Ansible structure is described below: - -.. code-block:: bash - - . - ├── inventories # Contains all inventories. - │ ├── sample_inventory # Sample, free for edits outside of LF. - │ │ ├── group_vars # Variables applied for all hosts. - │ │ │ └── all.yaml - │ │ ├── hosts # Inventory list with sample hosts. - │ │ └── host_vars # Variables applied for single host only. - │ │ └── 1.1.1.1.yaml # Sample host with IP 1.1.1.1 - │ └── lf_inventory # Linux Foundation inventory. - │ ├── group_vars - │ │ └── all.yaml - │ ├── hosts - │ └── host_vars - ├── roles # CSIT roles. - │ ├── cobbler # Role applied for Cobbler host only. - │ ├── common # Role applied for all hosts. - │ ├── sut # Role applied for all SUTs only. - │ ├── tg # Role applied for all TGs only. - │ ├── tg_sut # Role applied for TGs and SUTs only. - │ └── vpp_device # Role applied for vpp_device only. - ├── site.yaml # Main playbook. - ├── sut.yaml # SUT playbook. - ├── tg.yaml # TG playbook. - ├── vault_pass # Main password for vault. - ├── vault.yml # Ansible vault storage. - └── vpp_device.yaml # vpp_device playbook. - -Tagging -~~~~~~~ - -Every task, handler, role or playbook is tagged with self-explanatory tag(s) -that could be used to limit which Ansible objects are applied to target systems. - -You can see what tags are applied to tasks, roles, and static imports by -running `ansible-playbook` with the `--list-tasks` option. You can display all -tags applied to the tasks with the `--list-tags` option. - -Running Ansible -~~~~~~~~~~~~~~~ - -#. Go to ansible directory: `$ cd csit/resources/tools/testbed-setup/ansible` -#. Run ansible on selected hosts: - `$ ansible-playbook --vault-password-file=vault_pass --extra-vars - '@vault.yml' --inventory <inventory_file> site.yaml --limit <host_ip>` -#. (Optional) Run ansible on selected hosts with selected tags: - `$ ansible-playbook --vault-password-file=vault_pass --extra-vars - '@vault.yml' --inventory <inventory_file> site.yaml --limit <host_ip> - --tags 'copy-90-csit'` - -.. note:: - - In case you want to provision only particular role. You can use tags: `tg`, - `sut`, `vpp_device`. - -Baremetal provisioning of host via Ansible Cobbler module -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Baremetal provisioning of the host with Ansible is done via `Cobbler -<https://cobbler.github.io/>`_. Ansible contains a role `cobbler` that includes -a set of tasks for deploying Cobbler in a container on dedicated host. -Container is built during Ansible run of `cobbler` role and it provides DHCPD, -TFTPD, HTTTP and Cobbler services. - -There is a special set of tasks and handlers in `common` role that does include -a system into Cobbler and reboots provisioned host. - -#. Go to Ansible directory: `$ cd csit/resources/tools/testbed-setup/ansible` -#. Prepare Cobbler provision host via Ansible on dedicated hosts: - `$ ansible-playbook --vault-password-file=vault_pass --extra-vars - '@vault.yml' --inventory <inventory_file> site.yaml --limit <cobbler_ip>` -#. Run Ansible on selected hosts with selected tags: - `$ ansible-playbook --vault-password-file=vault_pass --extra-vars - '@vault.yml' --inventory <inventory_file> site.yaml --limit <host_ip> - --tags 'provision'` |