如何configuration刀和EC2从命令行创build一个新的实例?

我正在玩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.rbconfiguration文件:

刀[:aws_ssh_key_id] =“myawshosts”

除了其他的答案。 aws_ssh_key_id必须是在您的AWS账户中注册的“密钥对名称”之一。 这通常与您的ssh密钥文件名相对应,但可能有所不同。

您可以在EC2的“networking和安全 – >密钥对”屏幕中看到这些aws ec2“密钥对名称”值。

如果您正在使用AWS CLI,则在运行aws ec2 describe-key-pairs时,还可以查看“KeyName”值