我正在使用 Amazon EC2 来创建实例。我在这里阅读:在 EC2 的刀文档中,我需要设置:
# EC2:
knife[:aws_access_key_id] = "Your AWS Access Key"
knife[:aws_secret_access_key] = "Your AWS Secret Access Key"
现在,当我尝试从 AWS 控制台在我的 knife.rb 中设置安全凭证时,我得到了一个
ERROR: You did not provide a valid 'AWS SSH Key Id' value.
而且,当我创建一个新的“密钥对”时,我得到了一些 .pem 文件,这也让我感到困惑。
如何设置我的 knife 和 EC2 以创建新节点?
我假设您在创建新节点时收到此错误,而不是在您尝试在 knife.rb 中设置安全凭证时收到此错误。
准确地说,错误应该在您启动时出现:
knife ec2 server create -I <ami-id>
错误
knife ec2 server create
是由于您的命令中缺少 SSH 密钥对。每当启动 Amazon EC2 实例时,您都需要指定 SSH 密钥对。此 SSH 公钥被添加到新启动的实例以启用无密码 SSH 登录。可以创建或导入密钥对。密钥对(适用于美国东部地区)可以在亚马逊 AWS 控制台的EC2 -> 密钥对部分找到。选择 SSH 密钥对后,您可以在
knife ec2 create
命令中将其名称指定为:knife ec2 server create -I <ami-id> -S <your-ssh-keypair-name>
注意:这将从指定的ami-id和 SSH 密钥对启动 EC2 实例。
knife bootstrap
实例启动后,Knife 将继续运行。为此,您需要确保 SSH 密钥对的私钥在启动knife ec2 server create
. 您可能还想使用--server-url
选项指定您的 Chef 服务器 URLknife ec2 server create
。如果要将设置存储在 knife.rb 文件中:
pemfilename应该是没有 .pem 扩展名的 pem 文件名,它必须位于:~/.ssh/ 此外,它必须被 chmodded 600:(chmod 600 ~/.ssh/pemfile.pem)
所以如果你的 pem 文件是~/.ssh/mypem.pem你需要设置:
然后访问密钥和秘密访问密钥:
保存文件后,您可以运行:
正如上面提到的 rhetonik - 您需要指定要用于新服务器的密钥对名称。一种选择是使用 -S 开关直接将其传递给
knife ec2
命令,另一种选择是将类似的内容添加到您的knife.rb
配置文件中:除了其他答案。aws_ssh_key_id必须是使用您的 AWS 账户注册的“密钥对名称”之一。这通常与您的 ssh 密钥文件名相对应,但也可以不同。
您可以在 EC2“网络与安全 -> 密钥对”屏幕中看到这些 aws ec2“密钥对名称”值。
如果您使用的是 AWS CLI,您还可以在运行时查看“KeyName”值
aws ec2 describe-key-pairs