###前提・実現したいこと
Serverspecで外部リソースにsshログイン(パスワード認証)できなかった場合に、適切なエラーメッセージを表示させたい。
そもそも、こんな機能を作成するのは、serverspecのアーキテクチャに反するとの意見もあるかと思いますが、、、
###発生している問題・エラーメッセージ
レスポンスが返ってこない。。。 Check Directory File "/tmp/infra/test/serverspec" should be directory (FAILED - 1) .....
###該当のソースコード
spec/spec_helper.rb
1require 'serverspec' 2require 'pathname' 3require 'net/ssh' 4require 'highline/import' 5 6set :backend, :ssh 7 8host = ENV['TARGET_HOST'] 9options = Net::SSH::Config.for(host) 10 11ENV['EXEC_TIME'] = Time.now.strftime("%Y%m%d_%H%M%S").to_s 12 13options[:user] = ask("\nEnter login user: ") { |q| q.echo = false } 14options[:password] = ask("\nEnter login password: ") { |q| q.echo = false } 15 16if options[:password].empty? || options[:user].empty? 17 p "Plase confirm the login user/password" 18 exit(); 19else 20 set :sudo_password, ask("Enter sudo password: ") { |q| q.echo = false } 21 22# ここで、ユーザ名 or パスワードが間違っていた時に、sshログイン失敗のエラーハンドリングをしたい、 23 begin 24 set :host, host 25 set :ssh_options, options 26 rescue 27 exit(); 28 end 29end 30
###試したこと
ネットワークエラーなり、ユーザ認証エラーのエラーメッセージとともに、適切なエラーハンドリングを実現したいです。
レスポンスが返ってこないと書きましたが、3分に1行くらいはテストコードが呼ばれ、Failの実行結果が返ってきます。
なので、認証失敗によるネットワークのタイムアウトによってエラーが発生しているようで、ある意味、エラーはハンドルされているようですが、、、
###補足情報(言語/FW/ツール等のバージョンなど)
ruby v2.3.0
Serverspec v2.36.0
specinfra v2.54.0
あなたの回答
tips
プレビュー