Move the advanced installation with playbooks in a new file. Also add the information on what to do after the commands succeed: link to the ironic docs, mention the generated files from testenv. Change-Id: Ic974e6681ff0cee4adf8317365e49c4987502872
3.9 KiB
Testing Environment
Quick start with bifrost-cli
If you want to try Bifrost on virtual machines instead of real
hardware, you need to prepare a testing environment. The easiest way is
via bifrost-cli, available since the Victoria release
series:
./bifrost-cli testenvAdditionally, the following parameters can be useful:
--develop-
Install services in develop mode, so that the changes to the repositories in
/optget immediately reflected in the virtual environment.Note
You still need to restart services to apply any changes, e.g.:
sudo systemctl restart ironic-conductor
--driver=[ipmi|redfish]-
Choose the default driver for the generated nodes inventory.
Note
Both IPMI and Redfish support is configured anyway, so you can switch the drivers on fly if needed.
IPMI support uses VirtualBMC, Redfish - sushy-tools.
--uefi-
Makes the testing VMs boot with UEFI.
See the built-in documentation for more details:
./bifrost-cli testenv --helpThe command generates two files with node inventory in the current directory:
baremetal-inventory.jsoncan be used with the provided playbooks, see/user/howtofor details.baremetal-nodes.jsoncan be used with the Ironic enrollment command:export OS_CLOUD=bifrost baremetal create baremetal-nodes.json
Reproduce CI testing locally
A simple scripts/test-bifrost.sh script can be utilized
to install pre-requisite software packages, Ansible, and then execute
the test-bifrost-create-vm.yaml and
test-bifrost.yaml playbooks in order to provide a single
step testing mechanism.
playbooks/test-bifrost-create-vm.yaml creates one or
more VMs for testing and saves out a baremetal.json file which is used
by playbooks/test-bifrost.yaml to execute the remaining
roles. Two additional roles are invoked by this playbook which enables
Ansible to connect to the new nodes by adding them to the inventory, and
then logging into the remote machine via the user's ssh host key. Once
that has successfully occurred, additional roles will unprovision the
host(s) and delete them from ironic.
Command:
scripts/test-bifrost.sh
Note:
- In order to cap requirements for installation, an
upper_constraints_filesetting is defined. This is consuming theUPPER_CONSTRAINTS_FILEorTOX_CONSTRAINTS_FILEenv var by default, to properly integrate with CI systems, and will default to/opt/stack/requirements/upper-constraints.txtfile if not present.
Manually test with Virtual Machines
Bifrost supports using virtual machines to emulate the hardware.
The VirtualBMC
project is used as an IPMI proxy, so that the same ipmi
hardware type can be used as for real hardware. Redfish emulator from sushy-tools is also
installed.
- Set
testingto true in theplaybooks/inventory/group_vars/targetfile. - You may need to adjust the value for
ssh_public_key_path. - Execute the
ansible-playbook -vvvv -i inventory/target test-bifrost-create-vm.yamlcommand to create a test virtual machine. - Run the install step, as documented in
/install/index, however adding-e testing=trueto the Ansible command line. - Set the environment variable of
BIFROST_INVENTORY_SOURCEto the path to the JSON file, which by default has been written to/tmp/baremetal.json. - Run the
enrollment step <enroll>, using the JSON file you created in the previous step. - Run the deployment step, as documented in
deploy.
Configuring libvirt
virsh