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

Установка пакета Puppet в Linux / CentOS

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

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

    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
    

Как я могу это исправить ?

Он пытается запустить 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],
}

Точно так же любое выполнение, которое необходимо выполнить перед установкой пакетов, должно быть выполнено через марионетку в качестве первого шага.