From 0b3d92ae7d92e00192ffc5f3a058299fe0c00f3d Mon Sep 17 00:00:00 2001
From: "A. Karl Kornel" <akkornel@stanford.edu>
Date: Tue, 23 Aug 2016 13:13:36 -0700
Subject: [PATCH] postfix::sender: Use file_line instead of exec for writing
 the line

---
 manifests/postfix/sender.pp | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/manifests/postfix/sender.pp b/manifests/postfix/sender.pp
index a60f721..e0fb9c6 100644
--- a/manifests/postfix/sender.pp
+++ b/manifests/postfix/sender.pp
@@ -21,26 +21,26 @@ define base::postfix::sender(
   $file = '/etc/postfix/senders'
 ) {
   $pattern = "'^${name}'"
+  $line = "${name} ${ensure}"
+  $file_line_ensure = $ensure ? {
+    'absent' => 'absent',
+    default  => 'present',
+  }
+
+  file_line { "add-sender-${name}":
+    ensure  => $file_line_ensure,
+    path    => $file,
+    line    => $line,
+    require => Package['postfix'],
+    notify  => Exec["postmap hash:${file}"],
+  }
+
   case $ensure {
-    'absent': {
-      exec { "rm-sender-${name}":
-        command => "sed -i -e '/^${name}/d' ${file}",
-        onlyif  => "grep ${pattern} ${file}",
-        notify  => Exec["postmap hash:${file}"]
-      }
-    }
     default: {
-      $line = "${name} ${ensure}"
-      exec { "add-sender-${name}":
-        command => "echo '${line}' >> ${file}",
-        unless  => "grep ${pattern} ${file}",
-        require => Package['postfix'],
-        notify  => Exec["postmap hash:${file}"],
-      }
       exec { "fix-sender-${name}":
         command => "sed -i -e 's/^${name}..*\$/${line}/' ${file}",
         unless  => "grep '^${line}\$' ${file}",
-        require => Exec["add-sender-${name}"],
+        require => File_line["add-sender-${name}"],
         notify  => Exec["postmap hash:${file}"],
       }
     }
-- 
GitLab