diff --git a/cookiecutters/role/README.md b/cookiecutters/role/README.md
new file mode 100644
index 0000000..cfd29e1
--- /dev/null
+++ b/cookiecutters/role/README.md
@@ -0,0 +1,14 @@
+<!--
+SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+SPDX-License-Identifier: Apache-2.0
+--!>
+
+# Cookiecutter for Ansible roles
+
+Goals of this cookiecutter
+
+- Creates sepearate per-platform includes for vars/tasks
+- Passes both ansible-lint and yamllint
+- Passes reuse licensing check
+- Has tests runnable with Molecule 3
+- Has a Makefile with lint and test targets, and passes by default
diff --git a/cookiecutters/role/cookiecutter.json b/cookiecutters/role/cookiecutter.json
new file mode 100644
index 0000000..a5c1aa7
--- /dev/null
+++ b/cookiecutters/role/cookiecutter.json
@@ -0,0 +1,25 @@
+{
+    "role_name": "roledefault",
+    "description": "Description for README and Galaxy",
+    "issue_tracker_url": "https://jira.opennetworking.org/",
+
+    "role_defaults":{
+      "example_default1":"example_value1",
+      "example_default2":"example_value2"
+    },
+
+    "platform": "deleteme",
+    "platforms":{
+      "Ubuntu": ["16.04","18.04"]
+    },
+
+    "author": "Open Networking Foundation",
+    "email": "support@opennetworking.org",
+    "company": "Open Networking Foundation",
+
+    "year": "{% now 'utc', '%Y' %}",
+    "license": ["Apache-2.0", "BSD-2-Clause", "MIT"],
+
+    "min_ansible_version": "2.9.5",
+    "molecule_privileged": ["true", "false"]
+}
diff --git a/cookiecutters/role/hooks/post_gen_project.py b/cookiecutters/role/hooks/post_gen_project.py
new file mode 100644
index 0000000..49667ae
--- /dev/null
+++ b/cookiecutters/role/hooks/post_gen_project.py
@@ -0,0 +1,108 @@
+#!/usr/bin/env python3
+#
+# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+# role/hooks/post_gen_project.py
+# Generates platform-specific files for ansible roles
+
+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
+
+# Tickets related to what thei above
+# https://github.com/cookiecutter/cookiecutter/issues/474
+# https://github.com/cookiecutter/cookiecutter/issues/851
+
+# other implementations
+# https://github.com/ckan/ckan/blob/master/contrib/cookiecutter/ckan_extension/hooks/post_gen_project.py
+
+# CWD is output dir
+PROJECT_DIR = os.path.realpath(os.path.join("..", os.path.curdir))
+
+# Hack, but 'cookiecutter._template' is a relative path
+TEMPLATE_DIR = os.path.realpath(
+    os.path.join(os.path.curdir, "../{{ cookiecutter._template }}")
+)
+
+# script is rendered as a template, so this will be filled in with the
+# cookiecutter dict, which is why noqa is needed.
+CONTEXT = {{cookiecutter | jsonify}}  # noqa: F821, E227
+
+
+def delete_file(filepath):
+    """ 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())
+
+    # 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
+    license_dir = os.path.join(os.path.curdir, "LICENSES")
+    license_files = os.listdir(license_dir)
+
+    # delete any files that don't start with the license identifier
+    for licfile in license_files:
+        if not licfile.startswith(CONTEXT["license"]):
+            os.remove(os.path.join(os.path.curdir, "LICENSES", licfile))
+
+
+if __name__ == "__main__":
+
+    generate_platforms()
+    delete_inactive_licenses()
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/.cookiecutter_params.json" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/.cookiecutter_params.json"
new file mode 100644
index 0000000..b07ca2a
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/.cookiecutter_params.json"
@@ -0,0 +1 @@
+{{ cookiecutter | jsonify }}
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/.reuse/dep5" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/.reuse/dep5"
new file mode 100644
index 0000000..f488d8a
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/.reuse/dep5"
@@ -0,0 +1,5 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: .cookiecutter_params.json LICENSE .gitreview
+Copyright: {{ cookiecutter.year }} {{ cookiecutter.author }}
+License: {{ cookiecutter.license }}
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/LICENSES/Apache-2.0.txt" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/LICENSES/Apache-2.0.txt"
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/LICENSES/Apache-2.0.txt"
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/LICENSES/BSD-2-Clause.txt" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/LICENSES/BSD-2-Clause.txt"
new file mode 100644
index 0000000..232c21f
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/LICENSES/BSD-2-Clause.txt"
@@ -0,0 +1,25 @@
+BSD 2-Clause License
+
+Copyright (c) {{ cookiecutter.year }}, {{ cookiecutter.author }}
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/LICENSES/MIT.txt" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/LICENSES/MIT.txt"
new file mode 100644
index 0000000..6caffc7
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/LICENSES/MIT.txt"
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) {{ cookiecutter.year }} {{ cookiecutter.author }}
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/Makefile" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/Makefile"
new file mode 100644
index 0000000..1c1bb02
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/Makefile"
@@ -0,0 +1,39 @@
+# {{ cookiecutter.role_name }} Makefile
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
+
+SHELL = bash -eu -o pipefail
+
+.DEFAULT_GOAL := help
+.PHONY: test lint yamllint ansiblelint license help
+
+test: ## run tests on the playbook with molecule
+	molecule --version
+	molecule test
+
+lint: yamllint ansiblelint ## run all lint checks
+
+# all YAML files
+YAML_FILES ?= $(shell find . -type f \( -name '*.yaml' -o -name '*.yml' \) -print )
+
+yamllint: ## lint check with yamllint
+	yamllint --version
+	yamllint \
+    -d "{extends: default, rules: {line-length: {max: 99}}}" \
+    -s $(YAML_FILES)
+
+ansiblelint: ## lint check with ansible-lint
+	ansible-lint --version
+	ansible-lint -v .
+	ansible-lint -v molecule/*/*
+
+license: ## Check license with the reuse tool
+	reuse --version
+	reuse --root . lint
+
+help: ## Print help for each target
+	@echo {{ cookiecutter.role_name }} test targets
+	@echo
+	@grep '^[[:alnum:]_-]*:.* ##' $(MAKEFILE_LIST) \
+    | sort | awk 'BEGIN {FS=":.* ## "}; {printf "%-25s %s\n", $$1, $$2};'
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/README.md" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/README.md"
new file mode 100644
index 0000000..dca0c0c
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/README.md"
@@ -0,0 +1,38 @@
+<!--
+SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+SPDX-License-Identifier: {{ cookiecutter.license }}
+--!>
+# {{ cookiecutter.role_name }}
+
+{{ cookiecutter.description }}
+
+## Requirements
+
+Minimum ansible version: {{ cookiecutter.min_ansible_version }}
+
+## Defaults
+
+List of default values for variables:
+
+{%- for key, val in cookiecutter.role_defaults|dictsort %}
+* `{{ key }}: {{ val }}`
+{%- endfor %}
+
+## Example Playbook
+
+```yaml
+- hosts: all
+  vars:
+{%- for key, val in cookiecutter.role_defaults|dictsort %}
+    {{ key }}: {{ val }}
+{%- endfor %}
+  roles:
+    - {{ cookiecutter.role_name }}
+
+```
+
+## License and Author
+
+© {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+
+License: {{ cookiecutter.license }}
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/VERSION" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/VERSION"
new file mode 100644
index 0000000..c0ab82c
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/VERSION"
@@ -0,0 +1 @@
+0.0.1-dev
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/defaults/main.yml" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/defaults/main.yml"
new file mode 100644
index 0000000..c418946
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/defaults/main.yml"
@@ -0,0 +1,8 @@
+---
+# {{ cookiecutter.role_name }} defaults/main.yml
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
+{% for key, val in cookiecutter.role_defaults|dictsort %}
+{{ key }}: {{ val }}
+{%- endfor %}
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/handlers/main.yml" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/handlers/main.yml"
new file mode 100644
index 0000000..b904b65
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/handlers/main.yml"
@@ -0,0 +1,5 @@
+---
+# {{ cookiecutter.role_name }} handlers/main.yml
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/meta/main.yml" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/meta/main.yml"
new file mode 100644
index 0000000..fa586ab
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/meta/main.yml"
@@ -0,0 +1,30 @@
+---
+# {{ cookiecutter.role_name }} meta/main.yml
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
+
+galaxy_info:
+  author: {{ cookiecutter.author }}
+  description: {{ cookiecutter.description }}
+  company: {{ cookiecutter.company }}
+
+  issue_tracker_url: {{ cookiecutter.issue_tracker_url }}
+
+  license: {{ cookiecutter.license }}
+
+  min_ansible_version: {{ cookiecutter.min_ansible_version }}
+
+  platforms:
+{%- for platform, versions in cookiecutter.platforms.items() %}
+    - name: {{ platform }}
+      versions:
+{%- for version in versions %}
+        - "{{ version }}"
+{%- endfor %}
+{%- endfor %}
+
+  galaxy_tags:
+    - {{ cookiecutter.role_name }}
+
+dependencies: []
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/molecule/default/converge.yml" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/molecule/default/converge.yml"
new file mode 100644
index 0000000..00e5fa4
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/molecule/default/converge.yml"
@@ -0,0 +1,12 @@
+---
+# {{ cookiecutter.role_name }} molecule/default/verify.yml
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
+
+- name: Converge
+  hosts: all
+  tasks:
+    - name: "Include {{ cookiecutter.role_name }}"
+      include_role:
+        name: "{{ cookiecutter.role_name }}"
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/molecule/default/molecule.yml" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/molecule/default/molecule.yml"
new file mode 100644
index 0000000..4264731
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/molecule/default/molecule.yml"
@@ -0,0 +1,30 @@
+---
+# {{ cookiecutter.role_name }} molecule/default/molecule.yml
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
+
+dependency:
+  name: galaxy
+driver:
+  name: docker
+platforms:
+{%- for platform, versions in cookiecutter.platforms.items() %}
+{%- set platform = platform | lower %}
+{%- for version in versions %}
+{%- if not cookiecutter.molecule_privileged %}
+  - name: "{{ platform }}-{{ version }}"
+    image: "{{ platform }}:{{ version }}"
+{%- else %}{# privileged, running custom images generated by: https://github.com/paulfantom/dockerfiles #}
+  - name: "{{ platform }}-{{ version }}-priv"
+    image: "quay.io/paulfantom/molecule-systemd:{{ platform }}-{{ version }}"
+    privileged: true
+    volumes:
+      - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
+{%- endif %}
+{%- endfor %}
+{%- endfor %}
+provisioner:
+  name: ansible
+verifier:
+  name: ansible
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/molecule/default/verify.yml" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/molecule/default/verify.yml"
new file mode 100644
index 0000000..285b2d7
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/molecule/default/verify.yml"
@@ -0,0 +1,12 @@
+---
+# {{ cookiecutter.role_name }} molecule/default/verify.yml
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
+
+- name: Verify
+  hosts: all
+  tasks:
+  - name: example assertion
+    assert:
+      that: true
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/tasks/main.yml" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/tasks/main.yml"
new file mode 100644
index 0000000..7cced3b
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/tasks/main.yml"
@@ -0,0 +1,12 @@
+---
+# {{ cookiecutter.role_name }} tasks/main.yml
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
+{% raw %}
+- name: include OS-specific vars
+  include_vars: "{{ ansible_os_family }}.yml"
+
+- name: include OS-specific tasks
+  include_tasks: "{{ ansible_os_family }}.yml"
+{% endraw -%}
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/tasks/\173\173cookiecutter.platform\175\175.yml" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/tasks/\173\173cookiecutter.platform\175\175.yml"
new file mode 100644
index 0000000..1b4df91
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/tasks/\173\173cookiecutter.platform\175\175.yml"
@@ -0,0 +1,5 @@
+---
+# {{ cookiecutter.role_name }} tasks/{{ cookiecutter.platform }}.yml
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
diff --git "a/cookiecutters/role/\173\173cookiecutter.role_name\175\175/vars/\173\173cookiecutter.platform\175\175.yml" "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/vars/\173\173cookiecutter.platform\175\175.yml"
new file mode 100644
index 0000000..feed32c
--- /dev/null
+++ "b/cookiecutters/role/\173\173cookiecutter.role_name\175\175/vars/\173\173cookiecutter.platform\175\175.yml"
@@ -0,0 +1,8 @@
+---
+# {{ cookiecutter.role_name }} vars/{{ cookiecutter.platform }}.yml
+#
+# SPDX-FileCopyrightText: © {{ cookiecutter.year }} {{ cookiecutter.author }} <{{ cookiecutter.email }}>
+# SPDX-License-Identifier: {{ cookiecutter.license }}
+#
+# NOTE: Only put platform/OS-specific variables in this file.
+# Put all other variables in the 'defaults/main.yml' file.
