Como podemos garantir que um usuário que não seja realizado não exista no nó do fantoche?

1

Declaramos todos os nossos usuários como recursos virtuais. Por exemplo:

@user { 'belmin':
    uid => 2001
    comment => 'Belmin Fernandez',
    groups => ['sysadmins'],
}

Às vezes, temporariamente realize um usuário para um nó:

node web1 {
    realize User['belmin']
    (...)
}

Estou investigando maneiras de garantir que os usuários que não são realizados no nó não existam nesse servidor. A primeira maneira que vem à mente é fazer isso quando o realize temporário é removido:

node web1 {
    User <| title == 'belmin' |> {
       ensure => absent,
    }
}

No entanto, isso pode ser facilmente omitido acidentalmente por alguém ao fazer a remoção do realize temporário. Alguma outra sugestão mais elegante?

    
por Belmin Fernandez 17.09.2014 / 14:45

2 respostas

0

Enquanto escrevia a pergunta, pensei em fazer algo assim em uma aula:

class our_users {
    user { 'belmin':
        ensure  => absent,
        uid     => 2001
        comment => 'Belmin Fernandez',
        groups  => ['sysadmins'],
    }
}

E então, no nó:

node web1 {
    include our_users
    User <| title == 'belmin'|> {
        ensure => present,
    }
}

node web2 {
    include our_users
}

Então, qualquer nó que não tenha o usuário percebido e o atributo ensure sobrescrito terá esse usuário assegurado como absent .

Eu não estou completamente certo de que isso funcionará, mas colocá-lo lá enquanto eu testo no caso de haver uma fraqueza / problema com ele que eu não detecto.

    
por 17.09.2014 / 14:52
1

O Puppet tem um meio de remover todos os usuários que não são gerenciados explicitamente. Isso inclui usuários virtuais que não estão se realizando.

resources {
    'user':
        purge => true
}

Isto ignora usuários do sistema com UIDs abaixo de 500 (ou 1000 para Debian e alguns BSDs). Geralmente faz a coisa certa. Escusado será dizer que isto deve ser usado com muita cautela.

    
por 18.09.2014 / 23:54