Назад | Перейти на главную страницу

марионетка выполняет удаленный скрипт на всех серверах

как я могу выполнить скрипт python на всех марионеточных клиентах.

я добавил класс для выполняемого скрипта

class curp {
       exec { "/usr/src/scripts/curp.py": }
}

и включил его в nodes.pp

но когда я выполняю на удаленном клиенте, он говорит, что файл не может быть найден ???

#client:# /usr/sbin/puppetd --test --server=puppetmasterserver
notice: //chkconfig/Package[vsftpd]/ensure: created
err: //curp/Exec[/usr/src/scripts/curp.py]/returns: change from notrun to 0 failed: Could not `find executable /usr/src/scripts/curp.py`

другое издание:

Я исправил конфигурацию, создав файловый сервер,

class curp {
       file { '/opt/files/curp.py':
          ensure => present,
          owner => 'root',
          group => 'root',
          mode => '0755',
          source => 'puppet:///modules/files/curp.py',
       }
       exec { '/opt/files/curp.py': require => File['/opt/files/curp.py'] }

}

но сценарий терпит неудачу из-за зависимости, я не могу найти нигде в журнале, с чем это связано ...

err: //curp/File[/opt/files/curp.py]: Failed to retrieve current state of resource: Could not retrieve information from source(s) puppet:///modules/files/curp.py at /etc/puppet/manifests/templates.pp:114
notice: //curp/Exec[/opt/files/curp.py]: Dependency file[/opt/files/curp.py] has 1 failures
warning: //curp/Exec[/opt/files/curp.py]: Skipping because of failed dependencies

Любые идеи?

решено:

проблема заключалась в том, что / opt / files не существовал на клиентских серверах, он работает, когда удаленный каталог доступен

Ошибка:

Не удалось получить текущее состояние ресурса: не удалось получить информацию из источника (ов)

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

Я думаю, вы найдете эту страницу полезной, когда будете изучать марионетку: http://bitcube.co.uk/content/puppet-errors-explained Ошибка, которую вы здесь обнаруживаете, является верхней на этой странице. В нем также есть дополнительная информация о том, где марионетка ожидает расположения файлов. URL-адреса не обязательно совпадают напрямую с путями файловой системы.

Как правило, при отладке сообщений об ошибках сначала исправляйте первое. Довольно часто более поздние сообщения об ошибках вызываются более ранними.

Вы должны использовать рекомендованную структуру каталогов, примерно так:

|-- environments
|   |-- development
|   |   `-- modules
|   `-- testing
|       `-- modules
|-- manifests
|   |-- defines
|   |   `-- netinstall.pp
|   |-- nodes.pp
|   `-- site.pp
|-- modules
|   |-- python
|   |   |-- files
|   |   |-- manifests
|   |   `-- templates

поместите свой класс в modules/python/manifests, то curp.py в modules/python/files, и используйте source как показано ниже:

source => 'puppet:///modules/python/curp.py',

вам нужно добавить оператор файла:

файл {"curp": name => "/usr/src/scripts/curp.py", убедитесь => file, source => "puppet: ///modules/your_module/curp.py"}

и

class curp {exec {"/usr/src/scripts/curp.py":} require => {File ["curp"]},}

Это означает, что оператор File отправит файл всем узлам марионеток, которые используют этот модуль.