2016-04-06 11 views
6

私はAmazon EC2マシンを作成し、Anativesの助けを借りて提供したいと考えています。 は今、私は次のエラーを取得:可能なAmazon EC2。キーペアは存在しません

fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Instance creation failed => InvalidKeyPair.NotFound: The key pair '~/.keys/EC2-Kibi-Enterprise-Deployment.pem' does not exist"} 

をしかし.PEMキーが存在します。

$ ls -lh ~/.keys/EC2-Kibi-Enterprise-Deployment.pem 
-r-------- 1 sergey sergey 1.7K Apr 6 09:56 /home/sergey/.keys/EC2-Kibi-Enterprise-Deployment.pem 

そして、それは、EU(アイルランド)地域で作成されました。

-- 
- name: Setup servers on Amazon EC2 machines 
    hosts: localhost 
    gather_facts: no 

    tasks: 
    - include_vars: group_vars/all/ec2_vars.yml 

    ### Create Amazon EC2 instances 
    - name: Amazon EC2 | Create instances 
     ec2: 
     count: "{{ count }}" 
     key_name: "{{ key }}" 
     region: "{{ region }}" 
     zone: "{{ zone }}" 
     group: "{{ group }}" 
     instance_type: "{{ machine }}" 
     image: "{{ image }}" 
     wait: true 
     wait_timeout: 500 
     #vpc_subnet_id: "{{ subnet }}" 
     #assign_public_ip: yes 
     register: ec2 

    - name: Amazon EC2 | Wait for SSH to come up 
     wait_for: 
     host: "{{ item.public_ip }}" 
     port: 22 
     delay: 10 
     timeout: 60 
     state: started 
     with_items: "{{ ec2.instances }}" 

    - name: Amazon EC2 | Add hosts to the kibi_servers in-memory inventory group 
     add_host: hostname={{ item.public_ip }} groupname=kibi_servers 
     with_items: "{{ ec2.instances }}" 
    ### END 

### Provision roles 
- name: Amazon EC2 | Provision new instances 
    hosts: kibi_servers 
    become: yes 
    roles: 
    - common 
    - java 
    - elasticsearch 
    - logstash 
    - nginx 
    - kibi 
    - supervisor 
### END 

そして、私のvarファイル:

count: 2 
region: eu-west-1 
zone: eu-west-1a 
group: default 
image: ami-d1ec01a6 
machine: t2.medium 
subnet: subnet-3a2aa952 
key: ~/.keys/EC2-Kibi-Enterprise-Deployment.pem 

がここに.pemファイルの何が問題になっている。ここ

は私の脚本のですか?

答えて

10

keyのパラメータec2 moduleは、すでにローカル鍵ではなくAWSにアップロードされている鍵ペア名を探しています。

公開鍵をアップロードするには、ec2_key moduleを使用できます。

だからあなたの脚本は、次のようになります。

-- 
- name: Setup servers on Amazon EC2 machines 
    hosts: localhost 
    gather_facts: no 

    tasks: 
    - include_vars: group_vars/all/ec2_vars.yml 

    ### Create Amazon EC2 key pair 
    - name: Amazon EC2 | Create Key Pair 
     ec2_key: 
     name: "{{ key_name }}" 
     region: "{{ region }}" 
     key_material: "{{ item }}" 
     with_file: /path/to/public_key.id_rsa.pub 

    ### Create Amazon EC2 instances 
    - name: Amazon EC2 | Create instances 
     ec2: 
     count: "{{ count }}" 
     key_name: "{{ key_name }}" 
     ... 
+0

SSH鍵ペアをローカルに作成し、Amazonコンソールに公開鍵をインポートする必要はありますか?それは鍵ですか? – trex

+0

公開鍵(プライベート部分ではありません)をAWSにアップロードする必要があります。あなたはコンソールを介してそれを行うことができますし、この例のようにAnsibleを介して行うこともできます。 – ydaetskcoR

+0

'ec2_keypair'モジュールが存在しないようです。しかし、[ec2_key](http://docs.ansible.com/ansible/ec2_key_module.html)モジュールがあります。私はそれを使用し、また、 'key_name:〜/ .ssh/EC2-Kibi-Enterprise'をvarファイルに指定しました。今、私は次のエラーがあります: 'localhost =>(item = ssh-rsa AA ..."、 "msg": "どちらかの地域またはec2_urlを指定する必要があります"} '。 – trex

2

解決策が見出されました。 EC2は、.pemキーファイルのフルパスを置いたときに好きではありません。

だから、私は、~/.sshEC2-Kibi-Enterprise-Deployment.pemを移動使用してssh-addと認証エージェントにこれを追加しました:

ssh-add ~/.ssh/EC2-Kibi-Enterprise-Deployment.pem 

をそして、あなたが使用している場合、同じ
key: EC2-Kibi-Enterprise-Deployment.pem

に私のvarファイル内のキーの行を修正しましたEC2 cliツールでは、キーファイルへのフルパスを指定しないでください。
ec2-run-instances ami-d1ec01a6 -t t2.medium --region eu-west-1 --key EC2-Kibi-Enterprise-Deployment.pem

+0

〜/ .keys/EC2-Kibi- Enterprise-Deployment.pem to key:〜/ .keys/EC2-Kibi-Enterprise-Deployment –

関連する問題