如何让 Knife 在公共 VPC 中引导 EC2 实例?

如何让 Knife 在公共 VPC 中引导 EC2 实例?

我不太了解路由、子网和 vpc,我从未在旧 AWS 账户中使用过它们。在我的新 AWS 账户中,我启动了一个新的 Amazon Linux AMI 实例 (ami-043a5034)。它所附加的安全组包括允许端口 22。VPC 设置都是默认的,我认为这意味着它应该像没有 VPC 的“传统”样式 EC2 配置一样工作。我使用的是 knife-ec2 gem 版本 0.8.0。我的 knife 创建命令是这样的(使用 knife.rb 指定的区域和其他设置)

knife ec2 server create -r 'role[webserver]' -I 'ami-043a5034' -E development -G 'web-security-group' -N 'webserver1'

我也尝试过

knife ec2 server create -r 'role[webserver]' -I 'ami-043a5034' -E development -g 'sg-abcdef12' -N 'webserver1' --associate-public-ip --subnet subnet-abcdef12 --server-connect-attribute public_ip_address

带有和不带有 server-connect-attribute 参数

一旦创建了实例,它就会停留在“等待 sshd”(没有句号)的状态。我可以从终端以及 Amazon 提供的 Java 工具通过 SSH 进入新实例,因此我知道它是公开可用的,但我不确定如何让 knife/chef 正确连接以完成新实例的引导。我从哪里开始?我需要弹性 IP 吗,还是我可以使用分配给它的任何公共 IP?

答案1

我需要添加另外两个选项。

-i ~/.ssh/key.pem

--ssh-user ec2-user

我假设这些已经在工作了,因为我能够knife ec2 server list,并且因为我在 knife.rb 中指定了 knife[:aws_ssh_key_id],但是该密钥 id 专门指的是 AWS 上的密钥对名称,您仍然需要在您自己的计算机上使用该密钥连接到您新创建的实例。

相关内容