Tool to deploy puppet environments onto puppet masters
For detailed usage, see:
puppet-env-manager --help
Run tests:
make tests
The script ships with a Makefile that can be used to generate a native RPM package for easy installation.
Build RPM packages:
make
On Fedora 30+, the following is also needed in ~/.rpmmacros
:
%__brp_mangle_shebangs_exclude ^/usr/bin/python
To automatically sign and publish to spacewalk, run:
make publish REPO="company-extras"
- Fix python 3.7 compatibility
- Fix
force
not reapplying changes - Fix detection pf Puppetfile.lock changing between commits
- Switch librarian-puppet to v3 api when installing modules
- Restore compatibility with GitPython 0.3.2 for el6
- Allow
update_all_environments
to return summary of changes made - Skip running
install_puppet_modules
if thePuppetfile.lock
has not been modified (unlessforce
option is used). Since this is the slowest operation, it will speed up deployments significantly when no changes have been made.
- Remove internal references from git history ready for public release
- Update project layout for external packaging
- Ignore locked environments during stale cleanup to avoid deleting a new clone being created by another process running in parallel
- Handle dangling symlinks left behind by failed add/update by deleting and re-adding environment
- Clone the thirdparty directory into newly created environment clones to speed up puppet module installation using librarian
- Add support for triggering a puppet master environment cache flush after modifying environment content
- Ignore
__
paths as clones and don't try to delete them during cleanup. Add test for this behaviour.
- Generate resource type cache after making code changes
- Update generated clone path names to use
__
as a separator so they're considered valid environment names. Required for atomic resource type cache generation. - Prevent branches with
__
in the name from being treated as environments
- Fixup compatibility with py2.6 for el6 (tests won't run under py2.6)
- Prune remote branches when fetching changes
- Fix deletion of environments for pruned remote branches
- Handle removing stale environments using relative symlinks
- Fix installation of thirdparty modules into clone paths
- Add makefile target for tests
- Checkout updated environment code into new directories, and manage a symlink pointing at the live copy of the environment. This prevents a partially-updated environment being served out to clients
- Lock the master repository, and environments while they're being modified, to prevent concurrent access issues.
- Cleanup any stale environment clone directories during update-all, and cleanup modes
- Don't reset clean environment which is already at the correct commit (unless forced, which can be used to redeploy third party modules)
- Fix typo in log message
- Add
mock
to dev requirements insetup.py
- Fix reset not updating the working tree properly, and add a log entry if the working tree is found to be dirty after the update
- Fix detection of git-new-workdir on machines with 4-part git versions
- Fix mismatching config directory name between packaging and code
- First version