私はTerraformを使用してAWS EC2ベースのドッカーホストの構築を自動化し、リモートのexecオプションを使用してドッカーファイルをダウンロードし、ビルドして実行しています。TerraformとServerspecの統合
私はServerspecでこれを統合することを望んだと思いますが、2つの物事をうまくするために苦労しています:
Serverspecに新しく作成されたAWS EC2インスタンスの外部DNSを渡すための最良の方法を。
ec2-userアカウントを使用してAmazon Linux AMIで正しく実行されるように、ServerspecのSSHオプションを構成する方法。
私は通常、事前定義されたキーのペアを使用してEC2インスタンスに接続し、パスワードを使用しないだろうがしかしServerSpecはsudoの-pのフォーマットをもつサーバー上でコマンドを実行しているようです。
アドバイスをいただければ幸いです。 spec_helper.rbの
内容も(マスク)正しいEC2外部DNSを強制するために、次のように編集したrakefileを使用して
require 'serverspec'
require 'net/ssh'
set :ssh_options, :user => 'ec2-user'
:
require 'rake'
require 'rspec/core/rake_task'
hosts = %w(
ec2-nn-nn-nn-nnn.eu-west-1.compute.amazonaws.com
)
set :ssh_options, :user => 'ec2-user'
task :spec => 'spec:all'
namespace :spec do
task :all => hosts.map {|h| 'spec:' + h.split('.')[0] }
hosts.each do |host|
short_name = host.split('.')[0]
role = short_name.match(/[^0-9]+/)[0]
desc "Run serverspec to #{host}"
RSpec::Core::RakeTask.new(short_name) do |t|
ENV['TARGET_HOST'] = host
t.pattern = "spec/Nexus/*_spec.rb"
end
end
end
。呼び出す方がはるかに簡単です。しかし、私の使用事例では、他のトレードオフがあると確信しています。 – user1229364