Ssh 集成Terraform和Serverspec
我正在使用Terraform自动构建基于AWS EC2的docker主机,然后使用其remote exec选项下载docker文件,构建并运行它 我希望将其与Serverspec集成,但我正在努力解决两件事:Ssh 集成Terraform和Serverspec,ssh,amazon-ec2,terraform,serverspec,Ssh,Amazon Ec2,Terraform,Serverspec,我正在使用Terraform自动构建基于AWS EC2的docker主机,然后使用其remote exec选项下载docker文件,构建并运行它 我希望将其与Serverspec集成,但我正在努力解决两件事: 将新创建的AWS EC2实例的外部dns传递给Serverspec的最佳方法 如何为Serverspec配置SSH选项,以便它使用ec2用户帐户在AmazonLinuxAMI上正确执行 我通常使用预定义的密钥对连接到EC2实例,从不使用密码,但是ServerSpec似乎在服务器上以sudo
require 'serverspec'
require 'net/ssh'
set :ssh_options, :user => 'ec2-user'
还使用如下编辑的rakefile强制更正EC2外部dns(屏蔽):
web
:
output "address" {
value = "${aws_instance.web.public_dns}"
}
然后,在使用地形输出地址应用地形后,您可以从命令行获取该值
谢谢你的帮助。我仍在努力找出rakefile和spec_helper.rb中所需的确切内容,以便对单个主机进行简单测试,将Net:SSH user设置为ec2-user。将行set:SSH_options,:user=>'ec2 user'添加到这两个文件中都不起作用。它仍然尝试使用我的mac用户名连接到EC2主机。你能将spec_helper.rb上的内容添加到你的帖子中吗?我用chef inspec替换服务器spec更成功。调用它要容易得多。我确信还有其他的取舍,但是对于我的用例来说,它工作得更好。
output "address" {
value = "${aws_instance.web.public_dns}"
}