项目作者: deric

项目描述 :
Manage BeeGFS parallel system installations.
高级语言: HTML
项目地址: git://github.com/deric/puppet-beegfs.git
创建时间: 2016-03-13T13:37:33Z
项目社区:https://github.com/deric/puppet-beegfs

开源协议:Apache License 2.0

下载


puppet-beegfs

Puppet Forge Static & Spec Tests Puppet Forge Downloads

Upgrade from deric-beegfs version 0.4.x to 0.5.x

  • beegfs::storage_directory expects an Array instead of just String
  • parameter beegfs::major_version renamed to beegfs::release
  • beegfs::client::client_udp renamed to beegfs::client::client_udp_port

Usage

First of all choose which release to use, by defining:

  1. beegfs::release: '6'

valid values are:

  • '2015.03'
  • '6'
  • '7'
  • '7.1'

You’ll need one mgmtd server:

  1. class { 'beegfs::mgmtd': }

in order to accept new storage and meta servers you have to (at least temporarily) enable allow_new_servers and allow_new_targets.

And probably many storage and meta servers:

  1. class { 'beegfs::meta':
  2. mgmtd_host => 192.168.1.1,
  3. }
  4. class { 'beegfs::storage':
  5. mgmtd_host => 192.168.1.1,
  6. }

It’s easier to define shared settings for all servers at one place (Hiera, e.g. default.yaml):

  1. beegfs::mgmtd_host: '192.168.1.1'

so that you don’t have to specify mgmtd_host for each component.

defining a mount

  1. beegfs::mount{ 'mnt-share':
  2. cfg => '/etc/beegfs/beegfs-client.conf',
  3. mnt => '/mnt/share',
  4. user => 'beegfs',
  5. group => 'beegfs',
  6. }

Interfaces and networks

For meta and storage nodes you can specify interfaces for communication. The passed argument must be an array.

  1. class { 'beegfs::meta':
  2. mgmtd_host => 192.168.1.1,
  3. interfaces => ['eth0', 'ib0'],
  4. }
  5. class { 'beegfs::storage':
  6. mgmtd_host => 192.168.1.1,
  7. interfaces => ['eth0', 'ib0']
  8. }

In some cases, interfaces can have multiple ips, and only a subset of them should be used.
In this case, the list of allowed subnets can be passed as the networks parameter. It should be an array if specified.

  1. class { 'beegfs::meta':
  2. mgmtd_host => 192.168.1.1,
  3. interfaces => ['eth0', 'ib0'],
  4. networks => ['192.168.1.0/24'],
  5. }

Initialization

mgmtd

If beegfs::allow_first_run_init is true you may skip this step.

  1. beegfs-setup-mgmtd -p /mnt/myraid1/beegfs-mgmtd

meta

If beegfs::allow_first_run_init is true you may skip this step.

Example 1

Initialize metadata storage directory of first metadata server and set
“storage01” as management daemon host in config file:

  1. beegfs-setup-meta -p /mnt/myraid1/beegfs-meta -s 1 -m storage01

Hiera support

All configuration could be specified in Hiera config files. Some settings
are shared between all components, like:

  1. beegfs::mgmtd_host: '192.168.1.1'
  2. beegfs::mgmtd::allow_new_servers: true
  3. beegfs::mgmtd::allow_new_targets: true
  4. beegfs::release: 6

version could be also defined exactly, like:

  1. beegfs::version: '2015.03.r9.debian7'

for module specific setting use correct namespace, e.g.:

  1. beegfs::meta::interfaces:
  2. - 'eth0'

Recent releases of Linux Kernel might include “deterministic interfaces naming” (like enp0s31f6) that requires specifying which interface should be BeeGFS instances using:

  1. beegfs::client::interfaces:
  2. - "%{facts.networking.primary}"
  3. beegfs::meta::interfaces:
  4. - "%{facts.networking.primary}"
  5. beegfs::storage::interfaces:
  6. - "%{facts.networking.primary}"

Requirements

  • Ruby 2.0 or newer
  • at least Puppet 4.9

License

Apache License, Version 2.0

Acceptance test

Run specific image using:

  1. BEAKER_set=debian9-5.5 rake acceptance

debug mode:

  1. BEAKER_debug=true rake acceptance

preserve Docker container after finising test:

  1. $ BEAKER_destroy=no rake acceptance
  2. $ docker exec -it 98aa06308c67 bash
  3. $ /opt/puppetlabs/bin/puppet apply /tmp/apply_manifest.pp.OveoVG

Rubocop

Update rubocop config with given target version:

  1. mry --target=0.70.0 .rubocop.yml