Установка кукольного пакета в Linux/CentOS
Я новичок в Puppet - я занимался изучением основ. Большинство примеров (кроме самых простых), которые находятся на странице марионеток, не работают для меня - либо отсутствуют некоторые зависимости, либо пакет не найден. Я не вижу журналов, объясняющих, что пошло не так (даже если я запускаю --test
или же --verbose
опция)
Может кто-нибудь уточнить, как puppet удается установить любой данный пакет из заголовка (например, начиная с манифеста, как показано ниже:
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
Как я могу это исправить?
2 ответа
Пытается запустить 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],
}
Точно так же любое выполнение, которое должно быть выполнено перед установкой пакетов, должно быть выполнено через puppet как первый шаг.