puppet faz loops para criar usuários com valores em um arquivo raw

2

Eu gostaria de usar o fantoche para criar caixas de correio. Basicamente, eu só preciso de um diretório para ser criado quando um novo usuário chegar. No entanto, a lista de usuários é bastante grande e a criação de uma sub-rotina de arquivo por usuário está fora de questão. Eu encontrei uma maneira de passar uma matriz com esta estrofe:

file { [ "user1", "user2", ... ]:
    ensure => directory,
    owner  => $user,
    group  => 'mail',
    mode   => 0660,
}

Existem 2 problemas com isso: Primeiro, não há como recuperar a lista de usuários de um recurso externo (que pode ser um arquivo CSV, por exemplo). E, em segundo lugar, não consigo ver como é possível instanciar o valor do proprietário.

Eu pensei em definir a função, mas os mesmos problemas permanecem. Alguém encontrou uma solução para resolver esse problema?

    
por philippe 08.01.2013 / 11:49

1 resposta

2

Um tipo definido deve funcionar muito bem para o problema de owner .

define usermailbox {
  # creates dir /path/to/username:
  file { "/path/to/$title":
    ensure => directory,
    owner  => $title,
    group  => 'mail',
    mode   => 0660,
  }
}

Para preencher a partir de uma fonte externa, o Hiera é uma boa opção - ele é integrado ao Puppet depois da 3.0, mas você Você precisará instalá-lo separadamente em seu sistema mestre se ainda estiver no 2.7. Se você for usá-lo, você também pode considerar mudar para ele como um meio mais flexível de fazer suas definições de nós.

Onde você coloca a lista de usuários depende se isso precisa ser aplicado a apenas um sistema, ou a múltiplos ... mas por enquanto, digamos que o queremos especificamente para este sistema.

Então, no seu /etc/puppet/hiera.yaml (a configuração de como o Hiera procura por dados), você terá algo assim:

:backends:
  - yaml

:hierarchy:
  - %{::clientcert}
  - common

:yaml:
   :datadir: '/etc/puppet/hieradata'

Para node.example.com , ele procurará um arquivo /etc/puppet/hieradata/node.example.com.yaml (ou common.yaml como prioridade mais baixa, para que você possa usá-lo se desejar que essa lista esteja disponível para vários catálogos de servidores). Crie esse arquivo e forneceremos a lista de usuários no formato YAML:

mailbox_users:
  - user1
  - user2
  - user3

Em seguida, podemos usar uma chamada hiera para pegar essa lista, puxá-la como uma variável e usá-la para configurar o define acima para cada usuário na lista.

usermailbox { hiera(mailbox_users): }
    
por 09.01.2013 / 19:11