Initial commit of NSD ansible role

Change-Id: I97c6455f2513604b86156017b5b7b1d769e7bbc0
diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml
new file mode 100644
index 0000000..e389b8f
--- /dev/null
+++ b/molecule/default/converge.yml
@@ -0,0 +1,28 @@
+---
+# nsd molecule/default/verify.yml
+#
+# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: Converge
+  hosts: all
+  vars:
+    dns_zones:
+      example.com:
+        serial: 20201102
+        ip_range: 192.168.1.1/24
+        ns:
+          - gw.example.com.
+        a:
+          gw: 192.168.1.1
+          host1: 192.168.1.2
+          host2: 192.168.1.3
+          printer: 192.168.1.4
+        cname:
+          lpr: printer.example.com.
+        srv: {}
+        txt: {}
+  tasks:
+    - name: "Include nsd"
+      include_role:
+        name: "nsd"
diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml
new file mode 100644
index 0000000..f96dd10
--- /dev/null
+++ b/molecule/default/molecule.yml
@@ -0,0 +1,33 @@
+---
+# nsd molecule/default/molecule.yml
+#
+# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+dependency:
+  name: galaxy
+driver:
+  name: docker
+platforms:
+  - name: "ubuntu-18.04-priv"
+    image: "quay.io/paulfantom/molecule-systemd:ubuntu-18.04"
+    privileged: true
+    volumes:
+      - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
+  - 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
+      ubuntu-18.04-priv:
+        ansible_python_interpreter: /usr/bin/python3
+verifier:
+  name: ansible
diff --git a/molecule/default/prepare.yml b/molecule/default/prepare.yml
new file mode 100644
index 0000000..311b712
--- /dev/null
+++ b/molecule/default/prepare.yml
@@ -0,0 +1,15 @@
+---
+# nsd molecule/default/prepare.yml
+#
+# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: Prepare
+  hosts: all
+
+  tasks:
+  - name: Add dnsutils so dig works in tests
+    apt:
+      name: "dnsutils"
+      state: "present"
+      update_cache: true
diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml
new file mode 100644
index 0000000..a4851a1
--- /dev/null
+++ b/molecule/default/verify.yml
@@ -0,0 +1,32 @@
+---
+# nsd molecule/default/verify.yml
+#
+# SPDX-FileCopyrightText: © 2020 Open Networking Foundation <support@opennetworking.org>
+# SPDX-License-Identifier: Apache-2.0
+
+- name: Verify
+  hosts: all
+  tasks:
+
+    # NOTE: Tests do not use the ansible dig lookup, because that executes on
+    # the host running ansible-playbook, not the target host.
+
+    # Lint flags the checks as they execute every time, skip this with 'noqa 301'
+
+    - name: Check for A record
+      command:  # noqa 301
+        cmd: "dig gw.example.com @127.0.0.1"
+      register: a_dig
+      failed_when: "'gw.example.com.\t\t3600\tIN\tA\t192.168.1.1' not in a_dig.stdout"
+
+    - name: Check for NS record
+      command:  # noqa 301
+        cmd: "dig ns example.com @127.0.0.1"
+      register: ns_dig
+      failed_when: "'example.com.\t\t3600\tIN\tNS\tgw.example.com.' not in ns_dig.stdout"
+
+    - name: Check for CNAME record
+      command:  # noqa 301
+        cmd: "dig lpr.example.com @127.0.0.1"
+      register: cn_dig
+      failed_when: "'lpr.example.com.\t3600\tIN\tCNAME\tprinter.example.com.' not in cn_dig.stdout"