Version information
This version is compatible with:
- Puppet Enterprise 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x, 2019.0.x
- Puppet >= 6.0.0 < 8.0.0
- , ,
Start using this module
Add this module to your Puppetfile:
mod 'treydock-gpfs', '2.6.1'
Learn more about managing modules with a PuppetfileDocumentation
puppet-module-gpfs
Table of Contents
- Description
- Setup - The basics of getting started with gpfs
- Usage - Configuration options and additional functionality
- Reference - Module reference
Description
This module will manage GPFS.
Setup
What gpfs affects
At this time the module is capable of installing GPFS packages and managing ISKLM configurations as well as SSH key authorization for client root logins.
Usage
The class to include is based on a host's role:
gpfs::client
- GPFS clientsgpfs::server
- GPFS NSDsgpfs::ces
- GPFS CES nodesgpfs::gui
- GPFS GUI nodes
The class gpfs
is not intended to be included directly but instead configured via Hiera
NOTE: All usage examples will assume you're using Hiera to define data.
Repo configuration
The following is an example of configuring central YUM repository that hosts GPFS RPMs.
gpfs::repo_baseurl: 'https://repo.example.com/gpfs/4/$releasever/'
Clients
The following example will install packages necessary for GPFS client, configure SSH keys and enable ISKLM encryption.
gpfs_keystore_password: >
ENC[...]
gpfs::client::ssh_authorized_keys:
'root@gpfs':
key: 'AAAAB3Nza=='
gpfs::client::rkms:
'ISKLM_srv':
type: 'ISKLM'
kmip_server_uris:
- 'tls://isklm01:5696'
- 'tls://isklm02:5696'
key_store: '/var/mmfs/etc/RKMcerts/ISKLM.gpfs'
key_store_source: 'puppet:///modules/profile/gpfs/ISKLM.gpfs'
passphrase: "%{lookup('gpfs_keystore_password')}"
client_cert_label: 'gpfs'
tenant_name: 'GS_ISKLM'
Filesets and Fileset Quotas
This module provides native types for managing GPFS filesets and GPFS quotas. Each defaults to the shell
provider but there is also a rest_v2
provider.
NOTE: The rest_v2
provider is no longer tested or maintained
NOTE: The gpfs_fileset_quota
type is capable of managing user and group quotas but only fileset quotas have been tested in production.
Create a fileset and fileset quota:
gpfs_fileset { 'test':
ensure => 'present',
filesystem => 'project',
path => '/gpfs/project/test',
owner => 'user1:group1',
permissions => '0770',
max_num_inodes => 1000000,
alloc_inodes => 1000000,
}
gpfs_fileset_quota { 'test':
filesystem => 'project',
block_soft_limit => '5T',
block_hard_limit => '5T',
files_soft_limit => 1000000,
files_hard_limit => 1000000,
}
Reference
Reference
Table of Contents
Classes
Public Classes
gpfs
: base GPFS classgpfs::ces
: GPFS CES classgpfs::client
: GPFS client classgpfs::gui
: GPFS GUI classgpfs::server
: GPFS server class
Private Classes
gpfs::ces::config
: Manage GPFS CES configgpfs::ces::install
: Manage GPFS CES installgpfs::client::config
: Manage GPFS client configgpfs::client::install
: Manage GPFS client installgpfs::gui::config
: Manage GPFS GUI configgpfs::gui::install
: Manage GPFS GUI installgpfs::gui::service
: Manage GPFS GUI servicesgpfs::install
: Manage GPFS installsgpfs::repo
: Manage GPFS repogpfs::server::config
: Manage GPFS NSD configgpfs::server::install
: Manage GPFS NSD install
Defined types
gpfs::client::rkm
: Manage GPFS client ISKLM configuration
Resource types
gpfs_audit
: Manage a GPFS filesystem auditgpfs_config
: GPFS configgpfs_fileset
: Manage a GPFS filesetgpfs_fileset_quota
: Set a GPFS fileset quotascalemgmt_config
: scalemgmt configscalemgmt_conn_validator
: Verify that a connection can be successfully established between a node and the scalemgmt server. Its primary use is as a precondition to pr
Classes
gpfs
base GPFS class
Examples
include ::gpfs
Parameters
The following parameters are available in the gpfs
class:
manage_repo
Data type: Boolean
Sets if GPFS repo should be managed
Default value: true
repo_baseurl
Data type: Optional[String]
The GPFS repo baseurl
Default value: undef
manage_packages
Data type: Boolean
Determines if GPFS packages should be managed
Default value: true
package_ensure
Data type: String
GPFS package ensure property
Default value: 'present'
packages
Data type: Array
GPFS base packages
Default value:
[
"gpfs.gplbin-${facts['kernelrelease']}",
'gpfs.adv',
'gpfs.base',
'gpfs.crypto',
'gpfs.docs',
'gpfs.ext',
'gpfs.gpl',
'gpfs.gskit',
'gpfs.msg.en_US',
]
config_filesystems
Data type: Optional[Array]
Filesystems where filesets are managed by Puppet
Default value: undef
gpfs::ces
GPFS CES class
Examples
include ::gpfs::ces
Parameters
The following parameters are available in the gpfs::ces
class:
manage_packages
Data type: Boolean
Determines if GPFS CES packages should be managed
Default value: true
package_ensure
Data type: String
GPFS CES package ensure property
Default value: 'present'
packages
Data type: Array
GPFS CES packages
Default value:
[
'gpfs.java',
'gpfs.smb',
'nfs-ganesha',
'nfs-ganesha-gpfs',
'nfs-ganesha-utils',
]
gpfs::client
GPFS client class
Examples
include ::gpfs::client
Parameters
The following parameters are available in the gpfs::client
class:
manage_packages
package_ensure
packages
manage_service_files
manage_ssh_authorized_keys
ssh_user
ssh_authorized_keys
rkms
bin_paths
manage_packages
Data type: Boolean
Determines if GPFS client packages should be managed
Default value: true
package_ensure
Data type: String[1]
GPFS client package ensure property
Default value: 'present'
packages
Data type: Array[String[1]]
GPFS client packages
Default value: []
manage_service_files
Data type: Boolean
Determines if GPFS service files are managed
Default value: true
manage_ssh_authorized_keys
Data type: Boolean
Determines if SSH authorized_keys should be managed
Default value: true
ssh_user
Data type: String[1]
SSH user for GPFS
Default value: 'root'
ssh_authorized_keys
Data type: Hash
SSH authorized keys for NSDs
Default value: {}
rkms
Data type: Hash
Hash to define gpfs::client::rkm resources
Default value: {}
bin_paths
Data type: Array[Stdlib::Absolutepath]
Paths to add to PATH
Default value: []
gpfs::gui
GPFS GUI class
Examples
include ::gpfs::gui
Parameters
The following parameters are available in the gpfs::gui
class:
manage_packages
package_ensure
packages
manage_firewall
firewall_source
firewall_https_only
manage_services
manage_initgui
manage_packages
Data type: Boolean
Determines if GPFS GUI packages should be managed
Default value: true
package_ensure
Data type: String
GPFS GUI package ensure property
Default value: 'present'
packages
Data type: Array
GPFS GUI packages
Default value:
[
'gpfs.gui',
]
manage_firewall
Data type: Boolean
Determines if firewall should be managed
Default value: true
firewall_source
Data type: Optional[Variant[String, Array, Boolean]]
Firewall source value
Default value: undef
firewall_https_only
Data type: Boolean
Only manage firewall rules for HTTPS
Default value: false
manage_services
Data type: Boolean
Determines if services are managed
Default value: true
manage_initgui
Data type: Boolean
Determines if manage Exec to initialize GUI
Default value: true
gpfs::server
GPFS server class
Examples
include ::gpfs::server
Parameters
The following parameters are available in the gpfs::server
class:
manage_packages
Data type: Boolean
Determines if GPFS server packages should be managed
Default value: true
package_ensure
Data type: String
GPFS server package ensure property
Default value: 'present'
packages
Data type: Array
GPFS server packages
Default value: []
bin_paths
Data type: Array[Stdlib::Absolutepath]
Paths to add to PATH
Default value: ['/usr/lpp/mmfs/bin']
Defined types
gpfs::client::rkm
Manage GPFS client ISKLM configuration
Parameters
The following parameters are available in the gpfs::client::rkm
defined type:
rkm_id
type
kmip_server_uris
key_store
key_store_source
passphrase
client_cert_label
tenant_name
connection_timeout
connection_attempts
retry_sleep
order
rkm_id
Data type: String[1]
Default value: $name
type
Data type: String[1]
Default value: 'ISKLM'
kmip_server_uris
Data type: Array
Default value: []
key_store
Data type: Stdlib::Absolutepath
Default value: '/var/mmfs/etc/RKMcerts/ISKLM.proj2'
key_store_source
Data type: Optional[String[1]]
Default value: undef
passphrase
Data type: Optional[String[1]]
Default value: undef
client_cert_label
Data type: Optional[String[1]]
Default value: undef
tenant_name
Data type: Optional[String[1]]
Default value: undef
connection_timeout
Data type: String[1]
Default value: '5'
connection_attempts
Data type: String[1]
Default value: '3'
retry_sleep
Data type: String[1]
Default value: '50000'
order
Data type: String[1]
Default value: '10'
Resource types
gpfs_audit
Manage a GPFS filesystem audit
Examples
Enable audit on test
filesystem
gpfs_audit { 'test':
filesystem => 'test',
retention => 25,
filesets => ['foo'],
}
Properties
The following properties are available in the gpfs_audit
type.
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
events
Audit events
Default value: ['ALL']
filesets
Filesets to audit
skip_filesets
Filesets to skip audit
Parameters
The following parameters are available in the gpfs_audit
type.
auto_disable
Valid values: true
, false
Automatically disable filesets missing from filesets
array
Default value: false
compliant
Valid values: true
, false
Set audit fileset as compliant
Default value: false
filesystem
The GPFS filesystem name.
log_fileset
The GPFS audit log fileset.
Default value: .audit_log
name
namevar
The default namevar.
provider
The specific backend to use for this gpfs_audit
resource. You will seldom need to specify this --- Puppet will usually
discover the appropriate provider for your platform.
retention
The retention in days
Default value: 365
gpfs_config
GPFS config
Parameters
The following parameters are available in the gpfs_config
type.
filesystems
Filesystems to manage
name
namevar
GPFS config
gpfs_fileset
Manage a GPFS fileset
Examples
Create test
GPFS fileset
gpfs_fileset { 'test':
filesystem => 'project',
path => '/gpfs/project/test',
owner => 'nobody:wheel',
permissions => '1770',
inode_space => 'new',
max_num_inodes => 1000000,
alloc_inodes => 1000000,
}
Properties
The following properties are available in the gpfs_fileset
type.
alloc_inodes
Allocated inodes for fileset.
ensure
Valid values: present
, absent
, unlinked
The state of the fileset
Default value: present
max_num_inodes
Max number of inodes for fileset.
owner
Owner of GPFS fileset: user:group
path
The GPFS fileset path.
permissions
Permissions of fileset.
Parameters
The following parameters are available in the gpfs_fileset
type.
afm_attributes
AFM attributes
enforce_permissions
Valid values: true
, false
Enforce POSIX permissions after creation
Default value: false
fileset
The GPFS fileset name.
filesystem
The GPFS filesystem name.
inode_space
inodeSpace of fileset.
Default value: new
inode_tolerance
Number of inodes to allow GPFS to adjust max or allocated inodes without triggering a Puppet change
Default value: 32
name
namevar
The default namevar.
provider
The specific backend to use for this gpfs_fileset
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
gpfs_fileset_quota
Autorequires:
gpfs_fileset
- Puppet will autorequire thegpfs_fileset
resource defined infileset
property.
Examples
Add fileset quota to test
fileset.
gpfs_fileset_quota { 'test':
filesystem => 'project',
block_soft_limit => '5T',
block_hard_limit => '5T',
files_soft_limit => 1000000,
files_hard_limit => 1000000,
}
Properties
The following properties are available in the gpfs_fileset_quota
type.
block_hard_limit
blockHardLimit of quota
block_soft_limit
blockSoftLimit of quota
ensure
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
files_hard_limit
filesHardLimit of quota
files_soft_limit
filesSoftLimit of quota
Parameters
The following parameters are available in the gpfs_fileset_quota
type.
fileset
The GPFS fileset name.
filesystem
The GPFS filesystem name.
name
namevar
The default namevar
object_name
The GPFS quota object name
provider
The specific backend to use for this gpfs_fileset_quota
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
type
Quota type
Default value: fileset
scalemgmt_config
scalemgmt config
Parameters
The following parameters are available in the scalemgmt_config
type.
api_password
API password
Default value: admin001
api_user
API user
Default value: admin
base_url
Base URL of GPFS API
Default value: https://localhost:443/scalemgmt/
name
namevar
scalemgmt config
scalemgmt_conn_validator
Verify that a connection can be successfully established between a node and the scalemgmt server. Its primary use is as a precondition to prevent configuration changes from being applied if the scalemgmt server cannot be reached, but it could potentially be used for other purposes such as monitoring.
Properties
The following properties are available in the scalemgmt_conn_validator
type.
ensure
Valid values: present
, absent
Ensure
Default value: present
Parameters
The following parameters are available in the scalemgmt_conn_validator
type.
api_password
API password
Default value: admin001
api_user
API user name
Default value: admin
name
namevar
An arbitrary name used as the identity of the resource.
provider
The specific backend to use for this scalemgmt_conn_validator
resource. You will seldom need to specify this ---
Puppet will usually discover the appropriate provider for your platform.
scalemgmt_port
The port that the scalemgmt server should be listening on.
Default value: 443
scalemgmt_server
The DNS name or IP address of the server where scalemgmt should be running.
Default value: localhost
test_url
URL to use for testing if the scalemgmt API is up
Default value: /scalemgmt/v2/info
timeout
The max number of seconds that the validator should wait before giving up and deciding that scalemgmt is not running; defaults to 30 seconds.
Default value: 30
Change log
All notable changes to this project will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
v2.6.1 (2024-06-05)
Fixed
v2.6.0 (2024-06-05)
Added
v2.5.0 (2024-05-20)
Added
v2.4.0 (2024-05-07)
Added
v2.3.3 (2023-03-30)
Fixed
v2.3.2 (2023-03-30)
Fixed
v2.3.1 (2022-11-22)
Fixed
v2.3.0 (2022-09-15)
Added
v2.2.0 (2022-09-12)
Added
v2.1.1 (2022-07-06)
Fixed
v2.1.0 (2021-10-04)
Added
v2.0.0 (2021-09-01)
Changed
- Remove new_statefile property from gpfs_fileset #21 (treydock)
- BREAKING: Change how permissions are defined and enforced #20 (treydock)
Fixed
v1.0.0 (2021-07-02)
Changed
v0.8.0 (2020-10-03)
Added
Fixed
v0.7.0 (2020-04-17)
Added
v0.6.0 (2020-04-17)
Added
- Add firewall_https_only to gpfs::gui class and allow firewall_source to be false #15 (treydock)
- Add gpfs::gui::manage_services and gpfs::gui::manage_initgui #14 (treydock)
v0.5.0 (2020-03-22)
Added
v0.4.1 (2020-03-20)
Fixed
v0.4.0 (2020-03-20)
Changed
v0.3.1 (2020-01-24)
Fixed
v0.3.0 (2020-01-23)
Added
v0.2.2 (2019-12-16)
Fixed
v0.2.1 (2019-12-16)
Fixed
v0.2.0 (2019-12-12)
Added
v0.1.4 (2019-10-11)
Fixed
v0.1.3 (2019-08-20)
Fixed
v0.1.2 (2019-08-14)
Fixed
v0.1.1 (2019-08-14)
Fixed
v0.1.0 (2019-08-14)
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs/stdlib (>= 4.13.0 <9.0.0)
- puppetlabs/concat (>= 4.0.0 <8.0.0)
- puppetlabs/firewall (>= 1.0.0 <4.0.0)
- puppetlabs/yumrepo_core (>= 1.0.0 <2.0.0)
- puppet/logrotate (>= 3.0.0 <7.0.0)
- saz/sudo (>= 4.2.0 <8.0.0)
- herculesteam/augeasproviders_shellvar (>= 3.0.0 <5.0.0)