Question about how Nomad configurations are managed in real life

Sorry for not putting the question in the title. I am not sure what exactly to ask because I am new to this field so any help is appreciated.

Our company is looking into using Nomad (open source version) for Docker container orchestration but we were wondering how Nomad users manage their config and job files.

Our expectation is to store our configuration in a central Git repository hosted on GitHub. We would like to automatically apply any changes when commits are pushed or merged to the master branch of this repository. In our current setup we use GitHub Actions to build and deploy our applications when new tags are created. Can something similar be done to manage Nomad configuration?

I am very sorry because I know the question is a bit vague. Am hoping that someone who has practical experience with Nomad might understand what I am saying and share their experience. Would really appreciate it because I wasn’t able to find good information on this by Googling.

Thanks very much for reading this.

I’d recommend one repository and either Terraform/Packer or some form of configuration management software (Ansible, Salt, Puppet, whatever) to setup your Consul/Nomad cluster.

You can keep the Nomad job file in the repository of your service and use GitHub Actions to build your Docker image and deploy it to Nomad. In your action, you just need the nomad binary and point it at your cluster address to use the CLI commands. Of course you want to set up client authentication to make sure not everybody is able to deploy to your cluster. :wink:

3 Likes

Really appreciate the response.

Hi @kartikdc :wave:

You can find some resources in out Who Uses Nomad page. This post from Trivago or this one from Sentiance might be helpful as well.

The Resource Library has a lot of previous presentations as well. This one from the Internet Archive talks about their pipeline.

I hope these help :slightly_smiling_face: