diff --git a/README.rst b/README.rst
index 4d9b9a2..c74a3a1 100644
--- a/README.rst
+++ b/README.rst
@@ -586,6 +586,21 @@
                username: launcher-user
                password: launcher-pass
 
+Configure Jenkins master
+
+.. code-block:: yaml
+
+    jenkins:
+      client:
+        node:
+          master:
+            num_executors: 1
+            node_mode: Normal # or Exclusive
+            labels:
+              - example
+              - label
+
+
 Setting node labels
 
 .. code-block:: yaml
diff --git a/_states/jenkins_node.py b/_states/jenkins_node.py
index c8afacc..dbba23d 100644
--- a/_states/jenkins_node.py
+++ b/_states/jenkins_node.py
@@ -9,12 +9,12 @@
 import hudson.plugins.sshslaves.*
 
 def result=Jenkins.instance.slaves.find{{
- it.name == '{name}' && 
+ it.name == '{name}' &&
  it.numExecutors == {num_executors} &&
- it.nodeDescription == "{desc}" && 
- it.remoteFS == "{remote_home}" && 
- it.labelString == "{label}" && 
- it.mode == Node.Mode.{node_mode} && 
+ it.nodeDescription == "{desc}" &&
+ it.remoteFS == "{remote_home}" &&
+ it.labelString == "{label}" &&
+ it.mode == Node.Mode.{node_mode} &&
  it.launcher.getClass().getName().equals({launcher}.getClass().getName()) &&
  it.retentionStrategy.getClass().getName().equals(new hudson.slaves.RetentionStrategy.{ret_strategy}().getClass().getName())}}
 if(result){{
@@ -53,6 +53,31 @@
 hudson.save()
 """  # noqa
 
+configure_master_groovy = u"""\
+def instance = Jenkins.instance
+def changed = false
+
+if(Jenkins.instance.numExecutors != {num_executors}){{
+    Jenkins.instance.setNumExecutors({num_executors})
+    changed = true
+}}
+
+if(!Jenkins.instance.mode.name.equals(new String("{node_mode}").toUpperCase())){{
+    Jenkins.instance.setMode(Node.Mode.{node_mode})
+    changed = true
+}}
+
+if(!Jenkins.instance.labelString.equals("{labels}")){{
+    Jenkins.instance.setLabelString("{labels}")
+    changed = true
+}}
+if(changed){{
+    Jenkins.instance.save()
+    println("SUCCESS")
+}}else{{
+    println("EXISTS")
+}}
+"""
 
 def label(name, lbl_text, append=False):
     """
@@ -152,3 +177,42 @@
                 call_result["msg"])
     ret['result'] = None if test else result
     return ret
+
+def setup_master(name, num_executors = "1", node_mode="Normal", lbl_text=""):
+    """
+    Jenkins setup master state method
+
+    :param name: node name (master)
+    :param num_executors: number of executors (optional, default 1)
+    :param node_mode: Node mode (Normal or Exclusive)
+    :param lbl_text: label text
+    :returns: salt-specified state dict
+    """
+    test = __opts__['test']  # noqa
+    ret = {
+        'name': name,
+        'changes': {},
+        'result': False,
+        'comment': '',
+    }
+    result = False
+    if test:
+        status = 'CREATED'
+        ret['changes'][name] = status
+        ret['comment'] = 'Label %s %s' % (name, status.lower())
+    else:
+        call_result = __salt__['jenkins_common.call_groovy_script'](
+            configure_master_groovy, {'num_executors': num_executors, 'lbl_text': lbl_text, 'node_mode': node_mode})
+        if call_result["code"] == 200 and call_result["msg"] in ["CREATED", "EXISTS"]:
+            status = "CREATED"
+            ret['changes'][name] = status
+            ret['comment'] = 'Master node %s ' % (status.lower())
+            result = True
+        else:
+            status = 'FAILED'
+            logger.error(
+                "Jenkins master configure API call failure: %s", call_result["msg"])
+            ret['comment'] = 'Jenkins master configure API call failure: %s' % (
+                call_result["msg"])
+    ret['result'] = None if test else result
+    return ret
\ No newline at end of file
diff --git a/jenkins/client/node.sls b/jenkins/client/node.sls
index 8412137..a9bc209 100644
--- a/jenkins/client/node.sls
+++ b/jenkins/client/node.sls
@@ -1,8 +1,15 @@
 {% from "jenkins/map.jinja" import client with context %}
 {% for name, node in client.get("node",{}).iteritems() %}
+{% if node.get('name', name) == "master"}
+master_configuration:
+  jenkins_node.setup_master:
+    - num_executors: {{ node.get('num_executors','1') }}
+    - node_mode: {{ node.get('node_mode','Normal') }}
+    - labels: {{ node.get('labels',[]) }}
+{% else %}
 node_{{ name }}:
   jenkins_node.present:
-    - name: {{ name }}
+    - name: {{ node.get('name', name) }}
     - desc:  {{ node.get('desc','') }}
     - remote_home: {{ node.remote_home }}
     - launcher: {{ node.launcher }}
