如何使用Chef在VPC内启动Amazon EC2实例,而无需使用网关机器?

3
我正在使用chef在VPC中创建Amazon EC2实例。我使用--associate-eip选项在knife ec2 server create命令中为新实例分配了一个弹性IP地址。如果没有网关机器,如何引导它?当它使用新创建的服务器的私有IP进行ssh时,它会卡在“等待sshd”上,尽管它已经分配了弹性IP地址。我漏掉了什么吗?这是我使用的命令:
bundle exec knife ec2 server create --subnet <subnet> --security-group-ids 
<security_group> --associate-eip <EIP>  --no-host-key-verify --ssh-key <keypair>
--ssh-user ubuntu --run-list "<role_list>" 
--image ami-59590830 --flavor m1.large --availability-zone us-east-1b  
--environment staging --ebs-size 10 --ebs-no-delete-on-term --template-file 
<bootstrap_file> --verbose

有没有其他的解决方法或补丁来解决这个问题?

提前致谢。

2个回答

4

我最终通过使用--server-connect-attribute选项解决了问题,该选项应该与--ssh-gateway属性一起使用。

在上述的knife ec2 create server命令中添加--server-connect-attribute public_ip_address,这将使knife使用您服务器的public_ip_address。

注意:此方法适用于knife-ec2(0.6.4)。请参阅此处def ssh_connect_host


1
感谢您提供的解决方案!我已经尝试并解决了另外两个问题。我想分享一下我的经验,希望能帮助其他人:**(1)** 安全组可能会阻止您SSH到实例中(请参见此处); (2) 您可能需要添加 --no-host-key-verify 选项(请参见此处knife ec2 server create --help)。 - Tung Nguyen

1
厨师(Chef)在注册EC2节点时将始终使用私有IP。您可以通过将厨师服务器放在VPC内部来使其正常工作。但这绝不是最佳实践。
另一个解决方法是让您的厨师服务器位于VPC之外。而不是使用“knife ec2”命令引导实例,请按照此处的说明操作。这样,您将从节点本身引导节点,而不是从厨师服务器/工作站引导。

1
出于好奇,你为什么说将Chef服务器放在VPC内不是最佳实践呢? 对我来说,这似乎是最好的方法——它可以加快速度,将整个基础架构保持在安全空间内,并将互联网流量降至最低,从而降低成本。 - cassianoleal
你的Chef服务器最好是在尽可能分离的基础设施上,这样在发生重大故障时,你可以在其他地方重新启动所有内容。 - msaspence

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接