2014/2/7
本投稿の内容はserverspec本家のTipsへ掲載されることとなりました。
http://serverspec.org/advanced_tips.html
(k1LoWさん、ありがとうございます!)
パスワード認証でログインするサーバに対してserverspecでテストを実行する際、ログインパスワードを指定する方法がないような気がするので、できるようにします。
(もし他の方法をご存知の方いらっしゃいましたら教えて下さいm(_ _)m)
編集
spec_helper.rbを編集します。
spec_helper.rb
@@ -1,13 +1,13 @@
require 'serverspec'
require 'pathname'
require 'net/ssh'
+require 'highline/import'
include Serverspec::Helper::Ssh
include Serverspec::Helper::DetectOS
RSpec.configure do |c|
if ENV['ASK_SUDO_PASSWORD']
- require 'highline/import'
c.sudo_password = ask("Enter sudo password: ") { |q| q.echo = false }
else
c.sudo_password = ENV['SUDO_PASSWORD']
@@ -25,7 +25,11 @@
c.host = host
options = Net::SSH::Config.for(c.host)
user = options[:user] || Etc.getlogin
-
+ if ENV['ASK_LOGIN_PASSWORD']
+ options[:password] = ask("\nEnter login password: ") { |q| q.echo = false }
+ else
+ options[:password] = ENV['LOGIN_PASSWORD']
+ end
c.ssh = Net::SSH.start(c.host, user, options)
end
end
実行
上記、編集がされている状態で以下のように実行します。
(serverspecのSudoパスワード指定の実行方法とほとんど同じです。)
パスワードをプロンプトで入力する場合
ASK_LOGIN_PASSWORD=1 rake spec
パスワードを明示する場合
LOGIN_PASSWORD=hogehoge rake spec