Duas coisas:
Augeas
O Puppet integra-se bem com uma ferramenta chamada Augeas :
Augeas is a lovely tool that treats config files (well, anything really, but it’s mostly about config files) as trees of values. You then modify the tree as you like, and write the file back.
Para arquivos que o Augeas entende, é muito fácil fazer alterações programáticas sem ter que se preocupar com comentários, espaço em branco, análise ou qualquer outro detalhe. Além disso, o Augeas suporta o formato de arquivo sudoers .
Sudoers inclui
A partir do sudo versão 1.7.2, ele suporta uma diretiva includedir
, que permite especificar um diretório para estender sudoers. Os arquivos nesse diretório devem conter snippets de código sudoers válidos, e o sudo os lerá e usará exatamente como se tivessem sido incluídos no arquivo original. Eu faço uso disso no Puppet com um recurso personalizado:
define sudo-include( content ) {
file { "/etc/sudoers.d/$name":
content => $content,
mode => 0440,
user => root,
group => root,
}
}
[...]
sudo-include { "moreusers":
content => "\
joe ALL=(ALL) ALL
mike ALL=(ALL) NOPASSWD:ALL
"
}
Quando você usa o recurso sudo-include
, ele cria automaticamente o arquivo no lugar certo com as permissões corretas e tudo o que você precisa fazer é fornecer um nome e um conteúdo.