diff --git a/.cookiecutter_params.json b/.cookiecutter_params.json
new file mode 100644
index 0000000..5572acf
--- /dev/null
+++ b/.cookiecutter_params.json
@@ -0,0 +1,24 @@
+{
+    "_template": "../cookiecutters/role",
+    "author": "Open Networking Foundation",
+    "company": "Open Networking Foundation",
+    "description": "Aether Edge Monitoring Agent",
+    "email": "support@opennetworking.org",
+    "issue_tracker_url": "https://jira.opennetworking.org/",
+    "license": "Apache-2.0",
+    "min_ansible_version": "2.9.5",
+    "molecule_privileged": "true",
+    "platform": "deleteme",
+    "platforms": {
+        "Ubuntu": [
+            "16.04",
+            "18.04"
+        ]
+    },
+    "role_defaults": {
+        "example_default1": "example_value1",
+        "example_default2": "example_value2"
+    },
+    "role_name": "edgemonagent",
+    "year": "2021"
+}
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..b7a1fee
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,5 @@
+[gerrit]
+host=gerrit.opencord.org
+port=29418
+project=ansible/role/edgemonagent.git
+defaultremote=origin
diff --git a/.reuse/dep5 b/.reuse/dep5
new file mode 100644
index 0000000..6ccf572
--- /dev/null
+++ b/.reuse/dep5
@@ -0,0 +1,5 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: .cookiecutter_params.json VERSION .gitreview
+Copyright: 2021 Open Networking Foundation
+License: Apache-2.0
diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/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/Makefile b/Makefile
new file mode 100644
index 0000000..9e83501
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,45 @@
+# edgemonagent Makefile
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+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 black pylint ## 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/*/*
+
+black:
+	black --check files/*py
+
+pylint:
+	pylint files/*py
+
+license: ## Check license with the reuse tool
+	reuse --version
+	reuse --root . lint
+
+help: ## Print help for each target
+	@echo edgemonagent test targets
+	@echo
+	@grep '^[[:alnum:]_-]*:.* ##' $(MAKEFILE_LIST) \
+    | sort | awk 'BEGIN {FS=":.* ## "}; {printf "%-25s %s\n", $$1, $$2};'
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..169ea53
--- /dev/null
+++ b/README.md
@@ -0,0 +1,29 @@
+<!--
+SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+SPDX-License-Identifier: Apache-2.0
+--!>
+# edgemonagent
+
+Aether Edge Monitoring Agent
+
+## Requirements
+
+Minimum ansible version: 2.9.5
+
+## Defaults
+
+
+## Example Playbook
+
+```yaml
+- hosts: all
+  roles:
+    - edgemonagent
+
+```
+
+## License and Author
+
+© 2021 Open Networking Foundation <support@opennetworking.org>
+
+License: Apache-2.0
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..c0ab82c
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.0.1-dev
diff --git a/defaults/main.yml b/defaults/main.yml
new file mode 100644
index 0000000..f757c24
--- /dev/null
+++ b/defaults/main.yml
@@ -0,0 +1,23 @@
+---
+# edgemonagent defaults/main.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+# unix username/groupname
+edgemonagent_username: "edgemonagent"
+edgemonagent_groupname: "edgemonagent"
+edgemonagent_comment: "Aether Edge Monitoring Agent"
+
+# directories
+edgemonagent_dir: "/opt/edgemonagent"
+
+# environmental vars set using systemd
+edgemonagent_env_vars:
+  EMA_EDGE_NAME: "ace-sample"
+  EMA_MODEM_PORT: "/dev/ttyACM0"
+  EMA_MODEM_BAUD: 115200
+  EMA_MODEM_IP_ADDR: "192.168.0.1"
+  EMA_PING_TO: "1.1.1.1"
+  EMA_REPORT_URL: "https://monitoring.aetherproject.org/edges"
+  EMA_REPORT_INTERVAL: 180
diff --git a/files/edge_monitoring_agent_modem.py b/files/edge_monitoring_agent_modem.py
new file mode 100644
index 0000000..f81da32
--- /dev/null
+++ b/files/edge_monitoring_agent_modem.py
@@ -0,0 +1,264 @@
+#!/usr/bin/env python3
+
+# Copyright 2020-present Open Networking Foundation
+#
+# 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
+
+import sys
+import os
+import json
+import logging
+import enum
+import requests
+import time
+import serial
+import subprocess
+from collections import namedtuple
+
+"""
+"Simple" script that checks Aether network operational status periodically
+by controlling the attached 4G/LTE modem with AT commands and
+report the result to the central monitoring server.
+"""
+
+
+CONF = json.loads(
+    open(os.getenv("CONFIG_FILE", "./config.json")).read(),
+    object_hook=lambda d: namedtuple("X", d.keys())(*d.values()),
+)
+
+logging.basicConfig(
+    filename=CONF.log_file,
+    format="%(asctime)s [%(levelname)s] %(message)s",
+    level=logging.ERROR,
+)
+
+report = {
+    "name": CONF.edge_name,
+    "status": {"control_plane": None, "user_plane": None},
+    "speedtest": {
+        "ping": {"dns": {"min": None, "avg": None, "max": None, "stddev": None}}
+    },
+}
+
+
+class State(enum.Enum):
+    error = "-1"
+    disconnected = "0"
+    connected = "1"
+
+    @classmethod
+    def has_value(cls, value):
+        return value in cls._value2member_map_
+
+
+class Modem:
+    log = logging.getLogger("aether_edge_monitoring.Modem")
+
+    read_timeout = 0.1
+
+    def __init__(self, port, baudrate):
+        self.port = port
+        self.baudrate = baudrate
+        self._response = None
+
+    def connect(self):
+        self.serial = serial.Serial(port=self.port, baudrate=self.baudrate, timeout=1)
+
+    def _write(self, command):
+        if self.serial.inWaiting() > 0:
+            self.serial.flushInput()
+
+        self._response = b""
+
+        self.serial.write(bytearray(command + "\r", "ascii"))
+        read = self.serial.inWaiting()
+        while True:
+            if read > 0:
+                self._response += self.serial.read(read)
+            else:
+                time.sleep(self.read_timeout)
+            read = self.serial.inWaiting()
+            if read == 0:
+                break
+        return self._response.decode("ascii").replace("\r\n", " ")
+
+    def write(self, command, wait_resp=True):
+        response = self._write(command)
+        self.log.debug("%s: %s", command, response)
+
+        if wait_resp and "ERROR" in response:
+            return False, None
+        return True, response
+
+    def is_connected(self):
+        success, result = self.write("AT+CGATT?")
+        if not success or "CGATT:" not in result:
+            return State.error
+        state = result.split("CGATT:")[1].split(" ")[0]
+        return State(state)
+
+    def close(self):
+        self.serial.close()
+
+
+def get_control_plane_state(modem):
+    # Delete the existing session
+    # "echo" works more stable than serial for this action
+    # success, result = modem.write('AT+CFUN=0')
+    logging.debug("echo 'AT+CFUN=0' > " + CONF.modem.port)
+    success = os.system("echo 'AT+CFUN=0' > " + CONF.modem.port)
+    logging.debug("result: %s", success)
+    if success is not 0:
+        msg = "Write 'AT+CFUN=0' failed"
+        logging.error(msg)
+        return State.error, msg
+
+    # Wait until the modem is fully disconnected
+    retry = 0
+    state = None
+    while retry < 5:
+        state = modem.is_connected()
+        if state is State.disconnected:
+            break
+        time.sleep(1)
+        retry += 1
+
+    # Consider the modem is not responding if disconnection failed
+    if state is not State.disconnected:
+        msg = "Failed to disconnect."
+        logging.error(msg)
+        return State.error, msg
+
+    time.sleep(2)
+    # Create a new session
+    # "echo" works more stable than serial for this action
+    # success, result = modem.write('AT+CGATT=1')
+    logging.debug("echo 'AT+CFUN=1' > " + CONF.modem.port)
+    success = os.system("echo 'AT+CFUN=1' > " + CONF.modem.port)
+    logging.debug("result: %s", success)
+    if success is not 0:
+        msg = "Write 'AT+CFUN=1' failed"
+        logging.error(msg)
+        return State.error, msg
+
+    # Give 10 sec for the modem to be fully connected
+    retry = 0
+    while retry < 30:
+        state = modem.is_connected()
+        if state is State.connected:
+            break
+        time.sleep(1)
+        retry += 1
+    # CGATT sometimes returns None
+    if state is State.error:
+        state = State.disconnected
+
+    time.sleep(2)
+    return state, None
+
+
+def get_user_plane_state(modem):
+    resp = os.system("ping -c 3 " + CONF.ips.user_plane_ping_test + ">/dev/null 2>&1")
+    return State.connected if resp is 0 else State.disconnected, None
+
+
+def run_ping_test(ip, count):
+    """
+    Runs the ping test
+    Input: IP to ping, # times to ping
+    Returns: dict of the min/avg/max/stddev numbers from the ping command result
+    """
+    result = {"min": 0.0, "avg": 0.0, "max": 0.0, "stddev": 0.0}
+    try:
+        pingResult = (
+            subprocess.check_output(
+                "ping -c " + str(count) + " " + ip + " | tail -1 | awk '{print $4}'",
+                shell=True,
+            )
+            .decode("UTF-8")
+            .split("/")
+        )
+        result = {
+            "min": float(pingResult[0]),
+            "avg": float(pingResult[1]),
+            "max": float(pingResult[2]),
+            "stddev": float(pingResult[3]),
+        }
+    except Exception as e:
+        logging.error("Ping test failed for " + ip + ": %s", e)
+    return result
+
+
+def get_ping_test(modem):
+    """
+    Each ping test result saves the min/avg/max/stddev to dict.
+    1) Performs ping test to Google Public DNS for 10 iterations.
+    2) # TODO: Performs ping to device on network.
+    """
+    speedtest_ping = {}
+    speedtest_ping["dns"] = run_ping_test(CONF.ips.speedtest_ping_dns, 10)
+    return speedtest_ping
+
+
+def report_status(cp_state, up_state, speedtest_ping):
+    report["status"]["control_plane"] = cp_state.name
+    report["status"]["user_plane"] = up_state.name
+    report["speedtest"]["ping"] = speedtest_ping
+
+    logging.info("Sending report %s", report)
+    try:
+        result = requests.post(CONF.report_url, json=report)
+    except requests.exceptions.ConnectionError:
+        logging.error("Failed to report for %s", e)
+        pass
+    try:
+        result.raise_for_status()
+    except requests.exceptions.HTTPError as e:
+        logging.error("Failed to report for %s", e)
+        pass
+
+
+def main():
+    modem = Modem(CONF.modem.port, CONF.modem.baud)
+    try:
+        modem.connect()
+    except serial.serialutil.SerialException as e:
+        logging.error("Failed to connect the modem for %s", e)
+        sys.exit(1)
+
+    for ip in CONF.ips:
+        success = os.system(
+            "sudo ip route replace {}/32 via {}".format(ip, CONF.modem.ip_addr)
+        )
+        if success is not 0:
+            logging.error("Failed to add test routing to " + ip)
+            sys.exit(1)
+
+    while True:
+        cp_state, cp_msg = get_control_plane_state(modem)
+        up_state, up_msg = get_user_plane_state(modem)
+        speedtest_ping = get_ping_test(modem)
+
+        if cp_state is State.error:
+            logging.error("Modem is in error state.")
+            sys.exit(1)
+
+        report_status(cp_state, up_state, speedtest_ping)
+        time.sleep(CONF.report_interval)
+
+    modem.close()
+
+
+if __name__ == "__main__":
+    main()
diff --git a/handlers/main.yml b/handlers/main.yml
new file mode 100644
index 0000000..c8d5bcb
--- /dev/null
+++ b/handlers/main.yml
@@ -0,0 +1,16 @@
+---
+# edgemonagent handlers/main.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: start-edgemonagent
+  service:
+    name: "edgemonagent"
+    state: "started"
+    enabled: true
+
+- name: restart-edgemonagent
+  service:
+    name: "edgemonagent"
+    state: "restarted"
diff --git a/meta/main.yml b/meta/main.yml
new file mode 100644
index 0000000..2222178
--- /dev/null
+++ b/meta/main.yml
@@ -0,0 +1,27 @@
+---
+# edgemonagent meta/main.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+galaxy_info:
+  author: Open Networking Foundation
+  description: Aether Edge Monitoring Agent
+  company: Open Networking Foundation
+
+  issue_tracker_url: https://jira.opennetworking.org/
+
+  license: Apache-2.0
+
+  min_ansible_version: 2.9.5
+
+  platforms:
+    - name: Ubuntu
+      versions:
+        - "16.04"
+        - "18.04"
+
+  galaxy_tags:
+    - edgemonagent
+
+dependencies: []
diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml
new file mode 100644
index 0000000..aeba819
--- /dev/null
+++ b/molecule/default/converge.yml
@@ -0,0 +1,12 @@
+---
+# edgemonagent molecule/default/verify.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: Converge
+  hosts: all
+  tasks:
+    - name: "Include edgemonagent"
+      include_role:
+        name: "edgemonagent"
diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml
new file mode 100644
index 0000000..2e1fb82
--- /dev/null
+++ b/molecule/default/molecule.yml
@@ -0,0 +1,26 @@
+---
+# edgemonagent molecule/default/molecule.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+dependency:
+  name: galaxy
+driver:
+  name: docker
+platforms:
+  - name: "debian-10-priv"
+    image: "quay.io/paulfantom/molecule-systemd:debian-10"
+    privileged: true
+    volumes:
+      - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
+provisioner:
+  name: ansible
+  playbooks:
+    prepare: prepare.yml
+  inventory:
+    host_vars:
+      debian-10-priv:
+        ansible_python_interpreter: /usr/bin/python3
+verifier:
+  name: ansible
diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml
new file mode 100644
index 0000000..cbe1603
--- /dev/null
+++ b/molecule/default/verify.yml
@@ -0,0 +1,12 @@
+---
+# edgemonagent molecule/default/verify.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: Verify
+  hosts: all
+  tasks:
+  - name: example assertion
+    assert:
+      that: true
diff --git a/tasks/Debian.yml b/tasks/Debian.yml
new file mode 100644
index 0000000..c37b6cd
--- /dev/null
+++ b/tasks/Debian.yml
@@ -0,0 +1,36 @@
+---
+# edgemonagent tasks/Debian.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: Install edge-mon-agent prerequsites
+  apt:
+    name:
+      - "python3"
+      - "python3-serial"
+      - "python3-requests"
+    state: "present"
+    update_cache: true
+    cache_valid_time: 3600
+
+- name: Create environment config for edge-mon-agent service
+  template:
+    src: "default.edge-mon-agent.j2"
+    dest: "/etc/default/edge-mon-agent"
+    owner: "root"
+    group: "root"
+    mode: "0640"
+  notify:
+    - restart-edgemonagent
+
+- name: Create systemd service unit files for edge-mon-agent service
+  template:
+    src: "edge-mon-agent.service.j2"
+    dest: "/etc/systemd/system/edge-mon-agent.service"
+    owner: "root"
+    group: "root"
+    mode: "0644"
+  notify:
+    - start-edgemonagent
+    - restart-edgemonagent
diff --git a/tasks/main.yml b/tasks/main.yml
new file mode 100644
index 0000000..cb5ca14
--- /dev/null
+++ b/tasks/main.yml
@@ -0,0 +1,50 @@
+---
+# edgemonagent tasks/main.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+# possibly check for
+
+- name: include OS-specific vars
+  include_vars: "{{ ansible_os_family }}.yml"
+
+- name: include OS-specific tasks
+  include_tasks: "{{ ansible_os_family }}.yml"
+
+- name: Create group for edgemonagent
+  group:
+    name: "{{ edgemonagent_groupname }}"
+
+- name: Create user for edgemonagent
+  user:
+    name: "{{ edgemonagent_username }}"
+    group: "{{ edgemonagent_groupname }}"
+    comment: "{{ edgemonagent_comment }}"
+    shell: "{{ edgemonagent_shell }}"
+    home: "{{ edgemonagent_dir }}"
+    create_home: no  # yamllint disable-line rule:truthy
+    system: true
+    password_lock: true
+
+- name: Add edgemonagent user to group that grants serial port access
+  user:
+    name: "{{ edgemonagent_username }}"
+    groups: "{{ edgemonagent_serial_group }}"
+    append: true
+
+- name: Create directory for edgemonagent
+  file:
+    path: "{{ edgemonagent_dir }}"
+    state: directory
+    owner: "{{ edgemonagent_username }}"
+    group: "{{ edgemonagent_groupname }}"
+    mode: "0755"
+
+- name: Copy over edgemonagent script
+  copy:
+    src: "edge_monitoring_agent_modem.py"
+    dest: "{{ edgemonagent_dir }}/edge_monitoring_agent_modem.py"
+    owner: "{{ edgemonagent_username }}"
+    group: "{{ edgemonagent_groupname }}"
+    mode: "0755"
diff --git a/templates/default.edge-mon-agent.j2 b/templates/default.edge-mon-agent.j2
new file mode 100644
index 0000000..b0c3319
--- /dev/null
+++ b/templates/default.edge-mon-agent.j2
@@ -0,0 +1,10 @@
+{#
+SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+SPDX-License-Identifier: Apache-2.0
+#}
+# /etc/default/edge-mon-agent
+# {{ ansible_managed }}
+{% for key, val in edgemonagent_env_vars.items() %}
+{{ key }}="{{ val }}"
+{% endfor %}
+
diff --git a/templates/edge-mon-agent.service.j2 b/templates/edge-mon-agent.service.j2
new file mode 100644
index 0000000..8152733
--- /dev/null
+++ b/templates/edge-mon-agent.service.j2
@@ -0,0 +1,28 @@
+{#
+SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+SPDX-License-Identifier: Apache-2.0
+#}
+# /etc/systemd/system/edge-mon-agent.service
+# {{ ansible_managed }}
+[Unit]
+Description=Aether Edge Monitoring Agent
+After=network-online.target
+
+[Service]
+Type=simple
+
+User={{ edgemonagent_username }}
+Group={{ edgemonagent_groupname }}
+
+EnvironmentFile=/etc/default/edge-mon-agent
+WorkingDirectory={{ edgemonagent_dir }}
+
+ExecStart=/usr/bin/python3 edge_monitoring_agent_modem.py
+ExecStartPre=/bin/sleep 5
+
+Restart=on-failure
+RestartSec=30
+PrivateTmp=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/vars/Debian.yml b/vars/Debian.yml
new file mode 100644
index 0000000..b498df3
--- /dev/null
+++ b/vars/Debian.yml
@@ -0,0 +1,14 @@
+---
+# edgemonagent vars/Debian.yml
+#
+# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+#
+# NOTE: Only put platform/OS-specific variables in this file.
+# Put all other variables in the 'defaults/main.yml' file.
+
+# group with serial port access
+edgemonagent_serial_group: "dialout"
+
+# shell used by the edgemonagent user (non-interactive)
+edgemonagent_shell: "/usr/sbin/nologin"
