Domino on Docker remote workshop with hosted servers
Daniel Nashed – 22 November 2020 17:00:50
Last week Thomas Hampel and myself did the first part of a remote hands-on workshop. Each participants is sitting @home on their own computer.
Last year at the DNUG workshop we had everyone install their Linux server on their notebook on the VM product of their choice. That was a bigger challenge that we thought.
I prepared a whole server with local lab network with CentOS mirror, Docker registry, DNS, local clone of Docker documentation, own Git server, it took still quite a while to have everyone up and running.
Standardized hosted infrastructure in the cloud
I had that idea a while ago and last weekend I finally took the time to write it up for this workshop.
It took some time, but this will not be the last workshop where we are using it.
For sure we will have more workshops and make that concept available for others like DNUG here in Germany.
Hetzner Cloud
The ISP Hetzner in Germany really isn't what they used to be in their early days.
They offer very modern and flexible services with a very nice modern UI, to manage servers and DNS for a very moderate price.
The smallest server with 1 CPU core, 2 GB RAM and 20 GB disk costs around 3 euro per month. And you pay for it by the minute!
In addition they provide a simple to use REST API for server management and also DNS management.
Creating new servers on the fly with a Notes database with Lotus Script
I could have used their management website to create servers and DNS entries manually.
But because I wanted to have a deeper look into the newer Lotus Script classes for HTTP requests and for JSON, I wrote a Lotus Script class "HetznerServerFactory".
It can be used to create servers, DNS entries, reset passwords and later on remove the servers and DNS entries after the workshop.
There are two different APIs needed. Both use API authorization tokens and have a well defined interface:
Cloud server API:
https://docs.hetzner.cloud/
DNS API:
https://dns.hetzner.com/api-docs
So the notes database creates custom servers, gets the IP address back and uses the DNS API to create matching DNS records on the fly.
There is also an agent sending notification mails including hostname and login information.
Benefits of this approach:
Every participant got their own standard server, with their own name and proper DNS configuration.
And we can focus from the first minute on the topic -- not on server installation.
The master server contains all the work-shop data like the HCL Domino V12 November code drop Docker image and we just used rsync in the same network to get all the data to each server.
Also updates and additional packages can be installed quickly -- independent of the network speed in each home office, where only a SSH connection was needed.
For remote control we use the same ECDSA key for all servers. So we could help each other in the cloud lab environment.
This setup might be even useful for workshops at conferences, where limited network connectivity can be an issue.
Hetzner Cloud Projects
Hetzner also provides their own command-line API and there are additional projects for other use cases.
https://github.com/hetznercloud/awesome-hcloud
And there are also official projects with a command line interface to the Hetzner cloud.
But in our case the notes database with the REST calls made more sense.
Next steps
This week we are going to deploy a Kubernetes server on all of those server.
After looking into OpenShift (which is really a resource hungry dog) I decided to use https://k3s.io/, which can bring up a small Kubernetes environment in 1 minute -- on a machine with 1 CPU core and 2 GB RAM!.
And I created an own TLS and password protected Docker registry to host the container images we will use :-)
I think we should have a lot more Docker & Kubernetes enablement in the community.
And we are probably adding more examples and howto information to our Domino Docker project.
But I think even from home those type of workshops can work with the right preparation.
-- Daniel
- Comments [1]