В доступе отказано (publickey) при подключении к экземпляру через ansible-playbook - PullRequest
0 голосов
/ 03 октября 2019

У меня следующая проблема: после завершения настройки я пытаюсь подключиться к экземпляру, чтобы выполнить настройку на EC2, но всегда получаю очень длинную ошибку с выводом:

fatal: [52.59.210.223]: UNREACHABLE! => {Permission denied (publickey)

Вход в экземпляр черезSSH через консоль успешно. Вот мой код:

  gather_facts: False
  vars:
    instance_type: t2.micro
    security_group: webservers_sg
    image: ami-090f10efc254eaf55
    keypair: keypair
    region: eu-central-1
    count: 2
  vars_files:
    - awskey
- name: Create EC2 instances
      ec2:
        key_name: keypair
        aws_access_key: "{{ aws_access_key }}"
        aws_secret_key: "{{ aws_secret_key }}"
        instance_type: "{{ instance_type }}"
        image: "{{ image }}"
        region: eu-central-1
        group_id:
          - "{{ webservers_group.group_id }}"
          - "{{ elb.elb.security_group_ids | first }}"
        wait: yes
        instance_tags:
          application: webservers
        count_tag:
          application: webservers
        exact_count: 2
      register: ec2_instances
- hosts: ec2_instance_ips
  gather_facts: no
  remote_user: ubuntu
  become: True
  tasks:
    - name: Install nginx
      apt:
        key_pair: keypair
        name: nginx
        state: present
    - name: Create default index page
      copy:
        dest: /usr/share/nginx/html/index.html
        content: "Hello from {{ ansible_hostname }}"
    - name: Restart nginx
      service:
      name: nginx

- hosts: localhost
  tasks:
    - name: Add each EC2 instance to the ELB
      ec2_elb:
        state: present
        ec2_elbs: "{{ application }}-load-balancer"
        region: "{{ item.region }}"
        instance_id: "{{ item.id }}"

Ec2_instance_ip добавляется в динамический инвентарь через ресурс add_host. Он добавляется в файл ssh known_host через ресурс known_host. Файл Pem находится в той же директории, что и playbook, и находится в файлах var как key_pair.

Обновление: теперь я знаю, что при использовании динамического инвентаризации есть что-то вроде файлов ec2.py и ec2.ini, которые нужно добавить в качестве инвентаря в команду ansible-playbook. Но теперь я получил ошибку, что AWS_ACCESS_KEY и AWS_SECRET_KEYS (которые необходимы, поскольку они могут быть неправильными. Как это отладить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...