Skip to content

Latest commit

 

History

History
106 lines (80 loc) · 3.01 KB

README.md

File metadata and controls

106 lines (80 loc) · 3.01 KB

Recreate the Ruby puppet server

Table of Contents

Description

  • Want an easy-to-scale Puppet Server that's quick to start and a LOT lighter than Trapperkeeper?
  • Missing the days of running puppet master --no-daemonize --debug --verbose to debug your janky server-side compiles?
  • Good news: This project is for you!

Forked from https://github.com/puppetlabs/puppet, commit fd4024d—the final commit before the tragic merge of puppet#6794.

🔥⚠️🔥 WARNING: MASSIVE WORK IN PROGRESS (…but it seems to work :-D) 🔥⚠️🔥

Setup

Requirements

For executing directly with Ruby:

Beginning with simp-webrick

Running from Ruby

bundle update
bundle exec ruby puppet_server --no-daemonize --debug -v

Running in podman

Standalone Compiler
podman build --tag "puppet_webrick" --file Dockerfile
podman run --hostname puppet -p 8140:8140 -d puppet_webrick
Behind Passenger
podman build --tag "puppet_passenger" --file Dockerfile.passenger
podman run --hostname puppet -p 8140:8140 -d puppet_passenger

Running in minikube

  • Install minikube
  • minikube start
  • Run a local registry
    • kubectl create -f k8s/local_registry.yml
    • kubectl port-forward --namespace kube-system $(kubectl get pod -n kube-system | grep kube-registry-v0 | \awk '{print $1;}') 5000:5000
  • Create the container image
    • buildah bud -t puppetmaster:latest -f Dockerfile
  • Update your podman configuration
    • Add localhost to the registries array of [registries.insecure] in /etc/containers/registries.conf
  • Push the container image
    • podman push localhost/puppetmaster localhost:5000/puppetmaster
  • Run the pod
    • kubectl create -f k8s/puppetmaster.yml
Running a Cluster
  • Enable the puppetmaster cluster
    • kubectl apply -f k8s/puppetmaster_deployment.yml
  • Expose the port
    • minikube addons enable ingress

TODO

  • Attach some clients
  • Autoscale puppetmaster compilers as a cluster
  • Compare and contrast to the "real thing"
  • Create a shared volume for the CA materials
  • Create a shared volume for the environment code