diff --git a/doc/source/install/install.md b/doc/source/install/install.md
index b5a7555..4923a18 100644
--- a/doc/source/install/install.md
+++ b/doc/source/install/install.md
@@ -549,6 +549,57 @@ below.
   </tr>
 </table>
 
+### 3.4 var.yaml (Single NIC settings)
+
+Configuration file used by SNAPS-OpenStack for single NIC deployment.
+
+#### TASKS
+
+Parameters defined in this section allows user to specify pre and post deployment tasks
+(Single NIC). Configuration parameters defined in this section are explained
+below.
+
+<table>
+  <tr>
+    <th colspan="3">Parameter</th>
+    <th>Optionality</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td colspan="3">name</td>
+    <td>N</td>
+    <td>Should be <code>pre-post</code>.</td>
+  </tr>
+  <tr>
+    <td colspan="4">host</td>
+    <td>Define this set of parameters for each host machine (A separate host section should be defined for each host machine).</td>
+  </tr>
+  <tr>
+    <td/>
+    <td colspan="2">ip</td>
+    <td>Y</td>
+    <td>IP of Management network.</td>
+  </tr>
+  <tr>
+    <td/>
+    <td colspan="2">node_type</td>
+    <td>N</td>
+    <td>User can choose node type controller/compute.</td>
+  </tr>
+  <tr>
+    <td/>
+    <td colspan="2">primary_interface</td>
+    <td>N</td>
+    <td>Name of primary interfaces.</td>
+  </tr>
+  <tr>
+    <td/>
+    <td colspan="2">target_interface</td>
+    <td>N</td>
+    <td>Name of the veth pairs to be created.</td>
+  </tr>
+</table>
+
 ## 4 Installation Steps
 
 ### 4.1 Fresh OpenStack Installation
