Melhor maneira de gerenciar usuários com o Hiera

1

No momento, estou tentando mudar a configuração do Puppet para usar o Hiera. Com relação a isso, gostaria de criar os usuários com o Hiera, mas tendo alguns problemas de como fazer isso ao subir na hierarquia.

O cenário é que eu quero ter um conjunto de usuários base que estão incluídos em todas as instalações. Além disso, às vezes preciso adicionar alguns usuários específicos apenas para um subconjunto diferente de nós, talvez específico para alguns datacenters ou para alguns nós.

Então, pensei sobre a seguinte configuração:

hiera.yaml:

:hierarchy:
  - "nodes/%{::trusted.certname}"
  - "datacenter/${::datacenter}"
  - "common"

users.pp:

class profile::users {
  $user_accounts = hiera('user_accounts')
  create_resources(user, $user_accounts)
}

e em comum.yaml:

user_accounts:
  bob:
    comment: "Bob"
    managehome: true

e depois subir na hierarquia. Os principais problemas que vejo com isso são:

  • Como eu implemento atributos padrão para cada usuário? Por exemplo, neste exemplo, desejo definir managehome: true para todos usuários e não escrevê-lo explicitamente todas as vezes. Eu talvez queira desativá-lo algumas vezes, no entanto.
  • Se eu tiver user_accounts mais acima na hierarquia, ele sobrescreveria o hash user_accounts do common.yaml, para que eu precisasse duplicar as entradas. Eu me deparei com a fusão profunda em Hiera, mas me pergunto se isso é realmente usado ou é a melhor prática. Além disso, isso não resolveria o primeiro problema, e eu preciso definir merge_behavior em hiera.yaml, o que eu quero evitar.
  • Como eu poderia inserir chaves ssh para todos os usuários aqui? A melhor solução seria simplesmente adicionar as chaves ssh como um atributo para a conta do usuário.

Então, alguém tem uma ideia de como o gerenciamento de usuários é realmente bem feito com o Puppet? Obrigado :)

    
por Hellstorm 10.07.2016 / 11:57

1 resposta

1

Implemente atributos padrão para cada usuário na definição de tipo:

define user($managehome = true) { ... }

Sim, você precisa usar a mesclagem, mas em vez de especificá-la nos dados da hiera, use o hiera_array function para fazer a pesquisa dos dados que você deseja.

As chaves SSH são apenas outro atributo no conjunto de dados, que seu tipo user deve definir adequadamente no sistema.

    
por 11.07.2016 / 03:02

Tags