Установите RPM из файла с помощью Chef

Я хочу сделать следующее с Chef Solo (сервер не подключен к Интернету):

sudo yum install docker-*.rpm

У меня есть следующая структура:

cookbooks
└── my-cookbook
    └── recipes
        ├── default.rb
        └── docker.rb

У меня в рецепте это:

Dir['docker-*.rpm'].each do |pkg|
  rpm_package File.basename(pkg) do
    source pkg
  end
end

Теперь, куда мне положить RPM-файлы?


person Christoffer Reijer    schedule 11.02.2016    source источник
comment
Возможный дубликат Какой идиоматический способ установить пакет Debian с помощью Chef?   -  person Tensibai    schedule 11.02.2016
comment
Ответ от повторяющегося кандидата можно легко адаптировать, лучше всего использовать внутренний http-сервер. Вместо этого вы также можете использовать частный репозиторий yum.   -  person Tensibai    schedule 11.02.2016
comment
О Http и кастомном зеркале не может быть и речи, нужно распространять бинарники и рецепты в одном пакете вместе со всеми зависимостями.   -  person Christoffer Reijer    schedule 11.02.2016
comment
В этом acse используйте каталог файлов и ресурс cookbook_file.   -  person Tensibai    schedule 11.02.2016
comment
Никогда не рекомендуется иметь rpm с поваренной книгой на сервере шеф-повара. Но на всякий случай вы можете поместить rpm в ‹cookbook_dir›/files/default и либо использовать remote_directly, чтобы получить локальный файл rpm на машине, чтобы использовать URL вашего сервера шеф-повара как rpm -i ‹chef-server-endpoint›/files/default /мой.об/мин   -  person Amod Pandey    schedule 12.02.2016
comment
О, я забыл сказать, что использую Chef Solo для развертывания на одном изолированном сервере.   -  person Christoffer Reijer    schedule 13.02.2016


Ответы (1)


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

Простым, но медленным/хрупким способом было бы поместить RPM в files/rpms/ и использовать ресурс remote_directory, например:

r = execute "rpm -i #{Chef::Config[:file_cache_path]}/myrpms/*.rpm" do
  action :nothing
end

remote_directory "#{Chef::Config[:file_cache_path]}/myrpms" do
  source 'rpms'
  notifies :run, r, :immediately
end

или что-то типа того.

person coderanger    schedule 11.02.2016