Skip to content

Latest commit

 

History

History
441 lines (327 loc) · 12.3 KB

File metadata and controls

441 lines (327 loc) · 12.3 KB

Reference

Table of Contents

Classes

Public Classes

  • dcache: Maintain a dCache installation.

Private Classes

  • dcache::config: Manage the dcache.env and dcache.conf files.
  • dcache::install: Install dCache rpms and fix owner and gid of resources.
  • dcache::layout: Create the layout file with header.
  • dcache::wlcg_tape_rest_api: Deploy wlcg-tape-rest-api.json with WebDAV and/or Frontend services.

Defined types

Public Defined types

Private Defined types

  • dcache::domain: Add a dCache domain to the layout file.
  • dcache::services::admin: Add the admin service to the layout and deploy ssh authorized keys for it.
  • dcache::services::frontend: Add the frontend service to the layout and manage .well-known resources.
  • dcache::services::generic: Define a generic dCache service in the layout file.
  • dcache::services::gplazma: Define all data for the gPlazma service.
  • dcache::services::infoprovider: Deploy files for the "info-based info-provider".
  • dcache::services::nfs: Add the nfs service to the layout file and manage the exports file.
  • dcache::services::pool: Just syntactic sugar for defining a pool for dCache.
  • dcache::services::poolmanager: Add the poolmanager service to the layout and manage poolmanager.conf.
  • dcache::services::spacemanager: Add the SRM Space Manager service to the layout and manage LinkGroupAuthorization.conf.
  • dcache::services::webdav: Add the webdav service to the layout and manage .well-known resources.

Functions

  • dcache::hash_to_psu: Transform the psu input data into fully qualified information about all entities relevant to the Pool Selection Unit.

Data types

Classes

dcache

Maintain a dCache installation.

  • Note The dCache rpm—as shipped by dCache.org— will ensure a "dcache" user and group account exists in any case. This module will not attempt to manage either, in order to not interfere with other user management facilities.

  • See also

Examples

Hiera example of a crippled setup for simplicity's sake
classes:
  - dcache
dcache::setup:
  dcache.zookeeper.connection: zookeeper.example.org:2181/
dcache::layout:
  # Global layout property mappings have Scalar values
  dcache.java.memory.heap: 500m
  # dCache domains have mapping values
  dCacheDomain:
    # Domain properties have Scalar values
    dcache.broker.scheme: core
    # Services have mapping values
    nfs:
      # Service properties need to be grouped with the 'properties' key
      properties:
        nfs.version: 3
      # Depending on the service type, there may be additional
      # supported parameters. Refer to ./dcache_services.md
      # for the entire documentation.
      exports:
        /pnfs:
          localhost:
            - rw
            - no_root_squash
    # dcache::services::pinmanager is _not_ a known Puppet resource.
    # So Puppet will translate this data into a dcache::services::generic
    # resource.
    pinmanager: {}
  poolDomain:
    # Only for pools, we support setting its designated name in this way
    pool_1:
      service: pool
      size: 200000000000
    pool_2:
      service: pool
      size: 200000000000

Parameters

The following parameters are available in the dcache class:

version

Data type: Dcache::Dcache_version

The only mandatory parameter specifies the desired semantic version of dCache.

user

Data type: Variant[String[1], Integer[0]]

The designated uid of the dCache configuration files and service processes.

Default value: 'dcache'

group

Data type: Variant[String[1], Integer[0]]

The designated primary gid of the dCache configuration files and service processes.

Default value: 'dcache'

env

Data type: Hash[String[1], Scalar]

Using this parameter, environment variables (like JAVA_HOME and JAVA) can be set globally for dCache.

Default value: {}

setup

Data type: Hash[String[1], Scalar]

Similar to env, a hash of properties will be written into dCache's central configuration file (dcache.conf).

layout

Data type: Dcache::Layout

The complete layout of dCache domains and services (of the current node).

Defined types

Functions

dcache::hash_to_psu

Type: Ruby 4.x API

Transform the psu input data into fully qualified information about all entities relevant to the Pool Selection Unit.

`dcache::hash_to_psu(Struct[{

  Optional[units]   => Units,
  Optional[ugroups] => Hash[String, Units],
  Optional[pools]   => Array[String],
  Optional[pgroups] => Hash[String, Pgroup],
  Optional[links]   => Hash[String, InputLink],
  Optional[lgroups] => Hash[String, InputLgroup],
}] $content)`

Transform the psu input data into fully qualified information about all entities relevant to the Pool Selection Unit.

Returns: Struct[{ units => Units, ugroups => Hash[String, Array[String]], pools => Array[String], pgroups => Hash[String, Array[String]], links => Hash[String, OutputLink], lgroups => Hash[String, OutputLgroup], }] Transformed, extensive and fully qualified data for PoolManager.

content

Data type: Struct[{ Optional[units] => Units, Optional[ugroups] => Hash[String, Units], Optional[pools] => Array[String], Optional[pgroups] => Hash[String, Pgroup], Optional[links] => Hash[String, InputLink], Optional[lgroups] => Hash[String, InputLgroup], }]

The streamlined input data.

Data types

Dcache::Admin::Authorized_keys

The authorized ssh keys for accessing the dCache administration interface.

