我正在玩Amazon EC2创build实例。 我正在读这里: 在这里EC2的刀具文件 ,我需要设置:
# EC2: knife[:aws_access_key_id] = "Your AWS Access Key" knife[:aws_secret_access_key] = "Your AWS Secret Access Key"
现在,当我尝试从我的knife.rb中的AWS控制台设置安全证书时,我得到了一个
ERROR: You did not provide a valid 'AWS SSH Key Id' value.
而且,当我创build一个新的“密钥对”时,我会得到一些.pem文件,这也使我感到困惑。
我如何设置我的刀和EC2创build一个新的节点?
我假设您在创build新节点 时收到此错误, 而不是在您尝试在knife.rb中设置安全证书时收到此错误。
准确地说,当你启动时会出现错误:
knife ec2 server create -I <ami-id>
错误
ERROR: You did not provide a valid 'AWS SSH Key Id' value.
是由于在您的knife ec2 server create
命令缺lessSSH密钥对。 无论何时启动Amazon EC2实例,都需要指定SSH密钥对。 将此SSH公钥添加到新启动的实例中,以启用无密码SSHlogin。 钥匙对可以被创build或导入。 您可以在Amazon AWS控制台的EC2 – > Keypairs部分find密钥对(适用于美国东部地区)。
一旦你select了SSH Keypair,你可以在你的knife ec2 create
命令中指定它的名字:
knife ec2 server create -I <ami-id> -S <your-ssh-keypair-name>
注意 :这将从指定的ami-id和SSH密钥对启动一个EC2实例。 一旦实例启动,刀将进行knife bootstrap
。 为此,您需要确保在启动knife ec2 server create
之前,将SSH密钥对的私钥添加到您的ssh-agent会话中。 你可能也想knife ec2 server create
--server-url
选项指定你的Chef服务器的URL。
如果您想将设置存储在knife.rb文件中:
knife[:aws_ssh_key_id] = 'pemfilename'
pemfilename应该是没有.pem扩展名的pem文件名,它必须位于〜/ .ssh /中,而且必须是chmodded 600:(chmod 600〜/ .ssh / pemfile.pem)
所以如果你的pem文件是〜/ .ssh / mypem.pem,你需要设置:
knife[:aws_ssh_key_id] = 'mypem'
然后访问密钥和秘密encryption键:
knife[:aws_access_key_id] = 'AAAAAAAAAAAAAAAAAAAA' knife[:aws_secret_access_key] = 'UYUYW/IUYITYUIGGUGIUYGKJHGHG'
保存文件后,您可以运行:
knife ec2 server create --node-name mynodename.mydomain.com --run-list "role[myrole]"
正如上面提到的那样 – 您需要指定要用于新服务器的密钥对名称。 一个select是直接使用-S切换到knife ec2
命令,另一个选项是添加类似的东西到你的knife.rb
configuration文件:
刀[:aws_ssh_key_id] =“myawshosts”
除了其他的答案。 aws_ssh_key_id必须是在您的AWS账户中注册的“密钥对名称”之一。 这通常与您的ssh密钥文件名相对应,但可能有所不同。
您可以在EC2的“networking和安全 – >密钥对”屏幕中看到这些aws ec2“密钥对名称”值。
如果您正在使用AWS CLI,则在运行aws ec2 describe-key-pairs
时,还可以查看“KeyName”值