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

Создание учетных записей пользователей с помощью Puppet?

Я только начинаю работать с Puppet, и в моем тестовом файле site.pp есть следующий код:

class { 'account': {
  'danny':
     home_dir => '/home/danny',
     groups   => [ 'sudo', 'users' ],
     password => 'password'
  }
}

Я пытаюсь использовать учетная запись модуль из Puppet Forge. Я проверил, что модуль установлен правильно.

Ошибка при использовании приведенного выше кода:

Ошибка: не удалось получить каталог с удаленного сервера: ошибка 400 на СЕРВЕРЕ: не удалось выполнить синтаксический анализ для производственной среды: синтаксическая ошибка в '{'; ожидается '}' в /etc/puppet/manifests/site.pp:12 на узле testpuppet.domain.io Предупреждение: не используется кеш в неудачном каталоге Ошибка: не удалось получить каталог; пропуск бега

Строка 12 site.pp:

class { 'account': {

В документации приводится следующий пример:

account { 
  'sysadmin':
    home_dir => '/opt/sysadmin',
    groups   => [ 'sudo', 'users' ],
    ssh_key  => 'AAAAB3NzaC1yc2EAAAABIwAAAQEArfQmMkvtWRnwas3DIti9qAuSFQXKcE0kdp5f42PP8l2kTytJPPWp5T/q8PXDQ2d2X5KplMCMDiUQkchqhmDp840jsqBQ9iZPejAjv3w2kITgScFNymAcErtzX52iw4lnUyjZzomCW8G3YthQMaRm2NkI4wcVcjzq+SKyTfzrBoH21RgZlfcx+/50AFRrarpYqel9W5DuLmmShHxD8clPS532Z/1X+1jCW2KikUhdo98lxYTIgFno05lwFOS9Ry89UyBarn1Ecp1zXpIBE7dMQif3UyLUTU9zCVIoZiJj4iO5lemSSV0v8GL97qclBUVJpaCpc4ebR7bhi0nQ28RcxQ==',
    comment   => 'SysAdmin user',
}

все остальные модули, которые я использую, находятся внутри класса, например, модуль NTP:

class { 
  '::ntp': 
  servers => [ 
    '0.uk.pool.ntp.org', 
    '1.uk.pool.ntp.org', 
    '2.uk.pool.ntp.org', 
    '3.uk.pool.ntp.org' 
  ], 
}

Каков правильный синтаксис для использования модуля учетной записи?

Вы можете называть свои классы как хотите, но вам нужно использовать правильное имя для ресурсов. В этом случае ресурс, который вы хотите использовать, user.

Есть очень простой способ узнать, как должен выглядеть ресурс:

$ puppet resource user dawud
user { 'dawud':
  ensure  => 'present',
  comment => 'David Sastre Medina,,,',
  gid     => '1001',
  groups  => ['sudo', 'audio', 'src', 'video', 'libvirt'],
  home    => '/home/dawud',
  shell   => '/bin/bash',
  uid     => '1001',
}

Этот код внутри класса будет выглядеть:

class foo {
   user { 'dawud':
      ensure  => 'present',
      comment => 'David Sastre Medina,,,',
      gid     => '1001',
      groups  => ['sudo', 'audio', 'src', 'video', 'libvirt'],
      home    => '/home/dawud',
      shell   => '/bin/bash',
      uid     => '1001',
    }
}

В Puppetlabs есть очень хорошая документация по уровень абстракции ресурсов, Сокращенно RAL.

Я не марионеточный вундеркинд, но у тебя нет равных { в вашем образце. У вас есть одна открытая скоба для class и еще один для account, но вы закрываете только скобку аккаунта.