Ich verwende Terraform, um den Build eines AWS EC2-basierten Docker-Hosts zu automatisieren und dann mithilfe seiner Remote-Exec-Option eine Docker-Datei herunterzuladen, zu erstellen und auszuführen.Terraform und Serverspec integrieren
ich gehofft hatte dies mit Serverspec zu integrieren, aber ich kämpfen zwei Dinge zu erarbeiten:
Der beste Weg, um die externe dns der neu geschaffenen AWS EC2-Instanz Serverspec passieren.
So konfigurieren Sie die SSH-Optionen für Serverspec, so dass sie ordnungsgemäß auf einem Amazon Linux AMI mit dem ec2-Benutzerkonto ausgeführt werden.
Ich würde normalerweise auf die EC2-Instanz verbinden einen vordefinierten Schlüsselpaar verwenden und ein Passwort nie jedoch verwenden ServerSpec scheint Befehle auf dem Server mit einem sudo -p-Format ausgeführt werden.
Jeder Rat sehr geschätzt.
Inhalt von spec_helper.rb
require 'serverspec'
require 'net/ssh'
set :ssh_options, :user => 'ec2-user'
auch bearbeitet Rakefile mit richtige EC2 externen dns (maskiert) zu zwingen folgt:
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
Ich habe mehr Erfolg hatte Ersatz-Server-Spezifikation mit Koch INSPEC. Es ist viel einfacher aufzurufen. Ich bin mir sicher, dass es andere Kompromisse gibt, aber für meinen Anwendungsfall funktioniert es besser. – user1229364