Назад | Перейти на главную страницу

Марионетка, реализующая определенных пользователей

В основном в качестве обучающего упражнения я пытаюсь использовать определения для создания пользователей. Ошибок нет, но пользователь не создается. Добавление вызовов для уведомления заставляет меня подозревать, что проблема заключается в порядке выполнения (но это также может быть моей новинкой в ​​другом месте). Я использую Puppet 2.7.9.

Вот мой код.

    # 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;
        }
      }
    }

Если это проблема зависимости, как лучше всего указать зависимости? Или я еще что-то не так делаю? Также приветствуются общие отзывы.

Puppet, вероятно, даже не пытается создать пользователя, потому что вы создаете виртуальный учетная запись пользователя ресурс (где вы указываете "@"), но только пытаетесь реализовать пользователь ресурс (нет виртуальных пользователь Ресурсы).

Далее фильтр группа == разработчик ничего не совпадет, так как нет группа атрибут на любом пользователь, или учетная запись пользователя.

Попробуйте заменить Пользователь <| группа == разработчик |> с участием Пользователи :: Учетная запись <| gid == разработчик |> и посмотрите, поможет ли это.