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をセットアップするにはどうすればよいですか?
このエラーが発生していると想定しています新しいノードの作成中ではなく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-url
のknife ec2 server create
オプションを使用して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'
次に、アクセスキーとシークレットアクセスキー:
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]"
上記のrhetonikのように、新しいサーバーに使用するキーペア名を指定する必要があります。 1つのオプションは、-Sスイッチを使用してknife ec2
コマンドに直接渡すことです。もう1つのオプションは、そのようなものをknife.rb
構成ファイルに追加することです。
ナイフ[:aws_ssh_key_id] = "myawshosts"
他の答えに加えて。 aws_ssh_key_idは、AWSアカウントに登録されている「キーペア名」の1つである必要があります。これは通常、SSHキーファイル名に対応しますが、異なる場合があります。
これらのawsec2 'キーペア名'の値は、EC2 'ネットワークとセキュリティ->キーペア'画面で確認できます。
AWS CLIを使用している場合は、aws ec2 describe-key-pairs
の実行時に「KeyName」の値も確認できます