Pike Series (4.0.0 - 4.0.x) Release Notes¶
4.0.2¶
New Features¶
Adds support for performing ironic online data migrations.
Bug Fixes¶
Fixes an issue where the proliantutils library version was unconstrained, potentially resulting in installation of an incompatibile library. The version has been pinned to 2.7.0.
4.0.0¶
New Features¶
bifrost now always writes
clouds.yaml
configuration file for os-client-config independently of whether keystone is installed or not.This allows unified usage of ironic-related openstackclient commands both in presence and absence of installed keystone by using the
openstack
command in the following form for both situations:openstack --os-cloud bifrost baremetal ...
Changes the
bifrost-create-vm-nodes
role to use Ansible’s virt modules to create virtual machines for bifrost testing. This supersedes the embedded bash script to create virtual machines. As a result, all variables that were present in the bash script are now available as default role variables and can be overridden by standard Ansible means.For backward compatibility, some of the variables still support the use of shell variables, but this is deprecated and should be avoided.
Allows configuration of inspector processing hooks.
It is now possible to configure the set of inspection data processing hooks used by ironic inspector via the variable
inspector_processing_hooks
, which defaults to using inspector’s default list.
Allows additional kernel arguments to be specified in inspector PXE config.
A number of optional features in the Ironic Python Agent (IPA) are configured via kernel command line arguments, e.g.
ipa-collect-lldp
.It is now possible to specify additional kernel arguments for use by the IPA ramdisk during inspection with the
inspector_extra_kernel_options
variable.
Allows to set more than one nameserver in the provisioned instances. The ipv4_nameserver setting can now accept either a string or a list of strings, allowing to populate all desired nameservers.
Allows log directories to be configured
In some cases it is useful to be able to configure the directory into which log files are written by bifrost services.
It is now possible to configure the ironic, inspector and nginx log directories using the
ironic_log_dir
,inspector_log_dir
, andnginx_log_dir
variables respectively.
Bifrost now supports the definition of a specific database server, username, password, and database name for ironic and ironic-inspector.
If the host for the database is not set to
localhost
, then actions such as database and user creation are skipped. This functionality is present in both the bootstrapping for ironic, ironic-inspector, and keystone, and applies to initial explicit database schema creation steps where applicable.
Bifrost has removed support for Ironic’s SSH based power and management drivers, as a result of Ironic removing the drivers altogether.
Bifrost testing has moved to
ipmitools
-based ironic drivers and virtual hardware exposed via ‘virtualbmc’ utility.Default ironic drivers set up by bifrost are changed to
pxe_ipmitool
andagent_ipmitool
.Default driver for CSV baremetal data files in bifrost’s dynamic inventory is changed to
agent_ipmitool
.
Moves all preparation for testing with ‘virtual’ hardware to the
bifrost-create-vm-nodes
role, and libvirt interactions have been decoupled from thebifrost-ironic-install
role.
Allow consuming upper_constraints_file from an env var UPPER_CONSTRAINTS_FILE. This will be specially useful for OpenStack CI, where this var is defined on each job run, pointing to the right requirements file depending on branch.
It is now possible to define additional per-host inventory groups for all the hosts that make use of the dynamic JSON inventory. The way to do that is to simply define a list of groups in the host_group property as illustrated in the following example:
"node1": { "uuid": "a8cb6624-0d9f-c882-affc-046ebb96ec01", "host_groups": [ "baremetal" ], }
When provisioning virtual machines it’s possible to set the per-VM inventory groups by setting the
test_vm_host_groups
variable as follows:{ test_vm_host_groups: { testhost: [nova, cinder] } }
It is also possible to change the default
baremetal
group for virtual machines by simply setting thehost_default_group
variable to a list of default groups as follows:{ test_vm_default_groups: [baremetal vms] }
The list of default groups can also be set in the
DEFAULT_HOST_GROUPS
environmental variable. This is currently the only way to change the default group for baremetal hosts:export DEFAULT_HOST_GROUPS="foo bar zoo"
This will change the default groups to [foo, bar, zoo] instead of the currently [baremetal] default. Extra care should be taken when using this method since most bifrost playbooks depend on having a [baremetal] group available for provisioning hosts.
Bifrost’s testing has been moved to use JSON-formatted baremetal inventory file instead of deprecated CSV-formatted one. The
bifrost-create-vm-nodes
role still acceptsbaremetal_csv_file
variable as path to where to write inventory, but the file content will always be in JSON format. A new variablebaremetal_json_file
should instead be used as a location to where to write the test baremetal inventory file.
Downloaded IPA files can now be verified using checksum files. Upstream builds will be verified by default but you can disable this behavior by setting
ipa_kernel_upstream_checksum_url
oripa_ramdisk_upstream_checksum_url
variables to empty strings. The default checksum algorithm issha256
which matches the one provided in the upstream files. In case you want to provide your own checksum files, you can set the previously mentioned variables appropriately to match your setup. You can also setipa_kernel_upstream_checksum_algo
oripa_ramdisk_upstream_checksum_algo
to checksum algorithms likemd5
in case you want to provide non-sha256 checksums. Be careful though because these values must be valid for Ansibleget_url
module’schecksum
parameter. Finally, it’s also possible to provide the checksum directly by setting theipa_kernel_checksum
oripa_ramdisk_checksum
variables to$algorithm:$checksum
. In case the verification fails, bifrost will retry a few more times to re-download and re-verify the files before giving up assuming there is a network issue or a file corruption on the remote server.
Upgrade Notes¶
Default ironic drivers set up by bifrost are changed to
pxe_ipmitool
andagent_ipmitool
.
Default driver for CSV baremetal data files in bifrost’s dynamic inventory is changed to
agent_ipmitool
. Those bifrost users relying on such behavior must explicitly set the driver in CSV baremetal data file.
The
baremetal_csv_file
variable inbifrost-create-vm-nodes
role has been deprecated and will be removed in the Queens release. The inventory file written to this location by this role is now always in JSON format. The variablebaremetal_json_file
should be used instead ofbaremetal_csv_file
. This concerns only those operators who run tests for bifrost on virtual hardware usingbifrost-create-vm-nodes
role and out-of-tree scripts to process the baremetal inventory file produced by this role. If such scripts do rely on this file being in CSV format, they must be updated to use JSON format instead.
Deprecation Notes¶
Relying on shell environment variables to set parameters for created virtual nodes is deprecated and will be removed in the Queens release. Any scripts relying on such behavior need to be changed to explicitly pass these parameters as extra-vars to ansible-playbook invocations.
Use of the
ironic_db_password
variable as an available default will be removed in the Queens release of bifrost.
Handling of
*_ssh
drivers for CSV baremetal data format has been removed as the drivers have been removed from ironic.
The CSV format for baremetal inventory file is deprecated and using it will be impossible in the Queens release. During deprecation period it’s handling is still supported by bifrost’s dynamic inventory, but this functionality will be removed in the Queens release.
Bug Fixes¶
The CI test playbook previously looked for the requirements respository in
/opt/git/openstack/
. This has been changed to use theWORKSPACE
environment variable when being executed.
Corrects an issue where execution of
install.yaml
would return an error indicatingSUDO_USER
was not found, by providing a fallback to theansible_user_id
variable.
Allows
undionly.kpxe
boot option to be overridden.As an operator, I may wish to provide DHCP boot options for hosts not managed by bifrost using the bifrost dnsmasq server.
Previously, if a
dhcp-boot
configuration option was provided to dnsmasq via a file in/etc/dnsmasq.d/
, and the server was not booted via iPXE, the option would have been overridden by theundionly.kpxe
option added by bifrost in/etc/dnsmasq.conf
.Bifrost now supports user-provided
dhcp-boot
options in/etc/dnsmasq.d
. These should be specified with an appropriate set of tags to match against to ensure that the rule overrides the default rule configured by bifrost.
Supports passing
no_proxy
environment variable to Ansible, users can useno_proxy
to exclude specified hosts from using proxy.
Other Notes¶
bifrost host dependencies are now being installed using the
bindep
tool. New dependencies should be added to the bindep.txt file with the appropriate profile information if necessary. Core dependencies (ie those needed to bootstrap the system such as python, gcc, libffi, etc) must be listed in both the bindep.txt file and the scripts/install-deps.sh one for mainly two reasons. First of all, the OpenStack CI may only consult the bindep.txt in order to pull the necessary dependencies. Second,bindep
needs certain packages to be present in order to its dependencies to build properly. More information about thebindep
tool can be found at https://docs.openstack.org/infra/bindep/