我正在使用厨师在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
是否还有其他解决方案/补丁来解决此问题?
提前致谢
答案 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引导节点。