2016-06-15 4 views
1

Terraform을 사용하여 AWS EC2 기반 도커 호스트의 빌드를 자동화 한 다음 원격 exec 옵션을 사용하여 도커 파일을 다운로드하고 빌드 및 실행합니다. Terraform과 Serverspec 통합

나는 Serverspec와 함께이 통합하기를 희망 싶지만 두 가지를 해결하기 위해 고군분투 : Serverspec에 새로 만든 AWS EC2 인스턴스의 외부 DNS를 전달하는

  1. 가장 좋은 방법.

  2. ec2 사용자 계정을 사용하여 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 
+0

. 호출하는 것이 훨씬 쉽습니다. 그러나 더 나은 방법으로 사용하고있는 나의 유스 케이스에는 다른 트레이드 오프가있을 것이라고 확신한다. – user1229364

답변

1
  1. 당신은 IP 주소 output in Terraform 만들 수 .

    output "address" { 
        value = "${aws_instance.web.public_dns}" 
    } 
    

    이 그럼 당신은 terraform output addressterraform apply 후 명령 행에서이 값을 얻을 수 있습니다 : 사실, 링크는 단지이 경우 web라는 AWS 인스턴스의 IP 주소를 얻기 위해 수행하는 예를 제공합니다.

  2. 구성 옵션 : sudo_password를 사용하여 sudo 암호를 설정할 수 있습니다. ec2 사용자가 암호없이 sudo를 실행할 수 있으면 이것을 ''로 설정하십시오. (. 예제 this blog post 참조) 또는 SUDO_PASSWORD 환경 변수에 전달, 여기에 설명 : 나는 요리사 INSPEC와 서버 사양을 대체하는 더 성공을 거두었습니다 http://serverspec.org/tutorial.html

+0

도움 주셔서 감사합니다. 나는 rakefile과 spec_helper.rb에 필요한 정확한 내용을 찾기 위해 Net : SSH 사용자를 ec2 사용자로 설정하는 단일 호스트에 대한 간단한 테스트를 위해 고심하고있다. – user1229364

+0

라인 세트 추가 : ssh_options, : user => 'ec2-user'어느 파일 에나 작동하지 않습니다. 그것은 여전히 ​​내 맥 사용자 이름을 사용하여 EC2 호스트에 연결을 시도합니다. – user1229364

+0

spec_helper.rb의 내용을 게시물에 추가 할 수 있습니까? –

관련 문제