Не уверенный точно, что Вы пытаетесь сделать. Простые Услуги Очереди Amazon могли бы быть соответствующими?
В их объяснении сервиса они говорят:
Определенный тип должен хорошо работать для проблемы владельца
.
define usermailbox {
# creates dir /path/to/username:
file { "/path/to/$title":
ensure => directory,
owner => $title,
group => 'mail',
mode => 0660,
}
}
Для заполнения из внешнего источника Hiera - хороший вариант - он интегрирован в Puppet после версии 3.0, но вам нужно будет установить его отдельно в вашей основной системе, если вы все еще используете 2.7. Если вы собираетесь его использовать, вы также можете рассмотреть возможность перехода на него как на более гибкое средство определения ваших узлов.
То, где вы разместите список пользователей, зависит от того, нужно ли это применять только к одной системе или на несколько ... но пока, допустим, мы хотим, чтобы это было специфично для этой системы.
Итак, в вашем /etc/puppet/hiera.yaml
(конфигурация того, как Хиера ищет данные), вы будет что-то вроде этого:
:backends:
- yaml
:hierarchy:
- %{::clientcert}
- common
:yaml:
:datadir: '/etc/puppet/hieradata'
Для node.example.com
это ' Я буду искать файл /etc/puppet/hieradata/node.example.com.yaml
(или common.yaml
с более низким приоритетом, так что вы можете использовать его вместо этого, если хотите список доступен в каталогах нескольких серверов). Создайте этот файл, и мы передадим ему список пользователей в формате YAML:
mailbox_users:
- user1
- user2
- user3
Затем мы можем использовать вызов hiera
, чтобы получить этот список, вытащить его как переменную и использовать для настройте определение
сверху один раз для каждого пользователя в списке.
usermailbox { hiera(mailbox_users): }