Add support for iscsid configuration
The iscsid service is used in sevral components like nova, cinder, glance and so on to connect to iscsi devices. This change introduces the new class to manage basic configuration of the iscsid service. Co-authored-by: Alfredo Moralejo <amoralej@redhat.com> Change-Id: I3fc6d1192632cc1458d00900508d548f522e9cdb
This commit is contained in:
parent
d2782eef68
commit
6e67434c27
58
manifests/iscsid.pp
Normal file
58
manifests/iscsid.pp
Normal file
@ -0,0 +1,58 @@
|
||||
# == Class: openstacklib::iscsid
|
||||
#
|
||||
# Installs and configures the iscsid daemon
|
||||
#
|
||||
# == Parameters
|
||||
#
|
||||
# [*enabled*]
|
||||
# (optional) Should the service be enabled.
|
||||
# Defaults to true.
|
||||
#
|
||||
# [*manage_service*]
|
||||
# (optional) Whether the service should be managed by Puppet.
|
||||
# Defaults to true.
|
||||
#
|
||||
# [*package_ensure*]
|
||||
# (optional) ensure state for package.
|
||||
# Defaults to 'present'
|
||||
#
|
||||
class openstacklib::iscsid(
|
||||
$enabled = true,
|
||||
$manage_service = true,
|
||||
$package_ensure = 'present'
|
||||
) {
|
||||
|
||||
include openstacklib::params
|
||||
|
||||
package { 'open-iscsi':
|
||||
ensure => $package_ensure,
|
||||
name => $::openstacklib::params::open_iscsi_package_name,
|
||||
tag => 'openstack',
|
||||
}
|
||||
|
||||
# In CentOS9/RHEL9 initiatorname.iscsi is not created automatically
|
||||
# so should be created
|
||||
exec { 'create-initiatorname-file':
|
||||
command => 'echo "InitiatorName=`/usr/sbin/iscsi-iname`" > /etc/iscsi/initiatorname.iscsi',
|
||||
path => ['/usr/bin','/usr/sbin','/bin','/usr/bin'],
|
||||
unless => 'test -e /etc/iscsi/initiatorname.iscsi',
|
||||
require => Package['open-iscsi'],
|
||||
}
|
||||
|
||||
if $manage_service {
|
||||
if $enabled {
|
||||
$service_ensure = 'running'
|
||||
} else {
|
||||
$service_ensure = 'stopped'
|
||||
}
|
||||
|
||||
# iscsid service is started automatically when iscsiadm command is
|
||||
# executed but there is no harm even if the service is already started.
|
||||
service { 'iscsid':
|
||||
ensure => $service_ensure,
|
||||
enable => $enabled,
|
||||
}
|
||||
Package['open-iscsi'] ~> Service['iscsid']
|
||||
Exec['create-initiatorname-file'] ~> Service['iscsid']
|
||||
}
|
||||
}
|
@ -9,4 +9,17 @@ class openstacklib::params {
|
||||
$pyvers = $::openstacklib::defaults::pyvers
|
||||
|
||||
$openstackclient_package_name = "python${pyvers}-openstackclient"
|
||||
|
||||
case $::osfamily {
|
||||
'RedHat': {
|
||||
$open_iscsi_package_name = 'iscsi-initiator-utils'
|
||||
}
|
||||
'Debian': {
|
||||
$open_iscsi_package_name = 'open-iscsi'
|
||||
}
|
||||
default:{
|
||||
fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, \
|
||||
module ${module_name} only support osfamily RedHat and Debian")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
5
releasenotes/notes/iscsid-0a9fe8a9dba4047b.yaml
Normal file
5
releasenotes/notes/iscsid-0a9fe8a9dba4047b.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The new ``openstacklib::iscsid`` class has been added. This class can be
|
||||
used to set up basic configurations for the iscsid service.
|
47
spec/classes/openstacklib_iscsid_spec.rb
Normal file
47
spec/classes/openstacklib_iscsid_spec.rb
Normal file
@ -0,0 +1,47 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'openstacklib::iscsid' do
|
||||
shared_examples_for 'openstacklib::iscsid' do
|
||||
context 'with default params' do
|
||||
it { is_expected.to contain_package('open-iscsi').with(
|
||||
:name => platform_params[:open_iscsi_package_name],
|
||||
:ensure => 'present',
|
||||
:tag => 'openstack',
|
||||
)}
|
||||
|
||||
it { is_expected.to contain_exec('create-initiatorname-file').with({
|
||||
:command => 'echo "InitiatorName=`/usr/sbin/iscsi-iname`" > /etc/iscsi/initiatorname.iscsi',
|
||||
:path => ['/usr/bin','/usr/sbin','/bin','/usr/bin'],
|
||||
:unless => 'test -e /etc/iscsi/initiatorname.iscsi',
|
||||
}).that_requires('Package[open-iscsi]')}
|
||||
|
||||
it { is_expected.to contain_service('iscsid').with(
|
||||
:ensure => 'running',
|
||||
:enable => true,
|
||||
) }
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
on_supported_os({
|
||||
:supported_os => OSDefaults.get_supported_os
|
||||
}).each do |os,facts|
|
||||
context "on #{os}" do
|
||||
let (:facts) do
|
||||
facts.merge!(OSDefaults.get_facts())
|
||||
end
|
||||
|
||||
let(:platform_params) do
|
||||
case facts[:osfamily]
|
||||
when 'Debian'
|
||||
{ :open_iscsi_package_name => 'open-iscsi' }
|
||||
when 'RedHat'
|
||||
{ :open_iscsi_package_name => 'iscsi-initiator-utils' }
|
||||
end
|
||||
end
|
||||
|
||||
it_behaves_like 'openstacklib::iscsid'
|
||||
end
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in New Issue
Block a user