2015-06-23 3 views
0

В рамках настройки оркестровки платформы мы используем наш пакет python для установки различных пакетов программного обеспечения на кластере компьютеров в облаке.зависимость поваренной книги шеф-повара от системного программного обеспечения не в другой поваренной книге

Мы имеем следующий сценарий:

  1. Наш пакет питона инициирует установку некоторых пакетов программного обеспечения (например, А, В, С), то одновременно инициирует установку некоторых других (скажем, D, E, F). (NB :. D, E, F есть через наших шеф поваренных книг и A, B, C являются через наши программы питона)

  2. Наша проблема заключается в том, что программное обеспечение D (устанавливается через повар поваренной книги) зависит от программного обеспечения А.

  3. Поскольку D зависит от A, cookbook для D не находит A в системе и не работает.

То, что я думал, было, если мы можем иметь зависимость в поваренной книге шеф-повара, говорим, что продолжаем действовать только в том случае, если А находится в системе еще ждать!

Возможно ли это? есть ли альтернативы вышеуказанной проблеме?

Благодаря

+1

Почему вы не управлять все пакеты от шеф-повара? Единственная идея, с которой я могу выйти, - это охранять, чтобы не запускать ресурс пакета, нет A, проверка наличия зависит от того, что вы говорите (система? Pip? Что-то еще?) – Tensibai

+0

@Tensibai да, i говорил о пакетах hadoop (точнее, репозитории HDP). охранники работали на меня. спасибо – phoenix

ответ

0

я применил следующие шаги, чтобы решить мою проблему

  1. Найдено каталог, который будет создаваться после установки независимого программного обеспечения
  2. дожидался каталог, чтобы получить созданные (с помощью рубинового блока кода для сна) и после этого инициировала установку зависимого программного обеспечения для обеспечения соответствия зависимостей.

решить мою проблему ..

0

Вы можете рассмотреть возможность использования puppet. Whit puppet вы можете определить требуемый resources (например, package), а также определить relationships между ресурсами.

кукольный манифеста например:

package { ["A", "B", "C", "E", "F"]: 
    ensure => 'installed', 
} 

package { "D": 
    ensure => 'installed', 
    require => Package['A'], 
} 

UPDATE: обновленный пример кукольный манифеста.

+0

звучит хорошо .. у нас есть аналогичная вещь в Шеф-поваре? – phoenix

+0

Кроме того, "" " пакет {[ "A", "B", "C"]: обеспечивают => 'установлен', } """ при выполнении этого, если он не находит, B, C, будет ли ждать их или просто выбросить ошибку, говоря «пакеты не найдены»? – phoenix

+0

Вы просили альтернативы, поэтому я предложил марионетку. К сожалению, я не знаком с шеф-поваром. Кукольник гарантирует, что система находится в состоянии, описанном в манифесте марионеток.Поэтому он будет устанавливать пакеты «A», «B», «C», «E», «F», если они еще не установлены. Puppet установит пакет «D» только тогда, когда пакет «A» уже доступен в системе. – kkamilpl

Смежные вопросы