define line( $file, $line, $ensure = 'present') {
case $ensure {
default : { err ( "unknown ensure value '${ensure}'" ) }
present: {
exec { "echo ${line} to ${file}":
command => "echo '${line}' >> '${file}'",
unless => "grep -qFx '${line}' '${file}'",
}
}
absent: {
exec { "remove the ${line} from ${file}":
command => "perl -ni -e 'print if \$_ ne \"${line}\n\";' '${file}'",
onlyif => "grep -qFx '${line}' '${file}'"
}
}
}
}
**** WORKS:
line { "add $name.pub to /home/$name/.ssh/authorized_keys":
line => "some string",
ensure => present,
require => File["/home/$name/.ssh"],
file => "/home/$name/.ssh/authorized_keys";
}
***** FAILS:
line { "add $name.pub to /home/$name/.ssh/authorized_keys":
line => file("/path/to/keys/$name.pub"),
ensure => present,
require => File["/home/$name/.ssh"],
file => "/home/$name/.ssh/authorized_keys";
}