Giter Club home page Giter Club logo

puppet-beegfs's Introduction

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:

beegfs::release: '6'

valid values are:

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

You'll need one mgmtd server:

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:

class { 'beegfs::meta':
  mgmtd_host => 192.168.1.1,
}
class { 'beegfs::storage':
  mgmtd_host => 192.168.1.1,
}

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

beegfs::mgmtd_host: '192.168.1.1'

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

defining a mount

beegfs::mount{ 'mnt-share':
  cfg => '/etc/beegfs/beegfs-client.conf',
  mnt   => '/mnt/share',
  user  => 'beegfs',
  group => 'beegfs',
}

Interfaces and networks

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

class { 'beegfs::meta':
  mgmtd_host => 192.168.1.1,
  interfaces => ['eth0', 'ib0'],
}
class { 'beegfs::storage':
  mgmtd_host => 192.168.1.1,
  interfaces => ['eth0', 'ib0']
}

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.

class { 'beegfs::meta':
  mgmtd_host => 192.168.1.1,
  interfaces => ['eth0', 'ib0'],
  networks => ['192.168.1.0/24'],
}

Initialization

mgmtd

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

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:

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:

beegfs::mgmtd_host: '192.168.1.1'
beegfs::mgmtd::allow_new_servers: true
beegfs::mgmtd::allow_new_targets: true
beegfs::release: 6

version could be also defined exactly, like:

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

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

beegfs::meta::interfaces:
  - 'eth0'

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

beegfs::client::interfaces:
  - "%{facts.networking.primary}"
beegfs::meta::interfaces:
  - "%{facts.networking.primary}"
beegfs::storage::interfaces:
  - "%{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:

BEAKER_set=debian9-5.5 rake acceptance

debug mode:

BEAKER_debug=true rake acceptance

preserve Docker container after finising test:

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

Rubocop

Update rubocop config with given target version:

 mry --target=0.70.0 .rubocop.yml

puppet-beegfs's People

Contributors

deric avatar jovandeginste avatar olifre avatar peterverraedt avatar runejuhl avatar trenta avatar wiene avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

puppet-beegfs's Issues

BeegFS helperd not starting due to missing connAuthFile value

RHEL8
puppet-beegfs 0.7.1
BeegFS 7.3.1

The connAuthFile value is manditory to be set: https://doc.beegfs.io/latest/advanced_topics/authentication.html
However in the default settings the erb has no support for setting the value and leaves it empty. This causes the helperd to throw an "unrecoverable error" and exit:

$ beegfs-ctl

Unrecoverable error: No connAuthFile configured. Using BeeGFS without connection authentication is considered insecure and is not recommended. If you really want or need to run BeeGFS without connection authentication, please set connDisableAuthentication to true.

There's no option to set the connDisableAuthentication as well.

A simple solution would be to extend the .erb with a variable for the connAuthFile

Incorrect apt source on Ubuntu 18.04

With beegfs::release: '7.1' the apt source is incorrectly set to:

# This file is managed by Puppet. DO NOT EDIT.
# beegfs
deb [arch=amd64] http://www.beegfs.io/release/beegfs_7_1 bionic non-free

It should be remapped to:
deb [arch=amd64] http://www.beegfs.io/release/beegfs_7_1 deb9 non-free

Update to new ubuntu versions

Hi @deric,

thank you for this great module.
Can we add the new Ubuntu (& Debian) versions?

Ubuntu            Debian  
21.04  hirsute    bullseye/ sid   - 11
20.10  groovy     bullseye/ sid
20.04  focal      bullseye/ sid

Thank you :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.