2016-04-19 26 views
1

を使用してネクサスからアーティファクトをダウンロードとしてシェフ - 私はnexus.Theレシピからフォルダにwarファイルをダウンロードするためにシェフを使用していREMOTE_FILEリソース

remote_file '/home/Test/AAA.war' do  
    source 'https://IP.com:8082/ URL Of the Repo/AAA.war'  
    owner 'root'  
    group 'root'  
    mode '0755' 
    action :create 
    end 

の下に、私はこのレシピを実行している場合しかし、私は取得していますです不正アクセスエラー

nexusログインにユーザー名とパスワードを与える必要がありますか?

レシピの代わりにnexusからダウンロードするバッチスクリプトを作成する必要がありますか?

+0

Riotgames [artifact](https://github.com/RiotGamesCookbooks/artifact-cookbook)cookbookはインスピレーションの助けになることができます。特に、ネクサスCLIのgem [here](https:// github)と一緒に、[ここ](https://github.com/RiotGamesCookbooks/artifact-cookbook/blob/master/libraries/chef_artifact_nexus.rb)からダウンロードしてください。 com/RiotGamesMinions/nexus_cli) – Tensibai

答えて

2

最初の方法では、Nexusサーバーでファイルをダウンロードするための認証が必要かどうかを確認します。私はあなたのブラウザをシークレットモードで開き、remote_fileリソースのsourceプロパティのURLを表示します。私はそれがあなたに "Unauthorized access error"というログインページを与えることを期待しています。これは、Nexusログイン用のユーザー名とパスワードを入力する必要があることを確認するものです。

これを行うには、remote_fileリソースのheaderプロパティを使用して、必要な資格情報をNexusサーバーに渡すことができます。

詳細はこちらをご覧ください。 https://docs.chef.io/resource_remote_file.html#properties

Nexusのログイン方法は特に分かりませんが、ドキュメントページからこの例のように見えます。 headers("Authorization"=>"BasiC#{ Base64.encode64("#{username}:#{password}").gsub("\n", "") }")

+4

URLに入れても構わないと思います。 'https:// user:password @ host/path'です。 – coderanger

0

これは私がそれを行った方法です(コーダーガン回答)。この例では

nodejs_url = node['ci_cd']['ubu_nodejs_url'] 
... 

remote_file nodejs_path do                       
    source nodejs_url.gsub(/(https?:\/{2})/, '%s%s:%[email protected]' % ['\1', artifactory_user, artifactory_pass])   
    checksum nodejs_url_checksum                    
    owner 'root'                        
    group 'root'                        
    mode  '0644'                        
    notifies :install, 'dpkg_package[nodejs]', :immediately              
    not_if { ::File.exists?(nodejs_path) }                    
end 

dpkg_package 'nodejs' do                        
    source nodejs_path                        
    action :nothing                         
end 

私はただ一つの場所にガード(not_if)を管理するためのremote_filedpkg_package間の依存関係を作成しました。

関連する問題