heat_template_version: 2014-10-16 description: > This is the firstboot configuration for kvmfornfv kernel of the compute nodes via cloud-init. To enable this, replace the default mapping of OS::TripleO::NodeUserData in ../overcloud_resource_registry* parameters: ComputeKernelArgs: description: > Name of the kvmfornfv kernel rpm. Example: "kvmfornfv_kernel.rpm" type: string default: "" ComputeHostnameFormat: type: string default: "" resources: userdata: type: OS::Heat::MultipartMime properties: parts: - config: {get_resource: compute_kernel_args} # Verify the logs on /var/log/cloud-init.log on the overcloud node compute_kernel_args: type: OS::Heat::SoftwareConfig properties: config: str_replace: template: | #!/bin/bash set -x FORMAT=$COMPUTE_HOSTNAME_FORMAT if [[ -z $FORMAT ]] ; then FORMAT="compute" ; else # Assumption: only %index% and %stackname% are the variables in Host name format FORMAT=$(echo $FORMAT | sed 's/\%index\%//g' | sed 's/\%stackname\%//g') ; fi if [[ $(hostname) == *$FORMAT* ]] ; then yum install -y /root/$KVMFORNFV_KERNEL_RPM grub2-mkconfig -o /etc/grub2.cfg sleep 5 reboot fi params: $KVMFORNFV_KERNEL_RPM: {get_param: ComputeKernelArgs} $COMPUTE_HOSTNAME_FORMAT: {get_param: ComputeHostnameFormat} outputs: # This means get_resource from the parent template will get the userdata, see: # http://docs.openstack.org/developer/heat/template_guide/composition.html#making-your-template-resource-more-transparent # Note this is new-for-kilo, an alternative is returning a value then using # get_attr in the parent template instead. OS::stack_id: value: {get_resource: userdata}