On 20/02/19 5:15 PM, Lars Kellogg-Stedman wrote:
I'm using the tripleo standalone install to set up an Ironic test environment. With recent tripleo master, the deploy started failing because the DockerOvn*Image parameters weren't defined. Here's what I did to get everything working:
1. I added to my deploy:
-e /usr/share/tripleo-heat-templates/environment/services/neutron-ovn-standalone.yaml
With this change, `openstack tripleo container image prep` correctly detected that ovn was enabled and generated the appropriate image parameters.
2. environments/services/ironic.yaml sets:
NeutronMechanismDrivers: ['openvswitch', 'baremetal']
Since I didn't want openvswitch enabled in this deployment, I explicitly set the mechanism drivers in a subsequent environment file:
NeutronMechanismDrivers: ['ovn', 'baremetal']
Can you provide your full deployment command. I think it is most likely that the order of environment files is resulting in an incorrect value in NeutronMechanismDrivers. You may be able to confirm this by looking at the resulting plan file with something like: openstack object save --file - overcloud plan-environment.yaml
3. The neutron-ovn-standalone.yaml environment explicitly disables the non-ovn neutron services. Ironic requires the services of the neutron_dhcp_agent, so I had to add:
OS::TripleO::Services::NeutronDhcpAgent: /usr/share/openstack-tripleo-heat-templates/deployment/neutron/neutron-dhcp-container-puppet.yaml
With this in place, the ironic nodes were able to receive dhcp responses and were able to boot.
3. In order to provide the baremetal nodes with a route to the nova metadata service, I added the following to my deploy:
NeutronEnableForceMetadata: true
This provides the baremetal nodes with a route to 169.254.169.254 via the neutron dhcp namespace.
4. In order get the metadata service to respond correctly, I also had to enable the neutron metadata agent:
OS::TripleO::Services::NeutronMetadataAgent: /usr/share/openstack-tripleo-heat-templates/deployment/neutron/neutron-metadata-container-puppet.yaml
This returned my Ironic deployment to a functioning state: I can successfully boot baremetal nodes and provide them with configuration information via the metadata service.
I'm curious if this was the *correct* solution, or if there was a better method of getting things working.