Конфигурация манифеста марионетки для проверки образа докера
Я новичок в devops/ci/cd, так что потерпите.
В настоящее время я настраиваю конфигурацию манифеста марионетки для проверки образа докера. Попробую распланировать:
У меня есть главный сервер марионеток со следующей конфигурацией:
- Версия Puppetmaster: 5.5.10-4ubuntu3
- Оба сервера Linux 20.04.
- Все размещено на AWS
/etc/puppet/code/environments/production/manifests/site.pp
node default {
include 'docker'
docker::image { 'jorgemauriciodev/ubuntu-dockerfile-dev-v1': }
}
Каждый раз, когда я пытаюсь ввести новую команду проверки в .pp, я перезапускаю сервер puppet master с помощью следующей команды: sudo systemctl restart puppet-master
Я установил модуль garethr-docker на оба моих сервера — агент и мастер.
На подчиненном сервере/сервере агента у меня есть и работает этот образ Docker: jorgemauriciodev/ubuntu-dockerfile-dev-v1. На первом этапе я просто хочу проверить, существует ли образ на моем подчиненном сервере. Позже я придумаю, как убедиться, что он работает или собран с помощью Dockerfile.
На подчиненном/агентском сервере я запускаю: sudo puppet Agent –test
И я получаю следующее сообщение об ошибке:
Ошибка: не удалось получить каталог с удаленного сервера: ошибка 500 на СЕРВЕРЕ: ошибка сервера: ошибка оценки: ошибка при оценке вызова функции, не удалось найти класс ::docker для ip-123-123-123-123.us-east-2.compute.internal (файл: /etc/puppet/code/environments/production/manifests/site.pp, строка: 2, столбец: 5) на узле ip-123-123-123-123.us-east-2.compute.internal Предупреждение: не используется кэш в неудачном каталоге. Ошибка: не удалось получить каталог; пропуск пробежки
Кто-нибудь знает, что у меня не так с файлом манифеста марионетки?
Редактировать 1:
Я внес некоторые предложенные изменения. Теперь мой файл имеет другое имя и изменил содержимое: /etc/puppet/code/environments/production/manifests/init.pp
include 'docker'
class { 'docker':
version => 'latest',
}
docker::image { 'jorgemauriciodev/ubuntu-dockerfile-dev-v1': }
Все еще возвращает мне то же сообщение об ошибке.
Вот полное сообщение:
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: warning: deprecated Object#=~ is called on Puppet::Transaction::Report; it always returns nil
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: warning: deprecated Object#=~ is called on Puppet::Transaction::Report; it always returns nil
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: warning: deprecated Object#=~ is called on Puppet::Transaction::Report; it always returns nil
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/indirector/request.rb:272: warning: URI.unescape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
Info: Retrieving plugin
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: warning: deprecated Object#=~ is called on Puppet::Transaction::Report; it always returns nil
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/indirector/request.rb:272: warning: URI.unescape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
Info: Retrieving locales
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:315: warning: deprecated Object#=~ is called on Puppet::Transaction::Report; it always returns nil
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/indirector/request.rb:272: warning: URI.unescape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Function Call, Could not find class ::docker for ip-172-31-21-116.us-east-2.compute.internal (file: /etc/puppet/code/environments/production/manifests/init.pp, line: 1, column: 1) on node ip-172-31-21-116.us-east-2.compute.internal
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
/usr/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:126: warning: $SAFE will become a normal global variable in Ruby 3.0
/usr/lib/ruby/vendor_ruby/puppet/util.rb:461: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:126: warning: $SAFE will become a normal global variable in Ruby 3.0
Редактировать 2:
Я установил дополнительные модули на главный сервер и подчиненный/агентный сервер с помощью этой команды:
sudo puppet module install puppetlabs-docker --version 4.1.2
И он все еще возвращает мне сообщение об ошибке, но теперь кажется, что оно другое. Итак, возможно, проблема с синтаксисом.
Вот важная часть сообщения.
Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration: Class[Docker] is already declared; cannot redeclare (file: /etc/puppet/code/environments/production/manifests/init.pp, line: 3) (file: /etc/puppet/code/environments/production/manifests/init.pp, line: 3, column: 1) on node ip-123-123-123-123.us-east-2.compute.internal
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
Помимо этого сообщения, он все еще возвращает мне эти предупреждения, но список намного больше. Однако я не думаю, что это сейчас вызывает беспокойство.
1 ответ
Ошибка 500 в puppet означает плохой написанный код. Можете ли вы поделиться всей конфигурацией (init.pp), и я смогу вам рассказать оттуда.
class { 'docker':
version => 'latest',
}
docker::image { 'jorgemauriciodev/ubuntu-dockerfile-dev-v1': }
Дополнительную информацию можно найти здесь: https://forge.puppet.com/modules/puppetlabs/docker .