Como configurar o knife e o EC2 para criar uma nova instância a partir da linha de comando?

4

Estou jogando com o Amazon EC2 para criar uma instância. Eu estava lendo aqui: aqui na documentação de faca para o EC2 , que eu precisa definir:

# EC2:
knife[:aws_access_key_id]     = "Your AWS Access Key"
knife[:aws_secret_access_key] = "Your AWS Secret Access Key"

Agora, quando tento definir as credenciais de segurança do console da AWS no meu knife.rb, recebo uma

ERROR: You did not provide a valid 'AWS SSH Key Id' value.

E, quando eu crio um novo "par de chaves" eu recebo um arquivo .pem, o que me confunde também.

Como configuro minha faca e o EC2 para criar um novo nó?

    
por poseid 27.01.2013 / 19:41

4 respostas

9

Estou assumindo que você está recebendo este erro ao criar um novo nó e não ao tentar definir as credenciais de segurança em seu knife.rb .

Para ser preciso, o erro deve aparecer quando você iniciar:

knife ec2 server create -I <ami-id>

O erro

ERROR: You did not provide a valid 'AWS SSH Key Id' value.

é devido a um par de chaves SSH ausente no seu comando knife ec2 server create . Você precisa especificar um par de chaves SSH sempre que iniciar uma instância do Amazon EC2. Essa chave pública SSH é adicionada a uma instância recém-lançada para ativar um login SSH sem senha. Pares de chaves podem ser criados ou importados. Os keypairs (para a região dos EUA-Leste) podem ser encontrados em EC2 - > Seção de keypairs do seu console Amazon AWS.

Depois de escolher um par de chaves SSH, você pode especificar seu nome no comando knife ec2 create como:

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

Nota : Isto irá lançar uma instância do EC2 a partir do ami-id especificado e com o par de chaves do SSH. O Knife prosseguirá em direção a knife bootstrap quando a instância for iniciada. Para fazer isso, você precisa ter certeza de que a chave privada do par de chaves do SSH é adicionada à sua sessão do agente ssh antes iniciando um knife ec2 server create . Você também pode especificar o URL do seu servidor Chef com a opção --server-url de knife ec2 server create .

    
por 28.01.2013 / 14:02
8

Se você quiser armazenar as configurações no arquivo knife.rb:

knife[:aws_ssh_key_id] = 'pemfilename'

pemfilename deve ser o nome do arquivo pem sem a extensão .pem e deve estar localizado em: ~ / .ssh / Além disso, tem que ser chmodded 600: (chmod 600 ~ / .ssh / pemfile.pem)

Então, se o seu arquivo pem é ~ / .ssh / mypem.pem você precisa definir:

knife[:aws_ssh_key_id] = 'mypem'

Em seguida, a chave de acesso e o segredo aceitam as chaves:

knife[:aws_access_key_id] = 'AAAAAAAAAAAAAAAAAAAA'
knife[:aws_secret_access_key] = 'UYUYW/IUYITYUIGGUGIUYGKJHGHG'

Depois de salvar o arquivo, você pode executar:

knife ec2 server create --node-name mynodename.mydomain.com --run-list "role[myrole]"
    
por 07.08.2013 / 23:00
2

Como o rhetonik mencionado acima - você precisa especificar o nome do par de chaves a ser usado para um novo servidor. Uma opção é passá-lo diretamente usando a opção -S para o comando knife ec2 , a outra opção é adicionar algo parecido ao seu arquivo de configuração knife.rb :

knife[:aws_ssh_key_id] = "myawshosts"

    
por 15.02.2013 / 03:42
1

Além das outras respostas. O aws_ssh_key_id deve ser um dos 'nomes de pares de chaves' registrados em sua conta da AWS. Isso geralmente corresponde ao nome do seu arquivo de chave ssh, mas pode ser diferente.

Você pode ver estes valores aws ec2 'Nome do par de chaves' no EC2 'Rede & Segurança - > Tela de pares de chaves.

Se você estiver usando o AWS CLI, também poderá ver os valores "KeyName" ao executar aws ec2 describe-key-pairs

    
por 12.10.2014 / 15:09