Я новичок в Puppet - я играл, изучая основы. Большинство примеров (кроме самых простых), находящихся на кукольный страница у меня не работает - либо отсутствует какая-то зависимость, либо не найден пакет. Я не вижу журналов, объясняющих, что пошло не так (даже если я запустил --test
или --verbose
вариант)
Может ли кто-нибудь уточнить, как марионетке удается установить любой данный пакет из заголовка (например, начиная с манифеста, как показано ниже:
class httpd {
package { 'httpd':
ensure => installed,
}
}
Здесь - начиная с httpd - что происходит, когда мы запускаем puppet apply в этом манифесте? Где найти установщик (т.е. где репозиторий - где он настроен?)
В частности, я получаю такую ошибку:
err: /Stage[main]/Ntp/Package[httpd]/ensure: change from absent to present failed: Execution of '/usr/bin/yum -d 0 -e 0 -y install httpd' returned 1: Error: failure: repodata/filelists.xml.gz from base: [Errno 256] No more mirrors to try.
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
Как я могу это исправить ?
Он пытается запустить yum для установки httpd
/usr/bin/yum -d 0 -e 0 -y install httpd
Попробуйте запустить это как root, но я уверен, что это не удастся, поэтому попробуйте
/usr/bin/yum clean all
/usr/bin/yum -d 0 -e 0 -y install httpd
Если это не сработает, ваши репозитории yum не работают, поэтому вам придется исправить этот файл. Возможно файлы в
/etc/yum.repos.d
Хотя ответ Майка определенно решает проблему - я бы сделал то же самое через Puppet.
Например, в качестве первого шага я бы добавил следующий фрагмент кода перед установкой любого пакета
exec {'yum-clean-all':
command => 'yum clean all',
path => '/usr/bin',
user => 'root',
before => Package[httpd],
}
Точно так же любое выполнение, которое необходимо выполнить перед установкой пакетов, должно быть выполнено через марионетку в качестве первого шага.