722d68b036
... instead of unless + test command, to leverage the built-in feature and simplify the logic in our own modules. Change-Id: I0d5e98fcfcada5637dd0c3cc60e503b73241f3fd
83 lines
2.6 KiB
Puppet
83 lines
2.6 KiB
Puppet
# follow the instructions for creating a loopback device
|
|
# for storage from: https://docs.openstack.org/swift/latest/development_saio.html
|
|
#
|
|
#
|
|
# creates a managed loopback interface
|
|
# - creates a file
|
|
# - formats the file to be an xfs device and mounts it as a loopback device at /srv/node/$name
|
|
# - sets up each mount point as a swift endpoint
|
|
# === Parameters:
|
|
#
|
|
# [*base_dir*]
|
|
# (optional) The directory where the flat files will be stored that house
|
|
# the file system to be loop back mounted.
|
|
# Defaults to '/dev', assumes local disk devices
|
|
#
|
|
# [*mnt_base_dir*]
|
|
# (optional) The directory where the flat files that store the file system
|
|
# to be loop back mounted are actually mounted at.
|
|
# Defaults to '/srv/node', base directory where disks are mounted to
|
|
#
|
|
# [*byte_size*]
|
|
# (optional) The byte size that dd uses when it creates the file system.
|
|
# Defaults to '1024', block size for the disk. For very large partitions, this should be larger
|
|
#
|
|
# [*seek*]
|
|
# (optional) The size of the file system that will be created.
|
|
# Defaults to 25000.
|
|
#
|
|
# [*fstype*]
|
|
# (optional) The filesystem type.
|
|
# Defaults to 'xfs'.
|
|
#
|
|
define swift::storage::loopback(
|
|
$base_dir = '/srv/loopback-device',
|
|
$mnt_base_dir = '/srv/node',
|
|
$byte_size = '1024',
|
|
$seek = '25000',
|
|
$fstype = 'xfs'
|
|
) {
|
|
|
|
include swift::deps
|
|
include swift::params
|
|
|
|
if(!defined(File[$base_dir])) {
|
|
file { $base_dir:
|
|
ensure => directory,
|
|
require => Anchor['swift::config::begin'],
|
|
before => Anchor['swift::config::end'],
|
|
}
|
|
}
|
|
|
|
if(!defined(File[$mnt_base_dir])) {
|
|
file { $mnt_base_dir:
|
|
ensure => directory,
|
|
owner => 'root',
|
|
group => 'root',
|
|
require => Anchor['swift::config::begin'],
|
|
before => Anchor['swift::config::end'],
|
|
}
|
|
}
|
|
|
|
exec { "create_partition-${name}":
|
|
command => "dd if=/dev/zero of=${base_dir}/${name} bs=${byte_size} count=0 seek=${seek}",
|
|
path => ['/usr/bin/', '/bin'],
|
|
creates => "${base_dir}/${name}",
|
|
before => Anchor['swift::config::end'],
|
|
}
|
|
|
|
File<| title == $base_dir |> ~> Exec<| title == "create_partition-${name}" |>
|
|
|
|
$storage_params = {
|
|
device => "${base_dir}/${name}",
|
|
mnt_base_dir => $mnt_base_dir,
|
|
byte_size => $byte_size,
|
|
subscribe => Exec["create_partition-${name}"],
|
|
loopback => true,
|
|
}
|
|
# NOTE(mgagne) Puppet does not allow hash keys to be bare variables.
|
|
# Keep double-quotes to avoid parse errors.
|
|
$device_config_hash = { "${name}" => $storage_params }
|
|
create_resources("swift::storage::${fstype}", $device_config_hash)
|
|
}
|