web-dev-qa-db-ja.com

コマンドラインから新しいインスタンスを作成するようにknifeとEC2を構成するにはどうすればよいですか?

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ファイルが表示されます。これも混乱を招きます。

新しいノードを作成するためにナイフとEC2をセットアップするにはどうすればよいですか?

4
poseid

このエラーが発生していると想定しています新しいノードの作成中ではなく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コマンドにSSHキーペアがないことが原因です。 Amazon EC2インスタンスを起動するたびに、SSHキーペアを指定する必要があります。このSSH公開鍵は、パスワードなしのSSHログインを有効にするために、新しく起動されたインスタンスに追加されます。キーペアは作成またはインポートできます。キーペア(US-Eastリージョン用)は、Amazon AWSコンソールの EC2-> Keypairs section にあります。

SSHキーペアを選択したら、knife ec2 createコマンドでその名前を次のように指定できます。

knife ec2 server create -I <AMI-id> -S <your-ssh-keypair-name>

:これは、指定されたAMI-idから、SSHキーペアでEC2インスタンスを起動します。インスタンスが起動すると、ナイフはknife bootstrapに進みます。これを行うには、SSHキーペアの秘密鍵がssh-agentセッションに追加されていることを確認する必要がありますbeforeknife ec2 server createを開始します。 --server-urlknife ec2 server createオプションを使用してChefサーバーのURLを指定することもできます。

9
rhetonik

設定を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'

次に、アクセスキーとシークレットアクセスキー:

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]"
8
user184803

上記のrhetonikのように、新しいサーバーに使用するキーペア名を指定する必要があります。 1つのオプションは、-Sスイッチを使用してknife ec2コマンドに直接渡すことです。もう1つのオプションは、そのようなものをknife.rb構成ファイルに追加することです。

ナイフ[:aws_ssh_key_id] = "myawshosts"

2
Serhii Balbieko

他の答えに加えて。 aws_ssh_key_idは、AWSアカウントに登録されている「キーペア名」の1つである必要があります。これは通常、SSHキーファイル名に対応しますが、異なる場合があります。

これらのawsec2 'キーペア名'の値は、EC2 'ネットワークとセキュリティ->キーペア'画面で確認できます。

AWS CLIを使用している場合は、aws ec2 describe-key-pairsの実行時に「KeyName」の値も確認できます

1
Jason