Report abuse

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";
                                }