如何使用厨师在不使用网关机器的情况下在vpc内启动amazon ec2实例?

时间:2013-10-31 08:34:09

标签: amazon-web-services amazon-ec2 chef knife amazon-vpc

我正在使用厨师在VPC内部创建亚马逊EC2实例。我已经使用刀ec2服务器创建中的--associate-eip选项将弹性IP分配给新实例。如何在没有网关机器的情况下引导它?它在“等待sshd”时陷入困境,因为它使用新创建的服务器的私有IP来进行ssh,尽管它有一个弹性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 个答案:

答案 0 :(得分:4)

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

--server-connect-attribute public_ip_address添加到上面的刀ec2 create server命令,这将使刀使用服务器的public_ip_address。

注意:此hack使用knife-ec2(0.6.4)。请参阅def ssh_connect_host here

答案 1 :(得分:1)

Chef在注册EC2节点时将始终使用专用IP。您也可以通过将您的厨师服务器放在VPC内来实现这一目标。绝对不是最佳做法。

另一种解决方法是,让您的厨师服务器在VPC之外。而不是使用knife ec2命令引导实例,而是按照here上的说明进行操作。 这样,您将从节点本身引导节点,而不是从Chef-server / workstation引导节点。