OpenVPN Configurator
Generating OpenVPN configurations with dynamic elements is hard. Computers are good at keeping track of many details that humans can easily overlook. This tool aims to assist with
the mundane details of managing routes based on DNS names and AWS IP ranges.
Additionally, whenever a generated OpenVPN config changes, the service can be automatically restarted so clients get new configurations immediately.
To reduce spurious restarts of services, all dynamic directives are sorted lexicographically before appending to the static template.
Installation
Use RubyGems to install with:
$ gem install openvpn_configurator
Usage
Create an OpenVPN configuration file with any static details as desired. Then use this tool to append some dynamic data, resulting in a final output file
Here's an example invocation which adds routes for an entire IPv4 AWS region, and IPv4(s) for a DNS name. If the output file changes, the systemd service
openvpn-server@myvpn.service
will be restarted:
# openvpn_configurator \
--route-v4-aws-region=us-west-2 \
--route-v4-dns=my.elb.name \
--restart-systemd=openvpn-server@myvpn.service \
/etc/openvpn/server/myvpn.template.conf \
/etc/openvpn/server/myvpn.conf
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/aarontc/openvpn-configurator. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
License
The gem is available as open source under the terms of the MIT License.
Code of Conduct
Everyone interacting in the OpenVPN Configurator project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.