Puppet realizando usuários definidos

2

Principalmente como exercício de aprendizado, estou tentando usar define para criar usuários. Não há erros, mas o usuário não é criado. Adicionando chamadas para notificar me faz suspeitar que o problema é a ordem de execução (mas também pode ser meu newbness em outro lugar). Estou usando o Puppet 2.7.9.

Aqui está o meu código.

    # manifests/nodes.pp
    node /song.*/ {
      include users
      User <| group == developers |>
    }

    # modules/users/manifests/init.pp
    class users {
      include users::people
    }

    # modules/users/manifests/people.pp 
    class users::people {
      require groups
      @users::account { "michael":
          username => "michael",
          name     => "Michael C. Harris",
          uid      => 1000,
          gid      => "developers",
          password => '{encrypted password}',
          groups   => [ "wheel" ],
      }
    }

    # modules/groups/manifests/init.pp
    class groups {
      Group { ensure => present }
      group { "wheel":
        gid => 10;
      }
      group { "developers":
        gid => 1001;
      }
    }

    # modules/users/manifests/account.pp
    define users::account($ensure=present, managehome='true', allowdupe='false', homeprefix='/home', $username, $name, $password, $uid, $gid, $groups=[], $key='', $keytype='ssh-rsa', shell='/bin/zsh') {

      File { owner => $username, group => $username, mode => '0600' }

      $home = "${homeprefix}/${username}"

      user { $username:
        ensure     => $ensure,
        uid        => $uid,
        gid        => $gid,
        password   => $password,
        comment    => "$name",
        groups     => $groups,
        shell      => "$shell",
        home       => $home,
        require    => Group["$gid"],
        allowdupe  => $allowdupe,
        managehome => $managehome;
      }

      file { "$home":
        ensure => directory
      }
      if $key {
        file { "$home/.ssh":
            ensure => directory;
        }
        ssh_authorized_key { "$username":
          user    => $username,
          require => File["$home/.ssh"],
          key     => $key,
          type    => $keytype,
          ensure  => present;
        }
      }
    }

Se este é um problema de dependência, qual é a melhor maneira de especificar dependências? Ou estou fazendo outra coisa errada? O feedback geral também seria apreciado.

    
por michaeltwofish 19.04.2012 / 23:53

1 resposta

4

O Puppet provavelmente nem está tentando criar o usuário, porque você está fazendo um recurso virtual user :: account (onde você especifica o "@"), mas está apenas tentando realizar um < recurso strong> user (não há recursos virtuais do usuário).

Além disso, o filtro grupo == desenvolvedor não corresponderia a nada, pois não há atributo grupo no usuário ou user :: account .

Tente substituir Usuário < | group == desenvolvedor | > com Usuários :: Conta < | gid == developer | > e veja se isso ajuda.

    
por 20.04.2012 / 01:43

Tags