У меня следующая проблема: после завершения настройки я пытаюсь подключиться к экземпляру, чтобы выполнить настройку на 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 (которые необходимы, поскольку они могут быть неправильными. Как это отладить?