diff --git a/cookiecutters/role/hooks/post_gen_project.py b/cookiecutters/role/hooks/post_gen_project.py
index c915d1f..438b09e 100644
--- a/cookiecutters/role/hooks/post_gen_project.py
+++ b/cookiecutters/role/hooks/post_gen_project.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python3
 #
-# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+# SPDX-FileCopyrightText: 2020 Open Networking Foundation <support@opennetworking.org>
 # SPDX-License-Identifier: Apache-2.0
 
 # role/hooks/post_gen_project.py
@@ -8,11 +8,6 @@
 
 from __future__ import absolute_import
 import os
-import jinja2
-
-from cookiecutter import generate as ccg
-from cookiecutter.environment import StrictEnvironment
-import cookiecutter.utils as utils
 
 # Docs for hooks
 # https://cookiecutter.readthedocs.io/en/latest/advanced/hooks.html
@@ -38,58 +33,10 @@
 
 
 def delete_file(filepath):
-    """ delete generated file from output directory """
+    """delete generated file from output directory"""
     os.remove(os.path.join(PROJECT_DIR, filepath))
 
 
-def generate_platforms():
-    """ Generate files specific to each platform in platforms dict """
-
-    # list all platform tmplated files here
-    # {% raw %}
-    platform_files = [
-        "{{cookiecutter.role_name}}/tasks/{{cookiecutter.platform}}.yml",
-        "{{cookiecutter.role_name}}/vars/{{cookiecutter.platform}}.yml",
-    ]
-    # {% endraw %}
-
-    # delete the unneded file generated by platform_files earlier
-    env = StrictEnvironment(context={"cookiecutter": CONTEXT})
-    for infile in platform_files:
-        outfile_tmpl = env.from_string(infile)
-        delete_file(outfile_tmpl.render({"cookiecutter": CONTEXT}))
-
-    platforms = list(CONTEXT["platforms"].keys())  # pylint: disable=E1136
-
-    # Combine Ubuntu and Debian as they're the same ansible_os_family
-    if "Ubuntu" in platforms and "Debian" not in platforms:
-        platforms.remove("Ubuntu")
-        platforms.append("Debian")
-
-    # Iterate over platforms creating files
-    for platform in platforms:
-
-        # assign platform name to cookiecutter.platform
-        CONTEXT.update({"platform": platform})
-
-        # build jinja2 environment
-        env = StrictEnvironment(
-            context={"cookiecutter": CONTEXT}, keep_trailing_newline=True,
-        )
-
-        # must be in template dir for generate_file to work
-        with utils.work_in(TEMPLATE_DIR):
-            env.loader = jinja2.FileSystemLoader(".")
-
-            for infile in platform_files:
-                ccg.generate_file(
-                    project_dir=PROJECT_DIR,
-                    infile=infile,
-                    context={"cookiecutter": CONTEXT},
-                    env=env,
-                )
-
-
 def delete_inactive_licenses():
 
     # get list of licenses written to output
@@ -104,5 +51,4 @@
 
 if __name__ == "__main__":
 
-    generate_platforms()
     delete_inactive_licenses()
