We can categorize dda-pallet in a few statements, dda-pallet:
- is a clojure based config management system, built upon the great config management framework pallet created by Hugo Duncan.
- can be considered the purest expression of the infrastructure-as-code philosophy behind all CM tools.
- is a stripped-down, essentials-only tool targeting heavily at cloud infrastructure rather than data centers.
- supports the whole Lifecycle: Create / install / configure servers, create images in build processes, instantiate nodes in the cloud or create networks or other cloud infrastructure.
- is OpenSource - published under the Apache License, Version 2.0
On developing dda-pallet, we follow few principles
- Separation of Domain and Infrastructure: We separate our modules into common usable infrastructure adapters and company specific domain modules. So we are able to cooperate with the community on infrastructure adapter level, but can follow our company specific convention patterns in the domain part.
- Configuration is data: In order to keep the interface simple, clean & isolated, we handle all configuration as data. There is no magic hidden in.
- Test Driven DevOps: Testing is quite important in a world getting more and more complex. So we support a wide field of automated tests:
- UnitTests: Configuration as data makes it easy, to do unit tests the all the convention modules and nearly all aspects of system modules.
- Integration Tests for Build Process: Images can be easily tested during their build process.
- Integration Tests for server instances: Even server instances can be tested with minimal footprint.
- Full Modularization: We've to handle growing and large system worlds. So full Modularization is a must have. We take car, that all the modularization abilities provided by clojure are available also for our Configuration Management System. All our configuration data, convention modules and system adapters are plain jar files and can be referenced as versioned and released project dependencies.
- Minimal Footprint: We focus a minimal needed footprint, in order to be able to configure small systems also. Our footprint is bash & ssh.
- Push: We can push configuration. And we can push efficient to a bunch of target nodes in parallel.
- Explicit State: In order to handle the multitude of state in the DevOps world, we represented state as explicit facts, comparable to other CM Systems. By using explicit state, we're able to maximize the amount of code can be unit-tested.
dda-pallet can be found on GitHub: https://github.com/DomainDrivenArchitecture/dda-pallet
We like feedback, so feel welcome to get in touch