Puppet: como criar e gerenciar usuários e grupos unix

12

Na semana passada, dediquei todo o meu esforço a aprender Puppet. Agora, sofro de um transbordamento mental e pouca confiança de poder domesticar esse animal. Encontrei muitos exemplos anotados, mas devido a suas inúmeras variações, não consigo discernir entre o estilo e as convenções de bonecos recomendados (recentes) e as abordagens ad hoc "funciona para mim". Não aguento mais porque parece ser sobre coisas básicas.

Então. Usando o Puppet para gerenciar grupos e usuários, o grupo principal dos usuários é igual ao seu próprio nome de usuário, outros grupos podem ser lanpara logins de lan, wheelpara administradores, shellpara usuários com shell em nós arbitrários, mailpara usuários, daemonspara vários daemons. Os logins de administrador estarão em todos os nós e, para piorar, um log de LAN também pode ser um shell.

Pelo que entendi, não há problema em definir um usuário várias vezes se você usar definições virtuais realizadas em algum momento. Parece fabuloso, então como isso funciona com vários grupos para um usuário? Digamos que Bob possa usar os nós da LAN e o nó beastie.wan; seu login é thebobdefinido duas vezes, em lanusers.pp with groups => ["lan"]e em shellusers.pp with groups => ["shell"]? E se Bob quiser que a senha da sua LAN seja separada da senha do shell?

O código que uso atualmente não possui definições virtuais, os usuários são apenas inclusões simples codificadas. Em um ponto, deparei-me com um exemplo usando virtuais e foi aí que fiquei preso porque não entendo como expandir o código para que o Puppet crie um grupo primário e os grupos necessários que eu defini primeiro e depois ingresse no usuário nesses grupos. .

Certo. Por favor, cluebat me corretamente.

drumfire
fonte

Respostas:

6

Agora, sofro de um transbordamento mental e pouca confiança de poder domesticar esse animal.

Primeiro: Relaxe. Aprendi que, quando você é novo em algo com uma curva de aprendizado como o Puppet, é muito fácil ficar impressionado e não conseguir fazer muito.

seu login thebob é então definido duas vezes, em lanusers.pp com grupos => ["lan"] e em shellusers.pp com grupos => ["shell"]?

Não. Defina-o virtualmente em um só lugar (talvez users.pp) com groups => ['shell', 'lan',].

Nos nós, realize os usuários que você precisa. Por exemplo, se node beaminqueremos todos os shellusuários:

node beamin {
    Account <| groups == 'shell' |>
}

E se Bob quiser que a senha da sua LAN seja separada da senha do shell?

Então, provavelmente, Bob deve ter duas contas diferentes com nomes de login diferentes.

Belmin Fernandez
fonte
Obrigado. Você está certo sobre a primeira parte, fiquei impressionado. Mas sua segunda resposta ajudou, pareceu pôr em movimento outros pensamentos e agora manifesto que funciona corretamente, com usuários virtualmente definidos que estão sendo realizados em seus locais adequados. Obrigado por me ajudar com isso. :)
drumfire
Não é um problema. Antes das declarações virtuais, esse problema envolvia uma solução muito complicada. Considere-se com sorte por ter embarcado no Puppet Express agora ;-).
Belmin Fernandez
Estou usando declarações virtuais, mas preciso que alguns usuários estejam no grupo "sudo" em alguns hosts e não em outros. Isso não resolve esse cenário (e estou tendo dificuldades para descobrir o que fazer: D).
Jjmontes
3

O Puppet não se dá bem com o gerenciamento complicado de usuários / grupos. Você seria muito melhor implementando algo como LDAP - por mais que eu não goste, funcionará muito melhor do que tentar colocar Puppet na finalização.

mulher
fonte
Ou FreeIPA. Puppet é bom para contas de serviço que precisam estar no sistema, mas não gerenciar usuários regulares ...
ewwhite
4
Com todo o respeito (sendo que você é um dos principais membros do SF): Não acho que isso responda à pergunta. P: "Como devo criar e gerenciar usuários e grupos unix no Puppet?". A: "LDAP". Acredito que respostas como essa se encaixam melhor como comentários. Claro, se isso já foi discutido antes em meta ou algo assim, talvez eu esteja apenas desinformado. Por favor, não me odeie :-).
Belmin Fernandez
3
@ BeamingMel-Bin: Existe um forte espírito de "a ferramenta certa para o trabalho" no SF. Se alguém está perguntando "qual é a melhor maneira de acertar este parafuso com o meu martelo para fazê-lo entrar?", Diremos "compre uma chave de fenda" para não dar longos tratados sobre os benefícios de diferentes técnicas de martelo. Isso ocorre porque a maioria dos questionadores aqui são tão inexperientes ou ignorantes que não sabem que existem melhores soluções, nem mesmo que soluções melhores poderiam existir (e, portanto, não sabem perguntar ", existe uma maneira melhor de conduzir isso?" parafuso? "ou" qual é a melhor maneira de acionar este parafuso? ").
Womble
1
@drumfire: Novamente, se você está perguntando como fazer algo estúpido, a resposta correta é "não faça isso". É assim que SF funciona. Não estamos aqui para ajudar as pessoas a fazerem coisas estúpidas, estamos aqui para criar administradores de sistemas mais eficazes.
Womble
3
O SF, sendo parte da trilogia original, existe há muito mais tempo e possui um "espírito independente" muito mais forte do que outros sites SE mais homogêneos. Há também a composição dos usuários a considerar. Os administradores de sistemas são irritadiços e opinativos.
Womble