pcfens-yas3fs

Manage yas3fs with puppet.


Keywords
aws, s3, s3fs
License
Apache-2.0
Install
puppet module install pcfens-yas3fs --version 0.3.3

Documentation

puppet-yas3fs

Build Status

Table of Contents

  1. Overview
  2. Module Description
  3. Setup - The basics of getting started with yas3fs
  4. Usage - Configuration options and additional functionality
  5. Reference - An under-the-hood peek at what the module is doing and how
  6. Limitations - OS compatibility, etc.

Overview

The yas3fs module installs yas3fs, and provides a way to manage S3 mounts.

Module Description

yas3fs is a python tool used to mount S3 buckets using fuse. yas3fs provides caching, as well as a mechanism for invalidating caches on other nodes using SQS and SNS.

Setup

What yas3fs affects

  • fuse package and configuration
  • init jobs (sysvinit, upstart or systemd) that are used to manage yas3fs mounts
  • python-pip package (optional)

Beginning with yas3fs

To install fuse, python-pip, and yas3fs

class { 'yas3fs': }

If you'd rather provide pip though some other means, set install_pip_package to false:

class { 'yas3fs':
  install_pip_package => false,
}

Usage

Classes and Defined Types

Class: yas3fs

The primary module. By default, fuse, python-pip, and yas3fs are installed and configured.

Parameters within yas3fs

install_pip_package

When set to true, the python-pip package is installed. If the parameter is false then the pip command should be provided by some other means or yas3fs will not be installed.

init_system

Defines the type of init script/configuration to install out of upstart, systemd or sysvinit. If the parameter is unset, autodiscovery takes place.

mounts

A hash of mounts can be passed (possibly from hiera) as part of the class declaration.

class { 'yas3fs':
  mounts => {
    'example-mount' => {
      's3_url'     => 's3://example-bucket/',
      'local_path' => '/media/s3',
    }
  }
}

Defined Type: yas3fs::mount

Mounts a bucket/path using fuse by creating an init job.

yas3fs::mount { 'example-mount':
  s3_url     => 's3://example-bucket/',
  local_path => '/media/s3',
  options    => [
    'recheck-s3',
    'uid 1000',
    'gid 1000',
  ]
}

Parameters within yas3fs::mount

ensure

Control what to do with this mount. Valid values are mounted (default), unmounted, absent, and present.

WARNING: setting ensure to absent removes the service configuration, but cannot verify that the service is stopped.

s3_url

The S3 URL that should be mounted (e.g. s3://my-bucket/my-path)

local_path

The location where the S3 bucket should be mounted.

aws_access_key_id and aws_secret_access_key

The credentials to use when connecting to AWS. Credentials can be omitted on EC2 instances with appropriate IAM roles assigned.

options

An array of command line arguments that should be passed to yas3fs. The leading dashes can be omitted. A full list of options is in the yas3fs documentation.

Reference

Classes

Public Classes

  • yas3fs: Guides the install of yas3fs

Private Classes

  • yas3fs::config: Manages the fuse configuration
  • yas3fs::package: Installs pip, fuse, and yas3fs
  • yas3fs::params: Manages base parameters

Defined Types

Public Defined Types

  • yas3fs::mount: Manages a single yas3fs mount

Limitations

yas3fs is written for python 2.6, though there has been a lot of success running it on 2.7.