From 5e3986b88f0b6426d31f03fa262d486cd130c4d3 Mon Sep 17 00:00:00 2001 From: Will Szumski Date: Thu, 2 Aug 2018 15:41:34 +0100 Subject: [PATCH] Template inspector.ipxe This adds `kolla_inspector_extra_kernel_options` to the inspector.ipxe boot script. This is necessary to get the inspector to collect the necessary LLDP data, extra hardware data, etc. that is required for various introspection rules to function correctly. Change-Id: Ie7d6e1f12fb438e3b7e2c2a9de3ad8853947bee0 --- ansible/roles/kolla-openstack/defaults/main.yml | 3 +++ ansible/roles/kolla-openstack/tasks/config.yml | 1 + .../roles/kolla-openstack/templates/inspector.ipxe.j2 | 10 ++++++++++ ansible/roles/kolla-openstack/vars/main.yml | 1 + ...ix-inspection-when-using-ipxe-9bf6ed9e6456840b.yaml | 9 +++++++++ 5 files changed, 24 insertions(+) create mode 100644 ansible/roles/kolla-openstack/templates/inspector.ipxe.j2 create mode 100644 releasenotes/notes/fix-inspection-when-using-ipxe-9bf6ed9e6456840b.yaml diff --git a/ansible/roles/kolla-openstack/defaults/main.yml b/ansible/roles/kolla-openstack/defaults/main.yml index 677d3ed96..284b189b2 100644 --- a/ansible/roles/kolla-openstack/defaults/main.yml +++ b/ansible/roles/kolla-openstack/defaults/main.yml @@ -189,6 +189,9 @@ kolla_ironic_pxe_append_params: [] # Free form extra configuration to append to ironic.conf. kolla_extra_ironic: +# Enable iPXE support in Ironic +kolla_enable_ironic_ipxe: + ############################################################################### # Ironic inspector configuration. diff --git a/ansible/roles/kolla-openstack/tasks/config.yml b/ansible/roles/kolla-openstack/tasks/config.yml index f53c02498..ec47ecc56 100644 --- a/ansible/roles/kolla-openstack/tasks/config.yml +++ b/ansible/roles/kolla-openstack/tasks/config.yml @@ -31,6 +31,7 @@ - { src: neutron.conf.j2, dest: neutron.conf, enabled: "{{ kolla_enable_neutron }}" } - { src: nova.conf.j2, dest: nova.conf, enabled: "{{ kolla_enable_nova }}" } - { src: pxelinux.default.j2, dest: ironic/pxelinux.default, enabled: "{{ kolla_enable_ironic }}" } + - { src: inspector.ipxe.j2, dest: ironic/inspector.ipxe, enabled: "{{ kolla_enable_ironic_ipxe }}" } - { src: sahara.conf.j2, dest: sahara.conf, enabled: "{{ kolla_enable_sahara }}" } - { src: zookeeper.cfg.j2, dest: zookeeper.cfg, enabled: "{{ kolla_enable_zookeeper }}" } when: item.enabled | bool diff --git a/ansible/roles/kolla-openstack/templates/inspector.ipxe.j2 b/ansible/roles/kolla-openstack/templates/inspector.ipxe.j2 new file mode 100644 index 000000000..adfb21064 --- /dev/null +++ b/ansible/roles/kolla-openstack/templates/inspector.ipxe.j2 @@ -0,0 +1,10 @@ +#!ipxe + +:retry_dhcp +dhcp || goto retry_dhcp + +:retry_boot +imgfree +kernel --timeout 30000 {% raw %}{{ ironic_ipxe_url }}/ironic-agent.kernel{% endraw %} ipa-inspection-callback-url={% raw %}http://{{ kolla_internal_vip_address }}:{{ ironic_inspector_port }}/v1/continue{% endraw %} systemd.journald.forward_to_console=yes {{ kolla_inspector_extra_kernel_options | join(' ') }} {% raw %}BOOTIF=${mac}{% endraw %} || goto retry_boot +initrd --timeout 30000 {% raw %}{{ ironic_ipxe_url }}/ironic-agent.initramfs{% endraw %} || goto retry_boot +boot diff --git a/ansible/roles/kolla-openstack/vars/main.yml b/ansible/roles/kolla-openstack/vars/main.yml index c9bc44795..b9e1861b2 100644 --- a/ansible/roles/kolla-openstack/vars/main.yml +++ b/ansible/roles/kolla-openstack/vars/main.yml @@ -70,6 +70,7 @@ kolla_openstack_custom_config: - ironic-agent.kernel - ironic-dnsmasq.conf - pxelinux.default + - inspector.ipxe # Kafka. - src: "{{ kolla_extra_config_path }}/kafka" dest: "{{ kolla_node_custom_config_path }}/kafka" diff --git a/releasenotes/notes/fix-inspection-when-using-ipxe-9bf6ed9e6456840b.yaml b/releasenotes/notes/fix-inspection-when-using-ipxe-9bf6ed9e6456840b.yaml new file mode 100644 index 000000000..d27634fd3 --- /dev/null +++ b/releasenotes/notes/fix-inspection-when-using-ipxe-9bf6ed9e6456840b.yaml @@ -0,0 +1,9 @@ +--- +fixes: + - | + Fixes an issue with introspection data not being collected + when iPXE was enabled. This meant that certain + introspection rules were not being applied. Notably, the + local_link_connection field would not be updated on the + ironic ports. +