Установка кукольного пакета в Linux/CentOS

Я новичок в Puppet - я занимался изучением основ. Большинство примеров (кроме самых простых), которые находятся на странице марионеток, не работают для меня - либо отсутствуют некоторые зависимости, либо пакет не найден. Я не вижу журналов, объясняющих, что пошло не так (даже если я запускаю --test или же --verbose опция)

  1. Может кто-нибудь уточнить, как puppet удается установить любой данный пакет из заголовка (например, начиная с манифеста, как показано ниже:

    class httpd {
          package { 'httpd':
               ensure => installed,
          }
    }
    

    Здесь - начиная с 'httpd' - что происходит, когда мы запускаем puppet apply в этом манифесте? Где он находит установщик (т.е. где находится хранилище - где он настроен?)

  2. В частности, я получаю эту ошибку:

    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 как первый шаг.

Другие вопросы по тегам