LINUX.ORG.RU
ФорумAdmin

Вопрос по defined types и realize()

 , понаписали


1

2

Есть такая конструкция в паппете:

class someclass ($keylist) {

define sometype ($param1,$param2) {
   ... set of native types ...
}

@sometype {
    'key1':
         param1 => value1,
         param2 => value1;
    'key2':
         param1 => value1,
         param2 => value1;
}

realize ( Sometype[$keylist] )
}

При вызове класса передаётся keylist, которые реализовать. У этого sometype есть параметр ensure, но в случае если я не передам этот key при вызове класса - каким бы он (ensure) не был - ничего не изменится.

Можно как-то получить в этом классе те key, которые не были переданы при вызове?

PS а может я вообще не с той стороны захожу? Класс по сути реализация пользователя с ssh-ключами на борту.



Последнее исправление: oxumorron (всего исправлений: 1)

Можно как-то получить в этом классе те key, которые не были переданы при вызове?

Но зачем?

router ★★★★★
()
Ответ на: комментарий от router

Чтобы не помнить о том, что сначала пользователю надо выставлять ensure => present, а просто убрать из конфигурации.

oxumorron
() автор топика
Ответ на: комментарий от oxumorron

Чтобы не помнить о том, что сначала пользователю надо выставлять ensure => present,

Т.е. ssh ключи пользователей в одном define, а сами пользователи в другом ресурсе? ИМХО, лучше бы их объединить. Ты же пароли не выносишь в отдельный ресурс, а ключи - тоже средство аутентификации :)

а просто убрать из конфигурации.

Поиск устаревших записей в манифесте - это ИМХО задача админа, а не puppet. Ты можешь grep'нуть манифесты на наличие 'realize.*sometype' и посмотреть что реально используется.

router ★★★★★
()
Ответ на: комментарий от router

В этом define и пользователь и ключ, иначе его и городить не пришлось бы.

Я и есть админ. Было бы удобно использовать его таким образом, но если не умеет - жаль =)

oxumorron
() автор топика
Ответ на: комментарий от oxumorron

В этом define и пользователь и ключ, иначе его и городить не пришлось бы.

Тогда зачем «помнить о том, что сначала пользователю надо выставлять ensure => present,» ? Можешь привести кусок кода?

router ★★★★★
()
Ответ на: комментарий от oxumorron
if not defined( Sometype['username'] ) {
    user { 'username':
       ensure => absent;
    }
}

С виртуальными ресурсами пока не применял

router ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.