2015-02-25 3 views
1

Это довольно простая проблема, и я прочитал ряд предлагаемых решений, но я до сих пор не могу заставить марионетку применять для импорта класса git :: config. Вот мой файл установки:puppet apply 'не удалось найти класс'

импортировать модуль GIT через nodes.pp:

#/etc/puppet/manifests/nodes.pp 
node default { 
} 
include git 

импорт site.pp nodes.pp:

#/etc/puppet/manifests/site.pp 
import 'nodes.pp' 

Модуль мерзавец определяется следующим образом:

#/etc/puppet/modules/git/manifests/init.pp 
class git { 
    include git::install 
    include git::config 
} 
class git::install{ 
    package {'git': => present } 
} 

и конфигурационный файл:

#/etc/puppet/modules/git/manifests/config.pp 
define git::config{ 
    [some code here] 
} 

Когда я бегу кукольный применять, кукольный не находит класс мерзавец :: конфигурации:

sudo puppet apply --modulepath=/etc/puppet/modules /etc/puppet/manifests/site.pp 
Error: Could not find class git::config for xxxx on node xxxx. 

Оригинальный модуль был puppetlabs-мерзавец (такая же структура папок), но я воссоздал ошибку, используя упрощенная файловая структура (см. выше).

Update 1

Опечатка выше, мерзавец config.pp и init.pp находятся в папке/модулей/мерзавца/манифестов и файл config.pp читает 'определяют GIT :: конфиг'

+1

ли это опечатка, что нет 'class' ключевого слова в' мерзавца :: config' файл? –

+0

Файл pp должен быть помещен в папку 'git/manifestests', а не непосредственно под папкой git. – BMW

ответ

5

Вы не можете назвать include на git::config. git::config - defined type, а не class. Синтаксис использовать defined type выглядит следующим образом:

git::config { 'the_name_var': 
    param1 => 'foo', 
    param2 => 'bar' 
} 

Надеется, что это помогает

5

Неправильная структура вашего кукольного кода. Вам нужно переместить ваш файл pp в папки манифеста.

/etc/puppet/modules/git/init.pp 
/etc/puppet/modules/git/config.pp 

в

/etc/puppet/modules/git/manifests/init.pp 
/etc/puppet/modules/git/manifests/config.pp