Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
80 lines (51 sloc) 1.75 KB

Writing your first salt module

Salt modules are simply python files that are executed by the running minion on the minion-server, after being told to by the salt-master. Some environment and configuration can be passed in, but most of what we need is available by introspecting the minion-host.

Where to put a salt module?

First create {FILES_ROOT}/_modules/. FILES_ROOT is defined in /etc/salt/master, and defaults to /srv/salt

Now create a python module in the _modules directory, such as pbrian.py

Simplest possible salt module:

import salt

def hello()
    return "hello world"

And that's it.

Synchronise from the salt-master to the minion(s)

salt '*' saltutils.sync_all
     ^
     selects which minions

 $ sudo salt 'myinstance' saltutil.sync_all
 myinstance:
     ----------
     grains:
     modules:
         - modules.pbrian
     outputters:
     renderers:
     returners:
     states:

This will synch the _modules directory (and lots else) from master to minion. So modules are either those you have written and deployed into _modules yourself, or are properly incorporated into the main salt repos

Now run your module on the minion

$ sudo salt 'myinstance' pbrian.hello
myinstance:
    hello world

Hooray!

So lets recap.

We can manually build a salt-master. We can then auto build any number of minions (up to our credit card limit !) Then we can write a python module to do anything on the minion, deploy it and get its output returned to us.

Next steps

  • Better Python Integration.
  • Actually building our build server.