GithubHelp home page GithubHelp logo

pgassmann / pulet Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 25 KB

Puppet Control Repo and Development Toolkit

License: Apache License 2.0

Ruby 18.70% Shell 68.97% Puppet 12.33%
puppet-control librarian-puppet hiera-data puppet-collection puppet hieradata puppetfile

pulet's Introduction

pulet

Enhanced Puppet Control Repo and Tools.

Upstream Projekt auf Github

What

  • Combination of control_repo and masterless Puppet localsetup
  • One single repository with
    • hieradata
    • Puppetfile for librarian-puppet
    • Gemfile for tool installation with bundler
    • pulet script with various subcommands for setup, package and apply config
  • Can be used without Puppetmaster
  • Can be used as control repo on a Puppet master
  • Package useful Tools and Rake Tasks to manage and check your Puppet Environment
  • One-Command setup with all-in-one puppet-agent package from puppet collection repo.
  • Alternative: Install Puppet using bundler and Gemfile to a separate path from system gems

Why?

  • Small flexible system to puppetize servers for example in a home setup environment.
  • Test/Develop Puppet on ephemeral systems without having them to register on a Puppetmaster.
  • All the configuration and scripts in one git repository.

Bootstrap

Workspace Setup

To write and test the configuration on your laptop.

  • clone repository
  • configure pulet locally to use bundle as source for puppet
  • install puppet and modules
git clone <repourl>
cd pulet
echo "installmethod='bundle'" >> ./pulet.conf.local
./pulet install

Bootstrap a Server

  • VM with Ubuntu 14.04+ or EL 7+ Server.
  • Git to clone the repo

Run the following commands to setup your server.

yum install git -y
git clone <repourl>
cd pulet
./pulet setup

Customization

  • hieradata in data/
  • Puppet Modules in Puppetfile
  • profile manifests in site/profiles
  • hierarchy in hiera.yaml
  • pulet configuration and extensions in pulet.conf

How it works

First run:

installmethod=collection

  • Install puppet-agent package from puppet collection repo
  • Install bundler as gem using the ruby & gem from puppet-agent in /opt/puppetlabs/
  • Install necessary missing gems with bundler

installmethod=bundler

  • Install sytem packages ruby, ruby-dev and make
  • Install bundler as gem
  • Install puppet and dependencies with bundle to a local path

populate environment and puppet apply

  • librarian-puppet installs the modules using the Puppetfile
  • puppet apply with hieradata and modules

Commands

  • ./pulet help: show all commands
  • ./pulet install: install development environment with tools, without apply
  • ./pulet apply: apply the current configuation, can be used as long as there are no changes in external modules.
  • ./pulet setup: install & apply
  • ./pulet facts: dump facts using custom facts in modules
  • ./pulet check: validate and lint puppet code

Package and deploy configuration as rpm

The complete configuration incl. hieradata and modules can be packaged and deployed as rpm.

The configuration can then be directly applied without installing dependencies or modules on a node.

  • ./pulet package: package modules and configuration to rpm in ./build/.
  • Install pulet rpm and puppet-agent on a system
  • /opt/pulet/pulet apply: Apply the configuration

pulet's People

Contributors

bliemli avatar pgassmann avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

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.