Extend modprobe files functionality

Support full set of options defined in

  man modprobe.d

Change-Id: I3d30b6bc261ef308ae6afd963f13fda1e4b22c0d
diff --git a/README.rst b/README.rst
index 1086777..986ec72 100644
--- a/README.rst
+++ b/README.rst
@@ -439,6 +439,10 @@
 ``/etc/modprobe.d/nf_conntrack.conf`` file with line
 ``options nf_conntrack hashsize=262144``:
 
+'option' can be a mapping (with 'enabled' and 'value' keys) or a scalar.
+
+Example for 'scalar' option value:
+
 .. code-block:: yaml
 
     linux:
@@ -449,6 +453,115 @@
               option:
                 hashsize: 262144
 
+Example for 'mapping' option value:
+
+.. code-block:: yaml
+
+    linux:
+      system:
+        kernel:
+          module:
+            nf_conntrack:
+              option:
+                hashsize:
+                  enabled: true
+                  value: 262144
+
+NOTE: 'enabled' key is optional and is True by default.
+
+Blacklist a module:
+
+.. code-block:: yaml
+
+    linux:
+      system:
+        kernel:
+          module:
+            nf_conntrack:
+              blacklist: true
+
+A module can have a number of aliases, wildcards are allowed.
+Define an alias for a module:
+
+.. code-block:: yaml
+
+    linux:
+      system:
+        kernel:
+          module:
+            nf_conntrack:
+              alias:
+                nfct:
+                  enabled: true
+                "nf_conn*":
+                  enabled: true
+
+NOTE: 'enabled' key is mandatory as there are no other keys exist.
+
+Execute custom command instead of 'insmod' when inserting a module:
+
+.. code-block:: yaml
+
+    linux:
+      system:
+        kernel:
+          module:
+            nf_conntrack:
+              install:
+                enabled: true
+                command: /bin/true
+
+NOTE: 'enabled' key is optional and is True by default.
+
+Execute custom command instead of 'rmmod' when removing a module:
+
+.. code-block:: yaml
+
+    linux:
+      system:
+        kernel:
+          module:
+            nf_conntrack:
+              remove:
+                enabled: true
+                command: /bin/true
+
+NOTE: 'enabled' key is optional and is True by default.
+
+Define module dependencies:
+
+.. code-block:: yaml
+
+    linux:
+      system:
+        kernel:
+          module:
+            nf_conntrack:
+              softdep:
+                pre:
+                  1:
+                    enabled: true
+                    value: a
+                  2:
+                    enabled: true
+                    value: b
+                  3:
+                    enabled: true
+                    value: c
+                post:
+                  1:
+                    enabled: true
+                    value: x
+                  2:
+                    enabled: true
+                    value: y
+                  3:
+                    enabled: true
+                    value: z
+
+NOTE: 'enabled' key is optional and is True by default.
+
+
 Install specific kernel version and ensure all other kernel packages are
 not present. Also install extra modules and headers for this kernel: