Files
09ff119cd16f6a5c5ef2e3aa18eff6947ac70622
puppet-openstack-integration /manifests /ironic.pp
Takashi Kajinami 13ecc294fa Remove testing of ironic-inspector
... because the project was retired.
Depends-on: https://review.opendev.org/963460
Change-Id: I6a4a6af2e39b87283fe1d812bc3d75e73bbe29cc
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025年10月25日 01:33:22 +09:00

145 lines
5.3 KiB
Puppet

# Configure the Ironic service
#
# [*notification_topics*]
# (optional) AMQP topic used for OpenStack notifications
# Defaults to undef.
#
# [*send_power_notifications*]
# (optional) Send power notifications to Nova.
# Defaults to false
#
class openstack_integration::ironic (
$notification_topics = undef,
$send_power_notifications = false,
) {
include openstack_integration::config
include openstack_integration::params
if $openstack_integration::config::ssl {
openstack_integration::ssl_key { 'ironic':
notify => Service['httpd'],
require => Anchor['ironic::install::end'],
}
Exec['update-ca-certificates'] ~> Service['httpd']
}
# ironic
openstack_integration::mq_user { 'ironic':
password => 'an_even_bigger_secret',
before => Anchor['ironic::service::begin'],
}
class { 'ironic::logging':
debug => true,
}
class { 'ironic::db':
database_connection => os_database_connection({
'dialect' => 'mysql+pymysql',
'host' => $openstack_integration::config::ip_for_url,
'username' => 'ironic',
'password' => 'ironic',
'database' => 'ironic',
'charset' => 'utf8',
'extra' => $openstack_integration::config::db_extra,
}),
}
class { 'ironic::glance':
auth_url => $openstack_integration::config::keystone_admin_uri,
password => 'a_big_secret',
}
class { 'ironic::neutron':
auth_url => $openstack_integration::config::keystone_admin_uri,
password => 'a_big_secret',
}
class { 'ironic::service_catalog':
auth_url => $openstack_integration::config::keystone_admin_uri,
password => 'a_big_secret',
}
class { 'ironic::swift':
auth_url => $openstack_integration::config::keystone_admin_uri,
password => 'a_big_secret',
}
class { 'ironic::nova':
auth_url => $openstack_integration::config::keystone_admin_uri,
password => 'a_big_secret',
send_power_notifications => $send_power_notifications,
}
class { 'ironic::cinder':
auth_url => $openstack_integration::config::keystone_admin_uri,
password => 'a_big_secret',
}
class { 'ironic':
default_transport_url => os_transport_url({
'transport' => $openstack_integration::config::messaging_default_proto,
'host' => $openstack_integration::config::host,
'port' => $openstack_integration::config::messaging_default_port,
'username' => 'ironic',
'password' => 'an_even_bigger_secret',
}),
notification_transport_url => os_transport_url({
'transport' => $openstack_integration::config::messaging_notify_proto,
'host' => $openstack_integration::config::host,
'port' => $openstack_integration::config::messaging_notify_port,
'username' => 'ironic',
'password' => 'an_even_bigger_secret',
}),
rabbit_use_ssl => $openstack_integration::config::ssl,
notification_topics => $notification_topics,
notification_driver => 'messagingv2',
}
class { 'ironic::db::mysql':
charset => $openstack_integration::params::mysql_charset,
collate => $openstack_integration::params::mysql_collate,
password => 'ironic',
host => $openstack_integration::config::host,
}
class { 'ironic::keystone::auth':
public_url => "${openstack_integration::config::base_url}:6385",
internal_url => "${openstack_integration::config::base_url}:6385",
admin_url => "${openstack_integration::config::base_url}:6385",
roles => ['admin', 'service'],
password => 'a_big_secret',
}
class { 'ironic::api::authtoken':
password => 'a_big_secret',
user_domain_name => 'Default',
project_domain_name => 'Default',
auth_url => $openstack_integration::config::keystone_admin_uri,
www_authenticate_uri => $openstack_integration::config::keystone_auth_uri,
memcached_servers => $openstack_integration::config::memcached_servers,
service_token_roles_required => true,
}
class { 'ironic::client': }
class { 'ironic::api':
service_name => 'httpd',
}
class { 'ironic::wsgi::apache':
bind_host => $openstack_integration::config::host,
ssl => $openstack_integration::config::ssl,
ssl_key => "/etc/ironic/ssl/private/${facts['networking']['fqdn']}.pem",
ssl_cert => $openstack_integration::params::cert_path,
workers => 2,
}
class { 'ironic::conductor':
enabled_hardware_types => ['fake-hardware', 'ipmi'],
}
class { 'ironic::drivers::interfaces':
enabled_management_interfaces => ['fake', 'ipmitool'],
enabled_boot_interfaces => ['fake', 'pxe'],
enabled_deploy_interfaces => ['fake', 'direct'],
enabled_power_interfaces => ['fake', 'ipmitool'],
enabled_vendor_interfaces => ['fake', 'ipmitool', 'no-vendor'],
}
class { 'ironic::drivers::ipmi': }
class { 'ironic::vnc':
host_ip => $openstack_integration::config::host,
public_url => "${openstack_integration::config::base_url}:6090/vnc_auto.html",
enable_ssl => $openstack_integration::config::ssl,
ssl_cert_file => $openstack_integration::params::cert_path,
ssl_key_file => "/etc/ironic/ssl/private/${facts['networking']['fqdn']}.pem",
}
# shared
class { 'ironic::pxe': }
}