2014-12-02 3 views
0

Мне нужен net-ssh и net-scp как часть пользовательского рецепта шеф-повара OpsWorks.Установите драгоценный камень из S3 в рецепт шеф-повара OpsWorks

Получение случайных сбоев от rubygems.org, неспособных предоставить драгоценные камни, поэтому я хотел бы разместить их на S3.

chef_gem имеет «источник» аргумент, но он, кажется, требует локального файла существует до повара времени начала (так что я не могу загрузить файл непосредственно перед использованием chef_gem remote_file)

$gemSsh = "#{Chef::Config[:file_cache_path]}/net-ssh.gem" 
$gemScp = "#{Chef::Config[:file_cache_path]}/net-scp.gem" 

remote_file $gemSsh do 
    source "https://s3-us-west-2.amazonaws.com/****/net-ssh-2.9.1.gem" 
    action :nothing 
end.run_action(:create) 

remote_file $gemScp do 
    source "https://s3-us-west-2.amazonaws.com/****/net-scp-1.2.1.gem" 
    action :nothing 
end.run_action(:create) 

chef_gem "net-ssh" do 
    action :nothing 
    source $gemSsh 
end.run_action(:install) 

chef_gem "net-scp" do 
    action :nothing 
    source $gemScp 
end.run_action(:install) 

(Примечания : run_action (: установка) основана на комментариях здесь https://tickets.opscode.com/browse/CHEF-4843)

Это не может со следующей ошибкой:

NoMethodError 
------------- 
undefined method `name' for "/var/lib/aws/opsworks/cache.stage2/net-scp.gem":String 


Cookbook Trace: 
--------------- 
/var/lib/aws/opsworks/cache.stage2/cookbooks/opsworks_commons/libraries/monkey_patch_rubygems_provider.rb:55:in `install' 
/var/lib/aws/opsworks/cache.stage2/cookbooks/****/recipes/default.rb:24:in `from_file' 

ответ

0

Вы можете использовать «--loca l ", который предоставляется установкой gem (вы можете найти другие варианты с gem install --help).

Базовая команда будет примерно такой, как gem install --local path_to_gem/filename.gem. Таким образом, ваш рецепт в этом случае будет:

.... 

chef_gem "net-ssh" do 
    action :nothing 
    options("--local #{$gemSsh}") 
end.run_action(:install) 

chef_gem "net-scp" do 
    action :nothing 
    options("--local #{$gemScp}") 
end.run_action(:install) 
Смежные вопросы