
Security News
AGENTS.md Gains Traction as an Open Format for AI Coding Agents
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Tired of searching for dependencies on the forge and hoping you got everything? Have an existing Puppetfile that's getting long in the tooth? Use generate-puppetfile to generate a list of modules and their dependencies, at the latest version, in Puppetfile format for use with r10k or librarian-puppet.
gem install generate-puppetfile
Run generate-puppetfile
with a list of modules and/or an existing Puppetfile. Each module name will be validated to be of the proper format (author/name). Any existing Puppetfile will be scanned for forge modules. Non-forge module entries will be preserved. All forge modules will be tracked at the latest version, along with their dependencies. The resulting Puppetfile will contain all the forge modules along with any preserved non-forge module statements.
$ generate-puppetfile echocat/nfs rnelson0/certs
Installing modules. This may take a few minutes.
Your Puppetfile has been generated. Copy and paste between the markers:
=======================================================================
forge 'https://forge.puppet.com'
# Modules discovered by generate-puppetfile
mod 'echocat/nfs', '1.7.1'
mod 'herculesteam/augeasproviders_core', '2.1.2'
mod 'herculesteam/augeasproviders_shellvar', '2.2.0'
mod 'puppetlabs/concat', '1.2.4'
mod 'puppetlabs/stdlib', '4.9.0'
mod 'rnelson0/certs', '0.6.2'
# Discovered elements from existing Puppetfile
# Modules from github
mod 'lab_config',
:git => 'git@github.com:puppetinabox/lab_config.git'
=======================================================================
$ generate-puppetfile -p git/puppetinabox/controlrepo/Puppetfile
Installing modules. This may take a few minutes.
Your Puppetfile has been generated. Copy and paste between the markers:
=======================================================================
forge 'https://forge.puppet.com'
# Modules discovered by generate-puppetfile
mod 'ajjahn/dhcp', '0.2.0'
mod 'croddy/make', '0.0.5'
mod 'garethr/erlang', '0.3.0'
mod 'gentoo/portage', '2.3.0'
mod 'golja/gnupg', '1.2.1'
mod 'maestrodev/rvm', '1.12.1'
mod 'nanliu/staging', '1.0.3'
mod 'palli/createrepo', '1.1.0'
mod 'puppetlabs/activemq', '0.4.0'
mod 'puppetlabs/apache', '1.6.0'
mod 'puppetlabs/apt', '2.2.0'
mod 'puppetlabs/concat', '1.2.4'
mod 'puppetlabs/firewall', '1.7.1'
mod 'puppetlabs/gcc', '0.3.0'
mod 'puppetlabs/git', '0.4.0'
mod 'puppetlabs/inifile', '1.4.2'
mod 'puppetlabs/java', '1.4.2'
mod 'puppetlabs/java_ks', '1.3.1'
mod 'puppetlabs/lvm', '0.5.0'
mod 'puppetlabs/mcollective', '99.99.99'
mod 'puppetlabs/mysql', '3.6.1'
mod 'puppetlabs/ntp', '4.1.0'
mod 'puppetlabs/pe_gem', '0.1.1'
mod 'puppetlabs/postgresql', '4.6.0'
mod 'puppetlabs/puppetdb', '5.0.0'
mod 'puppetlabs/rabbitmq', '5.3.1'
mod 'puppetlabs/ruby', '0.4.0'
mod 'puppetlabs/stdlib', '4.9.0'
mod 'puppetlabs/tftp', '0.2.3'
mod 'puppetlabs/vcsrepo', '1.3.1'
mod 'puppetlabs/xinetd', '1.5.0'
mod 'richardc/datacat', '0.5.0'
mod 'rnelson0/certs', '0.6.2'
mod 'rnelson0/local_user', '1.0.1'
mod 'saz/ssh', '2.8.1'
mod 'saz/sudo', '3.1.0'
mod 'stahnma/epel', '1.1.1'
mod 'stephenrjohnson/puppet', '1.3.1'
mod 'thias/bind', '0.5.1'
mod 'yguenane/augeas', '0.1.1'
mod 'yguenane/ygrpms', '0.1.0'
mod 'zack/r10k', '3.1.1'
# Discovered elements from existing Puppetfile
# Modules from the Puppet Forge
# Modules from Github
mod 'lab_config',
:git => 'git@github.com:puppetinabox/lab_config.git'
=======================================================================
Due to the nature of the generate-puppetfile gem it makes an excellent tool for developing the Puppetfile for bolt projects. Seeing the simplest way to create a Bolt project is with the Puppet PDK this approach extends that use case. Add the following to your .sync.yml
in a pdk managed module and run pdk update
.zd
Gemfile:
optional:
':development':
- gem: 'generate-puppetfile'
version: '~> 1.0
Add the following to /rakelib/generate_puppetfile.rake
to create a rake target for the experimental pdk bundle
feature. You can then use pdk bundle exec rake generate_puppetfile
to generate the puppetfile based on the modules metadata.
require 'json'
desc 'generate puppetfile'
task :generate_puppetfile, [:mod] do |t, args|
args.with_defaults(:mod => JSON.parse(File.read('metadata.json'))['name'])
sh "generate-puppetfile -c #{args.mod}"
end
Add the following to /rakelib/generate_fixturesfile.rake
to create a rake target for the experimental pdk bundle
feature. You can then use pdk bundle exec rake generate_fixturesfile
to generate the .fixtures.yaml
based on the module metadata to aid in testing with the pdk test
feature.
desc 'generate fixtures'
task :generate_fixturesfile do |t|
mod = JSON.parse(File.read('metadata.json'))['name']
sh "generate-puppetfile -f -p ./Puppetfile #{mod} --fixtures-only -m #{mod}"
end
Puppetfile
's contents. generate-puppetfile
knows about some of the most common types of module references and attempts to treat them as references instead of strings. Any unknown references will be appended as raw content following the known references.All issues and PRs are welcome!
FAQs
Unknown package
We found that generate-puppetfile demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.