I'm sending thishere as a sort of preview. I hope to publish an improved form of this material on the website soon.
These are the main components of openwisp2 controller.
There are quite a bit more but you don't need to worry about those, let's focus on what you need to know
in order to become proficient with openwisp2
As you can see, ansible-openwisp2 makes it easy to install, upgrade and configure the various modules.
django-netjsonconfig is the module that offers a web interface to create or modify configurations, templates and VPN servers
it also offers some HTTP resources which devices will use to download new configurations.
netjsonconfig is the configuration engine which is used behind the scenes by the web interface,
it receives a configuration and its templates in NetJSON format and returns an OpenWRT or OpenVPN configuration
as output, it's a standalone library that can be used from the linux shell too
its documentation is extensive and it's here that you'll have to look when you want to venture in the advanced mode.
django-x509 is the module that allows to create new Certification Authorities and Certificates,
this module allows automating the management of VPN client certificates.