Я пытаюсь начать с возможности, в частности используя незанятую книгу для развертывания экземпляра ec2, но я все время получаю сообщение об ошибке.Ошибка запуска экземпляра ec2 с ansible
Я следовал код нашел в этой теме: Best way to launch aws ec2 instances with ansible
я подставил в собственных деталях, чтобы дать мне следующие
Файл хостов:
[local]
localhost
[webserver]
create_instance.yml
---
- name: Provision an EC2 Instance
hosts: local
connection: local
gather_facts: False
tags: provisioning
# Necessary Variables for creating/provisioning the EC2 Instance
vars:
instance_type: t2.micro
security_group: webserver # Change the security group name here
image: ami-f95ef58a # Change the AMI, from which you want to launch the server
region: eu-west-1 # Change the Region
keypair: MyKeyPair # Change the keypair name
count: 1
# Task that will be used to Launch/Create an EC2 Instance
tasks:
- name: Create a security group
local_action:
module: ec2_group
name: "{{ security_group }}"
description: Security Group for webserver Servers
region: "{{ region }}"
rules:
- proto: tcp
type: ssh
from_port: 22
to_port: 22
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 80
to_port: 80
cidr_ip: 0.0.0.0/0
rules_egress:
- proto: all
type: all
cidr_ip: 0.0.0.0/0
- name: Launch the new EC2 Instance
local_action: ec2
group={{ security_group }}
instance_type={{ instance_type}}
image={{ image }}
wait=true
region={{ region }}
keypair={{ keypair }}
count={{count}}
register: ec2
- name: Add the newly created EC2 instance(s) to the local host group (located inside the directory)
local_action: lineinfile
dest="./hosts"
regexp={{ item.public_ip }}
insertafter="[webserver]" line={{ item.public_ip }}
with_items: ec2.instances
- name: Wait for SSH to come up
local_action: wait_for
host={{ item.public_ip }}
port=22
state=started
with_items: ec2.instances
- name: Add tag to Instance(s)
local_action: ec2_tag resource={{ item.id }} region={{ region }} state=present
with_items: ec2.instances
args:
tags:
Name: webserver
Затем я создаю среду varia BLES для моих ключей AWS следующим образом:
export AWS_ACCESS_KEY=my aws key
export AWS_SECRET_KEY=my aws secret key
Когда я запускаю мой код с Судо анзибль-PlayBook -i хостов create_instance.yml Я получаю следующее сообщение об ошибке:
PLAY [localhost] **************************************************************
TASK: [make one instance] *****************************************************
failed: [localhost] => {"failed": true}
msg: No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV4Handler'] Check your credentials
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/home/ubuntu/create_instance.retry
localhost : ok=0 changed=0 unreachable=0 failed=1
Может
кого подскажите, где я могу ошибиться?
Не используйте sudo. Корневой пользователь (предположительно) не имеет загруженных переменных среды – ydaetskcoR
Спасибо за предложение, но пока не повезло. Чтобы подтвердить, что я правильно установил пару ключей, должна ли переменная «keypair» в моем yml-файле быть установлена в качестве моей пары ключей, которая уже загружена в AWS? Под этим я подразумеваю имя пары ключей, которую я использую для создания новых экземпляров ec2 через консоль AWS? Это то, что я использовал в настоящее время, но просто хочу проверить, что это правильно. – Rjodo
Это не так далеко. Это не работает, потому что у вас нет необходимых переменных соединения aws. Если вы используете sudo, то он не загрузит переменные, которые вы экспортируете в текущую оболочку. Альтернативой было бы указать «aws_access_key» и «aws_secret_key» vars в учебнике или в вашем инвентаре. – ydaetskcoR