pxe: Allow disabling http server

This change introduces a new option to disable resources to set up http
server for ipxe boot. This is useful, when ipxe boot interface is not
used or users have their own external tooling to maintain the http
server.

Change-Id: Ic767795442ee68ce8dda6bc8b53493ac17f6f40c
This commit is contained in:
Takashi Kajinami 2022-09-06 21:00:43 +09:00
parent a1dc86bd3e
commit 084c0e54a3
3 changed files with 41 additions and 15 deletions

View File

@ -79,6 +79,10 @@
# (optional) Log facility of the dnsmasq process to server tftp server.
# Defaults to undef
#
# [*manage_http_server*]
# (optional) Set up Apache HTTP Server.
# Defaults to true
#
class ironic::pxe (
$package_ensure = 'present',
$tftp_root = '/tftpboot',
@ -93,6 +97,7 @@ class ironic::pxe (
$uefi_pxe_bootfile_name = 'bootx64.efi',
$tftp_use_xinetd = $::ironic::params::xinetd_available,
$dnsmasq_log_facility = undef,
$manage_http_server = true,
) inherits ironic::params {
include ironic::deps
@ -136,15 +141,6 @@ class ironic::pxe (
tag => 'ironic-tftp-file',
}
file { $http_root_real:
ensure => 'directory',
seltype => 'httpd_sys_content_t',
owner => $::ironic::params::user,
group => $::ironic::params::group,
require => Anchor['ironic::config::begin'],
before => Anchor['ironic::config::end'],
}
if $tftp_use_xinetd {
if ! $::ironic::params::xinetd_available {
fail('xinetd is not available in this distro. Please use tftp_use_xinetd=false')
@ -320,6 +316,17 @@ class ironic::pxe (
File["${tftp_root_real}"] -> File<| tag == 'ironic-tftp-file' |>
# HTTP server
if $manage_http_server {
file { $http_root_real:
ensure => 'directory',
seltype => 'httpd_sys_content_t',
owner => $::ironic::params::user,
group => $::ironic::params::group,
require => Anchor['ironic::config::begin'],
before => Anchor['ironic::config::end'],
}
include apache
apache::vhost { 'ipxe_vhost':
@ -328,4 +335,5 @@ class ironic::pxe (
docroot => $http_root_real,
port => $http_port_real,
}
}
}

View File

@ -0,0 +1,6 @@
---
features:
- |
The ``ironic::pxe::manage_http_server`` parameter has been added. When
this parameter is set to ``false``, the ``ironic::pxe`` class does not
manage the Apache HTTP Server.

View File

@ -223,6 +223,18 @@ describe 'ironic::pxe' do
is_expected.not_to contain_file('/var/lib/ironic/tftpboot/chain.c32')
end
end
context 'when http server disabled' do
before :each do
params.merge!(
:manage_http_server => false,
)
end
it 'should not configure http server' do
is_expected.not_to contain_class('apache')
is_expected.not_to contain_apache__vhost('ipxe_vhost')
end
end
end
shared_examples_for 'ironic pxe with xinetd' do