@@ -614,6 +665,34 @@ Run `network_config.py` as shown below:
 sudo python <repo_dir>/network_config.py -f <repo_dir>/snaps_openstack/utilities/var.yaml -mtu
 ```
 
+### 4.4 Settings for Single NIC deployment
+
+#### Step 1
+
+Go to `<repo_dir>/snaps_openstack/utilities/` directory.
+
+Define Single NIC configurations for all hosts in `var.yaml` file under pre-post task.
+
+#### Step 2
+
+Run `network_config.py` as shown below:
+
+```
+sudo python <repo_dir>/network_config.py -f <repo_dir>/snaps_openstack/utilities/var.yaml -preNic
+```
+
+#### Step 3
+
+Install fresh openstack using physical interface and veth0 as management and data interfaces respectively. (Please refer to 4.1)
+
+#### Step 2
+
+Run `network_config.py` as shown below:
+
+```
+sudo python <repo_dir>/network_config.py -f <repo_dir>/snaps_openstack/utilities/var.yaml -postNic
+```
+
 ## 5 Cleanup and Troubleshooting
 
 ### 5.1 Fresh Deployment with Existing Docker Repository
@@ -718,3 +797,12 @@ Exit from mariadb container interactive mode:
 ```
 exit
 ```
+#### 5.3.2 Single NIC Cleanup
+
+Before cleaning the opesntack setup user needs to clean up the single NIC configurations.
+
+Run `network_config.py` as shown below:
+
+```
+sudo python <repo_dir>/network_config.py -f <repo_dir>/snaps_openstack/utilities/var.yaml -cleanNic
+```
diff --git a/network_config.py b/network_config.py
index 0cd1ea9..b4d9638 100644
--- a/network_config.py
+++ b/network_config.py
@@ -83,6 +83,42 @@ def __main(arguments):
                         logger.info('Completed operation successfully')
                     else:
                         logger.info('Error while performing operation')
+        if arguments.preNic is not ARG_NOT_SET:
+            for task in config.get("TASKS"):
+                if task.get("name") == "pre-post":
+                    logger.info("Performing Task " + task.get(
+                        'name') + " with arguments")
+                    logger.info("--pre-post")
+                    network_utils.add_ansible_hosts(task.get("HOSTS"))
+                    ret = network_utils.preNic(task)
+                    if ret == 0:
+                        logger.info('Completed operation successfully')
+                    else:
+                        logger.info('Error while performing operation')
+        if arguments.postNic is not ARG_NOT_SET:
+            for task in config.get("TASKS"):
+                if task.get("name") == "pre-post":
+                    logger.info("Performing Task " + task.get(
+                        'name') + " with arguments")
+                    logger.info("--pre-post")
+                    network_utils.add_ansible_hosts(task.get("HOSTS"))
+                    ret = network_utils.postNic(task)
+                    if ret == 0:
+                        logger.info('Completed operation successfully')
+                    else:
+                        logger.info('Error while performing operation')
+        if arguments.cleanNic is not ARG_NOT_SET:
+            for task in config.get("TASKS"):
+                if task.get("name") == "pre-post":
+                    logger.info("Performing Task " + task.get(
+                        'name') + " with arguments")
+                    logger.info("--pre-post")
+                    network_utils.add_ansible_hosts(task.get("HOSTS"))
+                    ret = network_utils.cleanNic(task)
+                    if ret == 0:
+                        logger.info('Completed operation successfully')
+                    else:
+                        logger.info('Error while performing operation')
 
     except Exception as e:
         logger.error(
@@ -117,6 +153,15 @@ def __main(arguments):
     parser.add_argument(
         '-mtu', '--mtu', dest='mtu', nargs='?', default=ARG_NOT_SET,
         help='When used, sets the mtu size on nic')
+    parser.add_argument(
+        '-preNic', '--preNic', dest='preNic', nargs='?', default=ARG_NOT_SET,
+        help='When used, sets the pre play for single nic support')
+    parser.add_argument(
+        '-postNic', '--postNic', dest='postNic', nargs='?', default=ARG_NOT_SET,
+        help='When used, sets the post play for single nic support')
+    parser.add_argument(
+        '-cleanNic', '--cleanNic', dest='cleanNic', nargs='?', default=ARG_NOT_SET,
+        help='When used, cleanup of single nic support')
     args = parser.parse_args()
 
     if (args.tenant_vlan is ARG_NOT_SET
diff --git a/snaps_openstack/utilities/network_utils.py b/snaps_openstack/utilities/network_utils.py
index dd2a6c9..39f4694 100755
--- a/snaps_openstack/utilities/network_utils.py
+++ b/snaps_openstack/utilities/network_utils.py
@@ -177,3 +177,54 @@ def mtu(task):
         ret = os.system(ansible_command_restart)
 
     return ret
+def preNic(task):
+    ret = None
+    for host in task.get("HOSTS"):
+        ip = host.get("ip")
+        primary_interface = host.get("primary_interface")
+        target_interface = host.get("target_interface")
+        pre_pb = pkg_resources.resource_filename(
+                'snaps_openstack.utilities.playbooks',
+                'viface_pre_play.yaml')
+        ansible_command = "ansible-playbook " + pre_pb \
+                              + " --extra-vars=\'{\"target\": \"" \
+                              + ip + "\",\"target_interface\": \"" + target_interface + "\"}\'"
+        logger.info(ansible_command)
+        ret = os.system(ansible_command)
+    return ret
+def postNic(task):
+    ret = None
+    for host in task.get("HOSTS"):
+        ip = host.get("ip")
+        primary_interface = host.get("primary_interface")
+        target_interface = host.get("target_interface")
+        node_type = host.get("node_type")
+        post_pb = pkg_resources.resource_filename(
+                'snaps_openstack.utilities.playbooks',
+                'viface_post_play.yaml')
+        ansible_command = "ansible-playbook " + post_pb \
+                              + " --extra-vars=\'{\"target\": \"" \
+                              + ip + "\",\"node_type\":\"" + node_type \
+                              + "\",\"interface\": \"" + primary_interface \
+                              + "\"}\'"
+        logger.info(ansible_command)
+        ret = os.system(ansible_command)
+    return ret
+def cleanNic(task):
+    ret = None
+    for host in task.get("HOSTS"):
+        ip = host.get("ip")
+        primary_interface = host.get("primary_interface")
+        target_interface = host.get("target_interface")
+        node_type = host.get("node_type")
+        clean_pb = pkg_resources.resource_filename(
+                'snaps_openstack.utilities.playbooks',
+                'viface_clean_play.yaml')
+        ansible_command = "ansible-playbook " + clean_pb \
+                              + " --extra-vars=\'{\"target\": \"" \
+                              + ip + "\",\"node_type\":\"" + node_type \
+                              +"\",\"interface\": \"" + primary_interface \
+                              + "\"}\'"
+        logger.info(ansible_command)
+        ret = os.system(ansible_command)
+    return ret
diff --git a/snaps_openstack/utilities/playbooks/viface_clean_play.yaml b/snaps_openstack/utilities/playbooks/viface_clean_play.yaml
new file mode 100755
index 0000000..4ea9b2f
--- /dev/null
+++ b/snaps_openstack/utilities/playbooks/viface_clean_play.yaml
@@ -0,0 +1,19 @@
+---
+- hosts: "{{ target }}"
+  tasks:
+   - name: Remove Script file
+     shell: rm /etc/network/veth.sh
+     ignore_errors: True
+   - name: Edit interface file
+     lineinfile:
+       dest: /etc/network/interfaces
+       state: present
+       regexp: '^post-up'
+       line: ''      
+   - name: Removing port from linux bridge
+     shell: brctl delif br-ex '{{ interface }}';systemctl restart networking
+     when: node_type == "controller"
+   - name: Removing port from OVS bridge
+     shell: docker exec  $(docker ps -a| grep switchd| awk {'print $1'}) ovs-vsctl del-port br-ex  '{{ interface }}';ifconfig br-ex 0.0.0.0; systemctl restart networking
+     when: node_type == "compute"
+
diff --git a/snaps_openstack/utilities/playbooks/viface_post_play.yaml b/snaps_openstack/utilities/playbooks/viface_post_play.yaml
new file mode 100755
index 0000000..fce5c27
--- /dev/null
+++ b/snaps_openstack/utilities/playbooks/viface_post_play.yaml
@@ -0,0 +1,32 @@
+---
+- hosts: '{{ target }}'
+  become: yes
+  become_user: root
+# vars_files:
+#  vars:
+  tasks:
+   - name: get the default gateway of machine
+     shell: ip route show | grep default|awk '{print $3}'
+     register: gateway
+   - debug:
+       var: gateway.stdout_lines[0]
+   - name: Editing script file for controller
+     lineinfile:
+        dest: /etc/network/veth.sh
+        line: 'brctl addif uplinkbridge "{{ interface }}";ip addr add "{{ target }}"/24 dev uplinkbridge;ip addr del "{{ target }}"/24 dev "{{ interface }}";route add default gw "{{ gateway.stdout_lines[0] }}" uplinkbridge;ifconfig "{{ interface }}" "{{ target }}"/24;'
+     when:  node_type  == "controller"
+   - name: Editing script file for compute
+     lineinfile:
+        dest: /etc/network/veth.sh
+        line: "(sleep 90;echo 'starting ovs config' ip a a '{{ target }}'/24 dev br-ex;docker exec -i $(docker ps -a| grep switchd| awk {'print $1'}) ovs-vsctl add-port br-ex '{{ interface }}';ifconfig br-ex  up;route add default gw '{{ gateway.stdout_lines[0] }}' br-ex;ifconfig '{{ interface }}' 0.0.0.0;echo 'ending ovs config')& "
+     when:  node_type == "compute"
+   
+   - name: "Reboot if required"
+     shell: sleep 1 && shutdown -r now 'Reboot required'
+     become: true
+     async: 1
+     poll: 0
+     ignore_errors: true
+   - name: waiting for server to come back
+     local_action: wait_for host={{ target }} port=22 state=started delay=10 
+
diff --git a/snaps_openstack/utilities/playbooks/viface_pre_play.yaml b/snaps_openstack/utilities/playbooks/viface_pre_play.yaml
new file mode 100755
index 0000000..191c08a
--- /dev/null
+++ b/snaps_openstack/utilities/playbooks/viface_pre_play.yaml
@@ -0,0 +1,21 @@
+---
+- hosts: "{{ target }}"
+  tasks:
+   - name: install bridge-utils
+     shell: sudo apt-get install bridge-utils;
+     ignore_errors: True
+   - name: creating veth script file
+     file:
+       path: /etc/network/veth.sh
+       state: touch
+       mode: 0777
+   - lineinfile:
+        dest: /etc/network/veth.sh
+       # line: 'ip link add type "{{ veth_name }}";ip link set dev "{{ veth_name }}"0 up;ip link set dev "{{ veth_name }}"1 up;brctl addbr uplinkbridge;brctl addif uplinkbridge "{{ veth_name }}"0;ip link set dev uplinkbridge up;'
+        line: 'ip link add veth0 type veth peer name "{{ target_interface }}";ip link set dev veth0 up;ip link set dev "{{ target_interface }}" up;brctl addbr uplinkbridge;brctl addif uplinkbridge veth0;ip link set dev uplinkbridge up;'
+   - name: Editing interface file
+     lineinfile:
+        dest: /etc/network/interfaces
+        line: 'post-up /etc/network/veth.sh'
+   - name: restarting networks
+     command: systemctl restart networking
diff --git a/snaps_openstack/utilities/var.yaml b/snaps_openstack/utilities/var.yaml
index f9b4403..5e0216f 100755
--- a/snaps_openstack/utilities/var.yaml
+++ b/snaps_openstack/utilities/var.yaml
@@ -60,3 +60,16 @@ TASKS:
           -
             port_name: 
             size: ''
+  -
+   name: pre-post
+   HOSTS:
+     - 
+       ip: ""
+       node_type: "controller"
+       primary_interface: ""
+       target_interface: "veth1"
+     - 
+       ip: ""
+       node_type: "compute"
+       primary_interface: ""
+       target_interface: "veth1"
