Como uso o módulo puppet saz-sudo para implantar meu próprio arquivo sudoers com o hiera?

1

Eu tenho o saz-sudo instalado e criei um módulo site_sudo baseado nele (espero). Aqui está o que eu tenho no meu arquivo site_sudo / manifest / init.pp:

class { 'site_sudo': }
    sudo::conf { 'web':
      source => 'puppet:///files/etc/sudoers',
    }
    sudo::conf { 'syseng':
      priority => 10,
      content  => "%sysadm ALL=(ALL) NOPASSWD: ALL",
    }

include sudo

Não importa o que eu faça, o arquivo sudoers no destino é sempre sobrescrito com o arquivo sudoers.rhel6 do módulo saz-sudo.

Estou usando common.yaml também:

classes:
  - site_sudo
    
por mr.zog 28.05.2014 / 02:14

4 respostas

2

Essa é uma cópia exata do seu arquivo? A linha class { 'site_sudo': } incluiria essa classe na configuração, não definiria a classe como você deveria estar fazendo no init.pp do módulo. Isso impedirá que o restante da configuração do arquivo seja aplicado (já que esse arquivo está sendo avaliado apenas para carregar essa classe; as outras linhas não serão avaliadas como em uma instrução import ).

Em vez disso, deve ficar assim:

class site_sudo { 
  include sudo
  sudo::conf { 'web':
    source => 'puppet:///files/etc/sudoers',
  }
  sudo::conf { 'syseng':
    priority => 10,
    content  => "%sysadm ALL=(ALL) NOPASSWD: ALL",
  }
}
    
por 28.05.2014 / 02:17
3

De acordo com o README , você precisa enviar um parâmetro para a classe sudo :

class { 'sudo':
  config_file_replace => true,
}

em vez de simples

include sudo

que clobbers /etc/sudoers como declarado .

    
por 28.05.2014 / 12:14
0

Confira o LEIAME e a classe sudo::configs .

A convenção usada é bastante estranha (IMHO seria mais fácil simplesmente adicionar um parâmetro de hash à classe sudo) ... mas parece funcionar muito bem com Hiera.

Para seus valores de exemplo:

classes:
  - sudo 
  - sudo::configs

sudo::configs:
    'syseng':
        'priority'  : 10
        'content'   : "%sysadm ALL=(ALL) NOPASSWD: ALL"
    
por 28.05.2014 / 13:04
0

saz / sudo é projetado para usar um arquivo sudoers.d e #incluir isso. É por isso que ele substitui o arquivo sudoers por um limpo, para ter certeza de que é o arquivo correto. Essas declarações do sudo :: conf farão com que um arquivo apareça em /etc/sudoers.d em vez de alterar o arquivo / etc / sudoers diretamente.

    
por 24.06.2014 / 21:10