TLDR: How does one incorporate autoscaling with containers?
I’ve posted two repositories that will provision a WebODM setup to include ClusterODM and at least one NodeODM instance on a separate server. The repositories are GitHub - kendrickcc/odm-aws-wf1 and GitHub - kendrickcc/odm-DO-wf1: OpenDroneMap in DigitalOcean using Terraform and cloud-init. The repos utilize GitHub Actions which permit the provisioning directly into AWS and DigitalOcean, respectively. They can be modified to adjust the server instance size, and the number of servers needed based on the project. Once keys and tokens are entered into the repo, then initiate the actions to “Apply” and about 5 minutes later a fully functional environment is ready. There is no need to log into the servers (ssh over port 22) to configure. Access the two web consoles, add in the nodes, then add in the cluster and should be good to start processing data. While may not be much call for it, I am still working on a build for Azure. That work is at GitHub - kendrickcc/odm-azure-wf1.
With this approach, I can provision servers for a specific project, and because they are each isolated builds, costs to run the projects are more easily obtained. Once data are processed, download and post to DroneDB or archive, then destroy the environment. This provides a fresh new environment to run every time.
The builds utilize Docker containers. I was not following how to manually install ClusterODM (node.js version 14.x, then npm install) to where I could get a build working without getting a terminal tied up with running ClusterODM. So I was wondering how one adds in the appropriate autoscale setup if only using containers. I believe I have a method of passing the edited json file into the build, but I don’t understand how it is added to the ClusterODM server.
If to utilize autoscaling it requires a manual install of ClusterODM, then has anyone setup the server to run it as a service or put it into the background?
Also are there any options to supply the node IPs and ports from a command line when kicking off the container run?