{"id":19792842,"url":"https://github.com/devpro/dojo-puppet-beginner","last_synced_at":"2026-02-06T12:10:26.045Z","repository":{"id":145399130,"uuid":"175246578","full_name":"devpro/dojo-puppet-beginner","owner":"devpro","description":"DOJO on Puppet for beginners","archived":false,"fork":false,"pushed_at":"2019-03-15T11:06:11.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-28T15:29:26.553Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devpro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-12T15:48:36.000Z","updated_at":"2019-03-15T11:06:07.000Z","dependencies_parsed_at":"2023-07-24T21:30:26.173Z","dependency_job_id":null,"html_url":"https://github.com/devpro/dojo-puppet-beginner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/devpro/dojo-puppet-beginner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devpro%2Fdojo-puppet-beginner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devpro%2Fdojo-puppet-beginner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devpro%2Fdojo-puppet-beginner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devpro%2Fdojo-puppet-beginner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devpro","download_url":"https://codeload.github.com/devpro/dojo-puppet-beginner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devpro%2Fdojo-puppet-beginner/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260261679,"owners_count":22982697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-12T07:08:07.537Z","updated_at":"2026-02-06T12:10:21.012Z","avatar_url":"https://github.com/devpro.png","language":"Dockerfile","readme":"# DOJO Puppet (beginner)\n\nDemonstration material following the presentation at [slides.com/devprofr/dojo-puppet](https://slides.com/devprofr/dojo-puppet#/).\n\n## Practice\n\nLet's make our hands dirty!\n\n### Requirements\n\nThe following tools must be present on your computer (latest versions are advised):\n\n- [git](https://git-scm.com/)\n- [Docker](https://docs.docker.com/) \u0026 [docker-compose](https://docs.docker.com/compose/)\n\n### Pupperware (official repo)\n\nFirst step is to use [puppetlabs/pupperware](https://github.com/puppetlabs/pupperware). You'll have a working Puppet master instance with a PuppetDb.\n\n- Clone \u0026 explore the repository\n  - Look in particular at `docker-compose.yml` file content\n\n- Launch the containers with `DNS_ALT_NAMES=host.example.com docker-compose up -d`\n  - You should have the following output:\n\n    \u003e Creating pupperware_puppet_1   ... done  \n    \u003e Creating pupperware_postgres_1 ... done  \n    \u003e Creating pupperware_puppetdb_1 ... done  \n\n- You can enter the puppet master container: `docker exec -it pupperware_puppet_1 bash`\n- You can also execute puppet commands on the puppet master:\n  - Get Puppet version: `DNS_ALT_NAMES=host.example.com bin/puppet --version`\n  - Get some configuration value: `DNS_ALT_NAMES=host.example.com bin/puppet config print autosign --section master`\n- And finally execute [pupperserver commands](https://puppet.com/docs/puppetserver/6.2/subcommands.html):\n  - Display the [Ruby packages (Gems)](https://rubygems.org/) used by the pupper server: `DNS_ALT_NAMES=host.example.com bin/puppetserver gem list`\n\n- When you're done, make sure to clean everything: `docker-compose down`\n\n### Pupperware (local files)\n\nSome changes were needed to make Pupperware work for this demonstration, so we're going to work with our own files.\n\n- Change directory to `pupperware` folder\n- Copy `docker-compose.override.yml.dist` into `docker-compose.override.yml` and review/edit the file (beware of issues on Windows with folder volume mapping...)\n  - It is important `code` volume is correctly mappped/synced between your hard drive and  docker\n- Start the containers: `DNS_ALT_NAMES=host.example.com docker-compose up --build`\n- Run the pre-requisites from the container: `docker exec -it pupperware_puppet_1 bash`\n\n  ```bash\n  gem install r10k\n  cd /etc/puppetlabs/code/environments/production\n  r10k puppetfile install -v\n  ```\n\n- Clean the containers: `docker-compose down`\n\nAssuming you have the local puppermaster working (see local Pupperware section), it's time to have a server on wich we install and run the Puppet Agent.\n\n### Alpine\n\nWe'll start with an [Alpine](https://www.alpinelinux.org/) OS.\n\n#### Puppet-on-Alpine documentation\n\n- [Using Puppet with Alpine Linux](https://puppet.com/blog/using-puppet-alpine-linux)\n  - Issue with missing components [fpm is broken on Alpine 3.8](https://github.com/jordansissel/fpm/issues/1534)\n- [Docker image](https://docs.docker.com/samples/library/alpine/)\n- [puppet-in-docker/puppet-agent-alpine/Dockerfile](https://github.com/puppetlabs/puppet-in-docker/blob/master/puppet-agent-alpine/Dockerfile)\n\n#### Steps to use Puppet agent on Alpine container\n\n- Change directory to `alpine-latest` folder\n- Start the containers: `docker-compose up -d --build`\n- Open [localhost:8056](http://localhost:8056/) to check nginx is running (with a nice 404 ^^)\n- Enter the container: `docker exec -it dojo_puppet_alpine bash`\n  - `puppet agent --verbose --onetime --no-daemonize --summarize`\n  - `facter --version`\n  - `facter os`\n  - `puppet resource file /etc`\n  - `puppet resource package`\n- Clean the containers: `docker-compose down`\n\nFrom the puppetserver you can run the command to see that certificate that has been added for the Alpine container: `puppetserver ca list --all`. You'll see a certificate such as `94293290483b.home`, this one was generated.\n\nIf you want to clean the certificates:\n\n- Run `puppet ssl clean` from the puppet agent\n- Run `puppetserver ca clean --certname 94293290483b.home,8ec2c38c523d.home,ab4101aafc92.home` from the puppet server\n\nOnce you have the ca name you can replace it in `manifests/site.pp` file and see a new file will be created ;)\n\n## Go further\n\n- [devprofr/knowledge-base](https://dev.azure.com/devprofr/knowledge-base/_wiki/wikis/knowledge-base.wiki?wikiVersion=GBwikiMaster\u0026pagePath=%2FInfrastructure%2FPuppet\u0026pageId=182)\n- [devpro/puppet-training-beginner](https://github.com/devpro/puppet-training-beginner)\n- [devpro.github.io/puppet/cheatsheet](https://devpro.github.io/puppet/cheatsheet.html)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevpro%2Fdojo-puppet-beginner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevpro%2Fdojo-puppet-beginner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevpro%2Fdojo-puppet-beginner/lists"}