An Opinioned DHCP/DNS infrastructure.
- Description
- Build - The basics of getting started with ipam
- Setup - Getting the module working on your system
- Usage - Configuration options and additional functionality
- Development - Guide for contributing to the module
Welcome to the puppet-ipam module. This is an opinionated deployment of a DNS/DHCP Infrastructure. It creates an Active/Active ISC-DHCP-Server Cluster and a Bind Primary/Secondary across two nodes. All records are added via Hiera data.
This module was used to managed the IPAM networing infrastrucure for Microsoft's OpenStack CI Operations from 2003 until june of 2017. At it peak it processed 18,000 lines of hiera defining every network interface on every Server in the MS OpenStack CI.
The process of building this puppet module has been distilled and encapsulated into two build methods in order to test the deployment accuracy across multiple platforms and to ensure formatting of the information supplied to the module.
- Dockerfiles (Centos/Debian/Ubuntu)
- Vagrantfile
The following Dockerfiles and container images artifacts from testing are provided below. A docker-compose.yaml is used to build and label container images that versioned and pushed to the dockerhub. Building all associated Dockerfiles can be achieved by running the build script located in this directory with the "-d" flag as show in this example:
./build.sh -d
ppouliot/puppet-ipam
ppouliot/puppet-ipam-centos
ppouliot/puppet-ipam-debian
ppouliot/puppet-ipam-ubuntu
A Vagrantfile is supplied in order to test deployment and execution of the puppet code in a virtual machine environment. This should validate that all services have started properly and also include a dhcpclient as a test to ensure everything is fully operational within the DHCP/DNS Cluster and that all services are in proper working order. To utilize Vagrant to test this deployment run the same build script to initate the running. The following is an example of building using vagrant:
./build.sh -v
This module contains a Puppetfile which can be used to install all module dependencies. To use the Puppetfile, place it directory above the modules folder and run:
r10k puppetfile install --verbose
The simplest way to consume this module is to include it in your node definition and modify the provided hieradata an example configuration and include it in hiera on the system or puppetmaster.
Basic usage:
class{'ipam':}
Since your module is awesome, other users will want to play with it. Let them know what the ground rules for contributing are.
If you aren't using changelog, put your release notes here (though you should consider using changelog). You can also add any additional sections you feel are necessary or important to include here. Please use the ##
header.