summaryrefslogtreecommitdiff
path: root/manifests/a.pp
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/a.pp')
-rw-r--r--manifests/a.pp43
1 files changed, 43 insertions, 0 deletions
diff --git a/manifests/a.pp b/manifests/a.pp
new file mode 100644
index 0000000..d457413
--- /dev/null
+++ b/manifests/a.pp
@@ -0,0 +1,43 @@
+# = Definition: bind::a
+#
+# Creates an IPv4 record.
+#
+# Arguments:
+# *$zone*: Bind::Zone name
+# *$owner*: owner of the Resource Record
+# *$host*: target of the Resource Record
+# *$ttl*: Time to Live for the Resource Record. Optional.
+# *$ptr*: create the corresponding ptr record (default=false)
+#
+#
+define bind::a(
+ $zone,
+ $host,
+ $ensure = present,
+ $owner = false,
+ $ttl = false,
+ $ptr = false
+) {
+
+ bind::record {$name:
+ ensure => $ensure,
+ zone => $zone,
+ owner => $owner,
+ host => $host,
+ ttl => $ttl,
+ record_type => 'A',
+ }
+
+ if $ptr {
+ $arpa = inline_template("<%= require 'ipaddr'; IPAddr.new(host).reverse %>")
+ $arpa_zone = inline_template("<%= require 'ipaddr'; IPAddr.new(host).reverse.split('.')[1..-1].join('.') %>")
+
+ bind::ptr {"${arpa}.":
+ ensure => $ensure,
+ zone => $arpa_zone,
+ host => $name,
+ ttl => $ttl,
+ }
+ }
+
+}