Envolvendo tipos definidos em classes - fantoche

2

Meus usuários.pp

class users::add
{
    define add_user ( $name, $comment, $home, $shell, $uid, $gid, $password)
    {


    # Create the user. This is where most of the magic happens.
    user { "$name":
    name => "$name",
    ensure => present,
    comment => "$comment",
    home => "$home",
    shell => "$shell",
    uid => "$uid",
    password => "$password",
    gid => "$gid"
    }


    file { "/home/$name/":
    ensure => directory,
    owner => $name,
    group => $gid,
    mode => 750,
    require => [User[$name]]
    }

    # And a place with the right permissions for the SSH related configs
    file { "/home/$name/.ssh":
    ensure => directory,
    owner => $name,
    group => $gid,
    mode => 700,
    require => File["/home/$name/"]
    }


    # Now make sure that the ssh key authorized files is around

    file { "/home/$name/.ssh/authorized_keys":
    ensure => present,
    owner => $name,
    group => $gid,
    mode => 600,
    require => file["/home/$name/.ssh"]
    }

  }

}

Meu site.pp

   import "classes/*.pp"
    node default{
    include users::add
    add_user{"saga":name => "saga",comment => "Arun Sag",gid => "100",home => "/home/saga",password => '$1$passwordhash/',shell => "/bin/bash",uid => "70960",
    }
    }

Como você pode ver, criei um tipo definido e o envolvi em uma classe users: add. Eu tentei chamar de site.pp, mas quando eu tentei testar isso

mestre de marionetes sudo --compilar = darkguard-dr.eglbp.corp.company.com --debug --verbose

debug: Using cached node for darkguard-dr.eglbp.corp.company.com                                                               
debug: importing '/etc/puppet/manifests/classes/users.pp' in environment production                                          
warning: Deprecation notice:  Resource references should now be capitalized on line 49 in file /etc/puppet/manifests/classes/
users.pp                                                                                                                     
err: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type add_user at /etc/puppet/manifests/s
ite.pp:5 on node darkguard-dr.eglbp.corp.company.com                                                                           
Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type add_user at

/etc/puppet/manifests/site.p p: 5 no nó darkguard-dr.eglbp.corp.company.com

eu fico acima da mensagem de erro. Também estou planejando gerar yaml usando um script ENC. Qual deve ser o formato yaml?

    
por zer0c00l 18.07.2012 / 14:42

1 resposta

2

Duas coisas em relação ao seu código de fantoches.

A definição deve estar em seu próprio arquivo (chamada add_user.pp e localizada na pasta <modulename>/manifests/ ), e não no arquivo de classe.

Defina a definição acima (altere $ name para $ username, pois $ name é uma variável reservada) e, em seguida, inclua o mesmo conjunto de parâmetros que define os usos para a classe. (que no seu exemplo seria $modulepath/users/manifests/add.pp para fazer funcionar com o autoloader)

Se você alterar a turma da seguinte forma:

class users::add( $u_name, $u_comment, $u_home, $u_shell, $u_uid, $u_gid, $u_password)
{
  users::add_user{ $u_name:
    $username => $u_name, 
    $comment  => $u_comment, 
    $home     => $u_home, 
    $shell    => $u_shell, 
    $uid      => $u_uid, 
    $gid      => $u_gid, 
    $password => $u_password,
  }
}

E altere o site.pp para:

 import "classes/*.pp"
    node default{
      class { 'add_user': 
        username => "saga",
        comment => "Arun Sag",
        gid => "100",
        home => "/home/saga",
        password => '$1$passwordhash/',
        shell => "/bin/bash",
        uid => "70960",
      }
    }

Para o yaml, algo como isso será feito, consulte a documentação para obter mais detalhes:

---
classes:
  users::add:

parameters:
  name: some_name
  comment: some_comment
  home: home_value
  shell: /bin/sh
  uid: 3990
  gid: 3990
  password: superstrongpassword

environment:
  production
    
por 18.07.2012 / 15:48

Tags