mprov-ng.github.io

mProv is an improvised provisioner!

View on GitHub

mProv

mProv is an improvised provisioner. It was born out of the need for a simple, easy to install, and easy to use way of keeping inventory of a large number of machines, like those in a High Performance Cluster(HPC.) mProv was built to be modular, so adding new functions to it should be as easy as coding them in python and plugging them in. This allows for the provisioner to be able to extend to all aspects of an HPC system.


mProv Job Server

Build Status Latest Version Supported Python Wheel Status License

The mProv Job server is the work horse behind the scenes of the mPCC. The job server connects to the mPCC and will run jobs that are queued on the mPCC. The job server is also responsible for serving images created through the mPCC, as well as running scripts on the images and hosts when they come up.

Requirements

Installation

The best way to install the job server is to run:

wget https://raw.githubusercontent.com/mprov-ng/mprov_jobserver/main/install_mprov_jobserver.sh -O - | bash

This will download and run the jobserver installation script from this repo.

Setup

You will need to create an API key in the mPCC for the job server. Once you have the api key, you will want to add that key to the /etc/mprov/jobserver.yaml file. There should be an example in there already, it will not work. You must replace it. While you are in there, you will want to setup the mprovURL entry to point to your mPCC instance. After that, you can enable/disable whatever jobmodules you want this job server to run by uncomment/commenting the lines that describe the jobmodules.

do not use localhost use IP or internal name

Here is an example for a good first jobserver config:

- global:
    # This points to your mprov control center instance.
    # This URL should point to the internal IP address or hostname and include a trailing slash
    # e.g. "http://<IP of internal interface>/"
    
    mprovURL: "http://mprov.local.cluster"
    # this is the api key for your mprov control center so that the 
    # jobserver can login and do stuff.
    apikey: 'kjangknfdasjhngurwegqfdbjhn'
    # this is the interval which this jobserver will check in with the mPCC
    heartbeatInterval: 10
    # runonce: True # uncomment to run the jobserver once and exit.
    myaddress: 'mprov.local.cluster' # set this to the address of this jobserver.
    jobmodules:
      # set the jobmodules you want to run here.
      - repo-delete
      - repo-update
      - image-update # REQUIRES mprov-webserver
      - mprov-webserver
      - image-delete
      - dnsmasq
      
# include any plugin yamls.        
- !include plugins/*.yaml

Post Setup

After you have setup the /etc/mprov/jobserver.yaml you can enable the jobserver with this command:

# systemctl enable --now mprov_jobserver

The jobserver should connect to the mPCC and start a repo sync which is required before you can update any images.

Arguments

Job server takes a few command line arguments. Global arguments are

Some plugins also use commandline arguments.

script-runner args

The script-runner job module will take the following arguments: