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

Марионеточные отношения с вложенными функциями

Я использую официальный модуль Puppet apt для добавления эта панель запуска Java и установить Oracle Java 8.

  apt::ppa{ 'ppa:webupd8team/java': }

  package {
      "oracle-java8-installer":
        ensure => 'installed',
  }

Когда модуль apt добавляет панель запуска, он уведомляет другой манифест о запуске «apt-get update».

APT / манифесты / ppa.pp

exec { "add-apt-repository-${name}":
  environment => $_proxy_env,
  command     => "/usr/bin/add-apt-repository ${options} ${name}",
  unless      => "/usr/bin/test -s ${::apt::sources_list_d}/${sources_list_d_filename}",
  user        => 'root',
  logoutput   => 'on_failure',
  notify      => Exec['apt::update::apt_update'],
  require     => $_require,
}

Проблема в том, что я не могу убедиться, что исходное обновление запущено до начала установки.

Использование 'require' или 'before' обновление запускается после установка (добавить источник -> установить Java -> обновление apt-get), subscribe возвращает цикл зависимостей и не использует никаких связей, которые он устанавливает перед обновлением моих источников.

Какое решение?

Используя код Фрэнка:

apt::ppa{ 'ppa:webupd8team/java': }

package {
          "oracle-java8-installer":
                ensure => 'installed',
                require => Apt::Ppa['ppa:webupd8team/java'],
}   

Я получаю это сообщение об ошибке:

==> xxx: Примечание: / Stage [main] / Main / Node [xxx] / Apt :: Ppa [ppa: webupd8team / java] / Exec [add-apt-repository-ppa: webupd8team / java] / возвращает: выполнено успешно

==> xxx: Ошибка: выполнение '/ usr / bin / apt-get -q -y -o DPkg :: Options :: = - force-confold install oracle-java8-installer' вернуло 100: Чтение списков пакетов. ..

==> xxx: Построение дерева зависимостей ...

==> xxx: чтение информации о состоянии ...

==> xxx: E: не удалось найти пакет oracle-java8-installer

==> xxx: Ошибка: / Этап [main] / Main / Node [xxx] / Package [oracle-java8-installer] / sure: изменить с очищенного на настоящее не удалось: выполнение '/ usr / bin / apt-get - q -y -o DPkg :: Options :: = - force-confold install oracle-java8-installer 'вернул 100: Чтение списков пакетов ...

==> xxx: Построение дерева зависимостей ...

==> xxx: чтение информации о состоянии ...

==> xxx: E: не удалось найти пакет oracle-java8-installer

==> xxx: Примечание: / Stage [main] / Apt :: Update / Exec [apt_update]: Пакет зависимостей [oracle-java8-installer] имеет сбои: true

==> xxx: Предупреждение: / Stage [main] / Apt :: Update / Exec [apt_update]: пропуск из-за сбойных зависимостей

==> xxx: Примечание: / Stage [main] / Apt :: Update / Exec [apt_update]: инициировано «обновление» из 1 события

Используя это:

package {
          "oracle-java8-installer":
                ensure => 'installed',
                require => Exec['apt::update::apt_update'],
}

Я получаю такую ​​ошибку:

Error: Failed to apply catalog: Could not find dependency Exec[apt::update::apt_update] for Package[oracle-java8-installer]

Ваши выводы сбивают с толку. require действительно должен доставить вас туда.

package {
  "oracle-java8-installer":
    ensure  => 'installed',
    require => Apt::Ppa['ppa:webupd8team/java'],
}