Como posso usar o Puppet para impor a participação em grupos locais?

4

Cross postagem de Ask @ PuppetLabs. (Simplesmente não há tráfego suficiente lá.)

Eu vi vários exemplos para adicionar usuários a% wheel com Augeas. Estas são todas variações da mesma coisa; inserindo um nó de usuário no final.

O que preciso fazer é também remover usuários adicionados fora do gerenciamento de configurações. Para o Puppet gerenciar o grupo, somente os usuários definidos na minha classe Puppet devem estar presentes e quaisquer outros removidos.

Parece que executar um comando Sed simples seria muito mais fácil, mas muitas pessoas dizem para tentar ficar longe do exec. É uma solução tão ruim neste caso?

    
por Aaron Copley 04.11.2014 / 21:53

2 respostas

1

A definição de usuários de roda dessa maneira faz com que eles sejam adicionados, mas se você remover jane da classe, ela não será removida do grupo de roda na próxima execução de Puppet.

class wheel {
  augeas { "wheelgroup":
    context => "/files/etc/group/wheel",
    changes => [
      'set user[1] bob',
      'set user[2] jane',
    ]
  }
}

A única maneira que encontrei em torno disso é purgar o grupo de rodas e adicioná-las novamente a cada vez.

class wheel {
  augeas { "wheelgroup":
    context => "/files/etc/group/wheel",
    changes => [
      'rm user',
      'set user[1] bob',
      'set user[2] jane',
    ]
  }
}

Eu considerei um onlyif para corresponder aos meus usuários definidos para evitar que isso fosse executado em cada execução do Puppet. No entanto, essa também é a única maneira de remover usuários adicionados fora do Puppet para garantir que% wheel seja gerenciado exclusivamente pelo Puppet.

Esta solução também não serve para a parametrização para reutilização.

    
por 04.11.2014 / 21:53
0

Pode ser possível usar o tipo de membros do grupo para definir especificamente os membros do grupo. Você pode precisar usar a opção forcelocal.

    
por 05.11.2014 / 00:06