2016-08-26 4 views
1

Я пытаюсь скопировать и выполнить сценарий bash от моего марионеточного мастера до моего марионеточного агента.class not found exception -puppet

У меня есть создать MyModule папки в/и т.д./кукольный/модули/

[[email protected]********* mymodule]# ls -l 
total 0 
drwxr-xr-x. 2 root root 30 Aug 26 15:58 files 
drwxr-xr-x. 2 root root 20 Aug 26 16:57 manifests 

[[email protected]*********** manifests]# ls -l 
total 4 
-rw-r--r--. 1 root root 372 Aug 26 16:57 init.pp 

[[email protected]************* files]# ls -l 
total 4 
-rw-r--r--. 1 root root 151 Aug 26 15:13 my_bash_script.sh 



[[email protected]********** files]# cat my_bash_script.sh 
     #!/bin/sh 
     mv /usr/bin/node /usr/bin/bnode 
     ln -s /usr/local/bin/node /usr/bin/node 
     mv /usr/bin/npm /usr/bin/bnpm 
     ln -s /usr/local/bin/npm /usr/bin/npm 


[[email protected]********* manifests]# cat init.pp 
class mymodule::mymodule{ 

file {'/home/ec2-user/my_bash_script.sh': 
     source => 'puppet:///modules/mymodule/files/my_bash_scrip.sh', 
      mode => '755', 
      } 

    exec {'/home/ec2-user/my_bash_script.sh': 
     refreshonly => 'true', 
     require => File["/home/ec2-user/my_bash_script.sh"], 
     subscribe => File["/home/ec2-user/my_bash_script.sh"], 
     } 
    } 

и в моем /etc/puppet/manifest/site.pp я звоню класс, созданный в модуле.

[[email protected]*********** manifests]# cat site.pp 
import 'mymodule' 

node 'node1' { 
    include "mymodule" 
} 

, когда я бегу от агента «кукольный агент -t»

я получаю ошибку ниже:

[[email protected]************8 /]# puppet agent -t 
Info: Retrieving pluginfacts 
Info: Retrieving plugin 
Info: Loading facts 
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class mymodule for ip-**********8 on node ip-**********8 
Warning: Not using cache on failed catalog 
Error: Could not retrieve catalog; skipping run 
+0

Если вы не смогли воспроизвести проблему без участия bash (т. Е. С кукольной загрузкой и запуском скрипта Python, например), этот тег, вероятно, здесь не подходит. –

ответ

1

INIT манифест (init.pp) вашего класса, как ожидается, будет определен как только имя класса, как это:

class mymodule { 

, а не так:

class mymodule::mymodule { 

поэтому ваше включение:

include "mymodule" 

совпадает с именем класса.

Кроме того, ваш файловый ресурс имеет синтаксическую ошибку и опечатку. Он должен выглядеть следующим образом:

file {'/home/ec2-user/my_bash_script.sh': 
    source => 'puppet:///modules/mymodule/my_bash_script.sh', 
    mode => '755', 
} 

Проверьте мой ответ на предыдущий вопрос здесь: Executing bash script from puppet fails для получения дополнительной информации об атрибуте source и кукольном URI.

+0

Ошибка: /Stage[main]/Mymodule/File[/home/ec2-user/my_bash_script.sh]: Не удалось оценить: не удалось получить информацию из источника (ов) среды производства марионетка: /// modules/mymodule/files /my_bash_script.sh Примечание: /Stage[main]/Mymodule/Exec[/home/ec2-user/my_bash_script.sh]: Файл зависимостей [/home/ec2-user/my_bash_script.sh] имеет сбои: true Предупреждение: /Stage[main]/Mymodule/Exec[/home/ec2-user/my_bash_script.sh]: Пропуск из-за неудачных зависимостей Примечание: Завершенный каталог за 0.05 секунд – nadish

+0

спасибо матовый. теперь я получаю эту ошибку. что-то не так с моим скриптом? – nadish

+0

source => 'puppet: ///modules/mymodule/my_bash_script.sh', его странно, хотя даже после изменения я получаю ту же ошибку на этот раз. – nadish