Как использовать докерский ресурс 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 для результатов, но нам действительно нужно знать больше деталей, чтобы знать, есть ли преимущество в использовании серверной спецификации в миксе.

Другие вопросы по тегам