diff --git a/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-absent.yml b/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-absent.yml
new file mode 100644
index 0000000000000000000000000000000000000000..10976de17d346806866ec90f6ee5a0e6de41030c
--- /dev/null
+++ b/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-absent.yml
@@ -0,0 +1,11 @@
+---
+- name: Playbook to manage DNS forward zone
+  hosts: ipaserver
+  become: true
+  gather_facts: false
+
+  tasks:
+  # Ensure DNS zone is present
+  - ipadnsforwardzone:
+      ipaadmin_password: SomeADMINpassword
+      state: absent
diff --git a/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-present.yml b/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-present.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1970432fa9799fbb70ccab76bc9aeecb3505d6ee
--- /dev/null
+++ b/playbooks/dnsforwardzone/ensure-dnsforwardzone-is-present.yml
@@ -0,0 +1,16 @@
+---
+- name: Playbook to manage DNS forward zone
+  hosts: ipaserver
+  become: true
+  gather_facts: false
+
+  tasks:
+  # Ensure DNS zone is present
+  - ipadnsforwardzone:
+      ipaadmin_password: SomeADMINpassword
+      name: example.com
+      forwarders:
+        - ip_address: 8.8.8.8
+      forwardpolicy: first
+      skip_overlap_check: true
+      permission: yes
diff --git a/playbooks/dnsforwardzone/ensure-dnsforwardzone-with-forwarder-port.yml b/playbooks/dnsforwardzone/ensure-dnsforwardzone-with-forwarder-port.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c27767b5757a005e531a36dcdbf44c8d5d8e03cb
--- /dev/null
+++ b/playbooks/dnsforwardzone/ensure-dnsforwardzone-with-forwarder-port.yml
@@ -0,0 +1,14 @@
+---
+- name: Playbook to manage DNS forward zone
+  hosts: ipaserver
+  become: true
+  gather_facts: false
+
+  tasks:
+  # Ensure DNS zone is present
+  - ipadnsforwardzone:
+      ipaadmin_password: SomeADMINpassword
+      name: example.com
+      forwarders:
+        - ip_address: 192.168.100.123
+          port: 8063