Как использовать докерский ресурс serverpec на экземпляре amazon ec2
У меня есть следующая структура -
Bastion (экземпляр EC2 с общедоступным DNS) -> Частный экземпляр EC2, на котором запущен док-контейнер.
Теперь я вижу, что Docker-контейнер работает с SSH по Bastion, используя ssh -i key.pem ec2-user@ec2.us-west-amazon.com
с последующим ssh -i key.pem <private EC2 instance IP>
с последующим docker ps -a
У меня есть 15 разных частных экземпляров EC2 с разными контейнерами Docker. Я хочу ssh для каждого частного экземпляра EC2 и проверить свойства каждого контейнера Docker.
С serverpec я пробовал что-то вроде этого -
describe command('ssh -i QA.pem ec2-user@us-west-2.elb.amazonaws.com') do
describe command('ssh -t -t 10.0.5.5 docker ps -a') do
its(:stdout) { should contain('web-server') }
end
end
Как мы можем достичь этого, используя serverpec? Или serverpec не хороший выбор для этого?
1 ответ
Я думаю, что это зависит от того, что вы хотите проверить (возможно, если бы вы могли перечислить их, было бы легче сказать вам, если serverpec уже имеет какие-либо из этих функций?). Это звучит как цикл for с некоторыми командами docker, поэтому я не уверен, что вы получите много от дополнительной инфраструктуры.
Учитывая все это, тривиально написать цикл для запуска некоторых команд и проверки вывода в serverpec:
machines = %w(10.1.2.3 10.4.5.6 10.7.8.9)
machines.each do |ip|
describe command("ssh #{ip} 'docker ps -a'") do
its(:stdout) { should match /bin/ }
its(:stderr) { should match /failed/ }
its(:exit_status) { should eq 0 }
end
end
Я не думаю, что в приведенном выше примере вы будете много покупать за цикл for в bash с grep для результатов, но нам действительно нужно знать больше деталей, чтобы знать, есть ли преимущество в использовании серверной спецификации в миксе.