Использование стороннего модуля puppet

Я установил один модуль из:

Модуль Puppet Redis

Теперь у меня есть структура каталогов следующим образом:

введите здесь описание изображения

Содержание g_redis.pp:

class g_redis{
   include redis 

   class {'redis' : 
      version => '2.6.14',
      redis_port => '7000' ----->A
   }

   redis::instance{ 'redis-7000'
      redis_port => '7000', ----->B
   }
}    

Содержимое site.pp:

import 'classes/*.pp'

node default{}

node 'nodename'{
    include g_redis
}

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

  1. В чем разница между (А) и (Б)
  2. При запуске манифеста возникает ошибка: введите здесь описание изображения

person Ankur Verma    schedule 26.02.2014    source источник


Ответы (1)


  • Что касается вашего первого вопроса, class{'redis':} запустит экземпляр по умолчанию, поэтому я думаю, вам не нужно создавать экземпляр redis:instance, если только вы не хотите, чтобы в вашем поле работали два разных экземпляра.

  • На ваш второй вопрос

 include redis 

 class {'redis' : 
    version => '2.6.14',
    redis_port => '7000' ----->A
 }

Here you are instantiating twice redis class.

   include redis

почти эквивалентно

   class {'redis' :
   }

Итак, второй класс ['redis'] дает вам эту ошибку

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

  • Если вы хотите, чтобы redis 2.6.14 прослушивал порт 7000', все, что вам нужно, это просто:

node 'nodename'{
    class{'redis':
       version    => '2.6.14',
       redis_port => '7000'
    }
}
person Raul Andres    schedule 26.02.2014
comment
Тогда как это использовать, я этого не понимаю, хорошо, я установил модуль Redis, как теперь использовать его с моим классом? :D - person Ankur Verma; 27.02.2014
comment
Нет. Вы УЖЕ установили модуль redis puppet. Выполнив class{'redis':}, ваш сервер nodename установит пакет redis, а затем запустит службу redis со стандартными настройками, чтобы ваши приложения могли использовать его для хранения и извлечения данных. - person Raul Andres; 27.02.2014
comment
Это манифесты, которые будут размещены в мастере, и я собираюсь подготовить определения для узлов (агентов), чтобы Redis запускался там (в агенте), поэтому я хочу написать свои манифесты вокруг этого модуля Redis в мастер, для того я это и написал, неужели я ошибся - person Ankur Verma; 27.02.2014
comment
Нет, это правильно, но внутри вашего класса g_redis вам нужен только один class{'redis':} . Без include и без дополнительных redis::instance - person Raul Andres; 27.02.2014
comment
Хорошо, хорошо, теперь я понял, я попробую один раз и вернусь, чтобы отметить ваш ответ как принятый. Так что вы должны ждать его. :P :D :), и еще одно спасибо за вашу помощь. - person Ankur Verma; 27.02.2014