Alias of

Hash[String[1], Struct[{
    Optional['name'] => NotUndef[String[1]],
    'ensure'         => Optional[Enum['present', 'absent']],
    'key'            => NotUndef[String[1]],
    'options'        => Optional[Array[Pattern[/^\w+=.+$/]]],
    'provider'       => Optional['parsed'],
    'target'         => Optional[Stdlib::Absolutepath],
    'user'           => Optional[Variant[String[1], Integer[0]]],
    'type'           => Optional[Enum[
      'ssh-dss', 'ssh-rsa',
      'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521',
      'ssh-ed25519', 'dsa', 'ed25519', 'rsa',
    ]],
  }]]

Dcache::Dcache_version

Which version specifiers are allowed.

Alias of

Variant[Pattern[/^\d+\.\d+\.\d+([[:alnum:]_.-]+)?$/], Enum['installed', 'present', 'absent']]

Dcache::Gplazma::Authzdb

Validate content of the storage-authzdb for gPlazma.

Alias of

Hash[String[1], Variant[
    Enum['2.0', '2.1'],
    Float[2.0, 2.1],
    Struct[{
      NotUndef['access'] => Enum['read-only', 'read-write'],
      NotUndef['uid']    => Integer[0],
      NotUndef['gids']   => Array[Integer[0]],
      NotUndef['home']   => Stdlib::Absolutepath,
      NotUndef['root']   => Stdlib::Absolutepath,
      Optional['extra']  => Stdlib::Absolutepath,
    }]
  ]]

Dcache::Gplazma::Banfile

The banfile may contain aliases and bans as simple mappings.

Examples

Hiera style
dcache::layout:
  gplazmaDomain:
    gplazma:
      banfile:
        bans:
          - dn: /CN=Bad Person
          - dn: /CN=His Accomplice
Puppet style
dcache::domain { 'gplazmaDomain':
  services => {
    'gplazma' => {
      'banfile' => [
        { 'dn' => '/CN=Bad Person', },
        { 'dn' => '/CN=His Accomplice', },
      ],
    },
  },
}

Alias of

Struct[{
  Optional['aliases'] => Hash[String, String],
  'bans'              => Array[Hash[String, String, 1, 1]],
}]

Dcache::Gplazma::Gridmap

Validate the lines for the grid-mapfile of gPlazma.

Alias of

Array[Struct[
    dn              => String[1],
    Optional[fqan]  => String[1],
    login           => String[1],
  ]]

Dcache::Gplazma::Kpwd

Validate the content of the dcache.kpwd file of gPlazma.

Alias of

Struct[{
  'version'            => Variant[Enum['2.0', '2.1'], Float[2.0, 2.1]],
  Optional['mappings'] => Hash[String[1], String[1]],
  Optional['logins']   =>
    Hash[
      String[1],
      Struct[{
        NotUndef['access'] => Enum['read-only', 'read-write'],
        NotUndef['uid']    => Integer[0],
        NotUndef['gid']    => Integer[0],
        NotUndef['home']   => Stdlib::Absolutepath,
        NotUndef['root']   => Stdlib::Absolutepath,
        Optional['extra']  => Stdlib::Absolutepath,
        NotUndef['dns']    => Array[String[1]],
      }]
    ],
  Optional['passwds']  =>
    Hash[
      String[1],
      Struct[{
        NotUndef['pwdhash'] => String[8, 8],
        NotUndef['access']  => Enum['read-only', 'read-write'],
        NotUndef['uid']     => Integer[0],
        NotUndef['gid']     => Integer[0],
        NotUndef['home']    => Stdlib::Absolutepath,
        NotUndef['root']    => Stdlib::Absolutepath,
        Optional['extra']   => Stdlib::Absolutepath,
      }]
    ],
}]

Dcache::Gplazma::Multimap

Validate the content of the multi-mapfile of gPlazma.

Alias of

Hash[Pattern[/\A(dn|email|entitlement|fqan|gid|group|kerberos|oidc|oidcgrp|op|uid|username):/], Hash[
    Enum['dn','email','entitlement','fqan','gid','group','kerberos','oidc','oidcgrp','op','uid','username'],
    Variant[Integer, String]
  ]]

Dcache::Layout

Defines the domains and services the layout on this node comprises of.

Alias of

Hash[String[1], Variant[
    Scalar, # Property value
    Dcache::Layout::Domain
  ]]

Dcache::Layout::Domain

The domains included in Dcache::Layout.

Alias of

Hash[String[1], Variant[Scalar, Dcache::Layout::Service]]

Dcache::Layout::Properties

Properties for either Dcache::Layout::Domain or ::Service.

Alias of

Hash[String[1], Scalar]

Dcache::Layout::Service

The services included in Dcache::Layout.

Alias of

Hash[String[1], Data]

Dcache::Wlcg_tape_api

Contact details on the /tape REST endpoints.

Alias of

Struct[{
  'sitename'              => String,
  'endpoints'             => Array[
    Struct[{
      'uri'                => Pattern[/\A[\d\w]+:\/\/.*\z/],
      'version'            => String,
      Optional['metadata'] => Hash,
    }]
  ],
  Optional['description'] => String,
}]