{"id":20841554,"url":"https://github.com/wavesoftware/puppet-xtreemfs","last_synced_at":"2026-03-06T17:35:07.183Z","repository":{"id":23374625,"uuid":"26736031","full_name":"wavesoftware/puppet-xtreemfs","owner":"wavesoftware","description":"The XtreemFS module allows you to easily manage XtreemFS installation, volumes and mounts with Puppet.","archived":false,"fork":false,"pushed_at":"2015-12-13T22:43:48.000Z","size":148,"stargazers_count":3,"open_issues_count":4,"forks_count":3,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2026-03-04T20:32:57.806Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wavesoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-17T02:10:44.000Z","updated_at":"2017-07-13T11:08:57.000Z","dependencies_parsed_at":"2022-08-21T23:31:06.459Z","dependency_job_id":null,"html_url":"https://github.com/wavesoftware/puppet-xtreemfs","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/wavesoftware/puppet-xtreemfs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesoftware%2Fpuppet-xtreemfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesoftware%2Fpuppet-xtreemfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesoftware%2Fpuppet-xtreemfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesoftware%2Fpuppet-xtreemfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wavesoftware","download_url":"https://codeload.github.com/wavesoftware/puppet-xtreemfs/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wavesoftware%2Fpuppet-xtreemfs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30188240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T17:33:53.563Z","status":"ssl_error","status_checked_at":"2026-03-06T17:33:51.678Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-18T01:20:41.716Z","updated_at":"2026-03-06T17:35:07.149Z","avatar_url":"https://github.com/wavesoftware.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"xtreemfs\n========\n\n##### Status Info\n[![GitHub Issues](https://img.shields.io/github/issues/wavesoftware/puppet-xtreemfs.svg)](https://github.com/wavesoftware/puppet-xtreemfs/issues)  [![Puppet Forge](https://img.shields.io/puppetforge/v/wavesoftware/xtreemfs.svg)](https://forge.puppetlabs.com/wavesoftware/xtreemfs) [![Apache 2.0 License](http://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://raw.githubusercontent.com/wavesoftware/puppet-xtreemfs/develop/LICENSE)\n\n##### Master (stable) branch\n[![Build Status](https://img.shields.io/travis/wavesoftware/puppet-xtreemfs/master.svg)](https://travis-ci.org/wavesoftware/puppet-xtreemfs) [![Coverage Status](https://img.shields.io/coveralls/wavesoftware/puppet-xtreemfs/master.svg)](https://coveralls.io/r/wavesoftware/puppet-xtreemfs?branch=master) [![Code Climate](https://codeclimate.com/github/wavesoftware/puppet-xtreemfs/badges/gpa.svg?branch=master)](https://codeclimate.com/github/wavesoftware/puppet-xtreemfs) [![Inline docs](http://inch-ci.org/github/wavesoftware/puppet-xtreemfs.svg?branch=master)](http://inch-ci.org/github/wavesoftware/puppet-xtreemfs)\n\n##### Development branch\n[![Build Status](https://img.shields.io/travis/wavesoftware/puppet-xtreemfs/develop.svg)](https://travis-ci.org/wavesoftware/puppet-xtreemfs) [![Dependency Status](https://gemnasium.com/wavesoftware/puppet-xtreemfs.svg)](https://gemnasium.com/wavesoftware/puppet-xtreemfs) [![Coverage Status](https://img.shields.io/coveralls/wavesoftware/puppet-xtreemfs/develop.svg)](https://coveralls.io/r/wavesoftware/puppet-xtreemfs?branch=develop) [![SonarQube Tech Debt](https://img.shields.io/sonar/http/sonar-ro.wavesoftware.pl/wavesoftware:xtreemfs/tech_debt.svg)](http://sonar-ro.wavesoftware.pl/dashboard/index/2687) [![Code Climate](https://codeclimate.com/github/wavesoftware/puppet-xtreemfs/badges/gpa.svg?branch=develop)](https://codeclimate.com/github/wavesoftware/puppet-xtreemfs) [![Inline docs](http://inch-ci.org/github/wavesoftware/puppet-xtreemfs.svg?branch=develop)](http://inch-ci.org/github/wavesoftware/puppet-xtreemfs) \n\nTable of Contents\n-----------------\n\n1. [Overview - What is the XtreemFS module?](#overview)\n2. [Module Description - What does the module do?](#module-description)\n3. [Setup - The basics of getting started with XtreemFS module](#setup)\n    * [Configuring the installation](#configuring-the-installation) \n4. [Usage - How to use the module for various tasks](#usage)\n    * [Creating a volume](#creating-a-volume) \n    * [Managing mounts](#managing-mounts)\n    * [Replication](#replication)\n    * [Automatic replication](#automatic-replication)\n5. [Tests - how to perform unit and acceptance tests](#tests)\n6. [Contributing - how to send your work?](#contributing)\n\n\nOverview\n--------\n\nThe XtreemFS module allows you to easily manage XtreemFS installation, volumes and mounts with Puppet.\n\nModule Description\n-------------------\n\nXtreemFS is a fault-tolerant distributed file system for all storage needs. The xtreemfs module allows you to manage XtreemFS packages and services on several operating systems, while also supporting basic management of XtreemFS volumes and mounts. The module offers support for basic management of replication settings.\n\nSetup\n-----\n\n**What wavesoftware/xtreemfs affects:**\n\n* package/service/configuration files for XtreemFS\n* listened-to ports\n\n\n###Configuring the installation\n\nThe main configuration you'll need to do will be around the `xtreemfs::role::directory`, `xtreemfs::role::metadata` and `xtreemfs::role::storage` classes. The default parameters are reasonable. \n\n####To manage a XtreemFS with sane defaults on one server:\n\n```puppet\ninclude xtreemfs::role::directory\ninclude xtreemfs::role::metadata\ninclude xtreemfs::role::storage\n```\n\n####Hiera configuration\n\n - `xtreemfs::settings::dir_host`\n     - Provide an host to where metadata and storage nodes will be connecting, defaults: `$::fqdn`\n - `xtreemfs::settings::dir_port`\n     - A port for directory service connection\n - `xtreemfs::settings::dir_protocol`\n     - A protocol for directory service connection\n - `xtreemfs::settings::object_dir`\n     - A direcory where storage nodes will hold their replicated data. Good idea is to provide a directory on secure RAID drive, defaults: `/var/lib/xtreemfs`\n - `xtreemfs::settings::install_packages`\n     - If set to `true` will install packages of XtreemFS, defaults: `true`di\n - `xtreemfs::settings::add_repo`\n     - If set to `true` will add to system repository for XtreemFS, defaults: `true`\n - `xtreemfs::settings::properties`\n     - A properties hash to provide configuration options in form exactly like: http://www.xtreemfs.org/xtfs-guide-1.5/index.html#tth_sEc3.2.6    \n \n\n####For distributed without hiera\n\nDirectory service\n\n```puppet\n# In this example fqdn is dir.vagrant.dev\ninclude xtreemfs::role::directory\n```\n\nMetadata server\n\n```puppet\nclass { 'xtreemfs::role::metadata':\n  dir_host =\u003e 'dir.vagrant.dev',\n}\n```\n\nStorage node(s)\n\n```puppet\nclass { 'xtreemfs::role::storage':\n  dir_host   =\u003e 'dir.vagrant.dev',\n  object_dir =\u003e '/mnt/sdb1/xtreem', # actual object will be in: /mnt/sdb1/xtreem/objs \n}\n```\n\nClient(s)\n\nDescribed in usage section.\n\n\nUsage\n-----\n\n###Creating a volume\n\nThere are many ways to set up a XtreemFS volume using the `xtreemfs::volume` definition. For instance, to set up simple volume on default parameters:\n\n```puppet\nxtreemfs::volume { 'myVolume':\n  ensure   =\u003e 'present',\n  dir_host =\u003e 'dir.vagrant.dev',\n}\n```\nIn this example, you would create volume with default parameters.\n\n###Managing mounts\n\nTo manage mount point:\n\n```puppet\nxtreemfs::mount { '/mnt/xtreemfs':\n  ensure   =\u003e 'mounted',\n  volume   =\u003e 'myVolume',\n  dir_host =\u003e 'dir.vagrant.dev',\n}\n```\n\nIn this example, you would mount an existing volume into `/mnt/xtreemfs` directory that already exists.\n\n###Replication\n\nTo replicate an existing file for ex.: `/mnt/xtreemfs/centos7.iso` inside the XtreemFS mount point, use:\n\n```puppet\nxtreemfs::replicate { '/mnt/xtreemfs/centos7.iso':\n  policy  =\u003e 'WqRq',\n  factor  =\u003e 2,      # Required storage nodes\n}\n```\n\n###Automatic replication\n\nTo automatically replicate new files in XtreemFS mount point you can set a policy for directory. This will not affect existing files. Take a look at example usage:\n\n```puppet\nxtreemfs::policy { '/mnt/xtreemfs':\n  policy          =\u003e 'WqRq',  # Replicate policy\n  factor          =\u003e 2,       # Required storage nodes\n  striping_policy =\u003e 'RAID0', # Actually only one supported by XtreemFS\n  stripe_count    =\u003e 1,       # Number of storage servers used for striping\n  stripe_size     =\u003e 128,     # The size of an individual stripe in KiB\n}\n```\n\n### Tests\n\nThere are two types of tests distributed with the module. Unit tests with rspec-puppet and system tests using rspec-system.\n\nFor unit testing, make sure you have:\n\n* rake\n* bundler\n\nInstall the necessary gems (gems will be downloaded to private `.vendor` directory):\n\n```shell\nbundle install --path .vendor\n```\n\nAnd then run the unit tests:\n\n```shell\nbundle exec rake spec\n```\n\nThe unit tests are ran in Travis-CI as well, if you want to see the results of your own tests register the service hook through Travis-CI via the accounts section for your Github clone of this project.\n\nIf you want to run the system acceptance tests, make sure you also have:\n\n* vagrant \u003e 1.2.x\n* Virtualbox \u003e 4.2.10\n\nThen run the tests using:\n\n```shell\nbundle exec rake acceptance\n```\n\nTo run the tests on different operating system, see the sets available in `spec/acceptance/nodesets/` and run the specific set with the following syntax:\n\n```shell\nbundle exec rake acceptance RS_SET=debian-76-x64\n```\n\nYou can also run system acceptance tests against Docker containers. If you want to do this, make sure you also have:\n\n* docker \u003e 1.0.0\n\nTo run the the test on docker container use:\n\n```shell\nbundle exec rake acceptance RS_SET=centos-65-x64-docker\n```\n\n###Contributing\n\nContributions are welcome!\n\nTo contribute, follow the standard [git flow](http://danielkummer.github.io/git-flow-cheatsheet/) of:\n\n1. Fork it\n1. Create your feature branch (`git checkout -b feature/my-new-feature`)\n1. Commit your changes (`git commit -am 'Add some feature'`)\n1. Push to the branch (`git push origin feature/my-new-feature`)\n1. Create new Pull Request\n\nEven if you can't contribute code, if you have an idea for an improvement please open an [issue](https://github.com/wavesoftware/puppet-xtreemfs/issues).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavesoftware%2Fpuppet-xtreemfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwavesoftware%2Fpuppet-xtreemfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwavesoftware%2Fpuppet-xtreemfs/lists"}