J'essaie donc d'exécuter ansible sur mes instances ec2 sur aws, pour la première fois sur une nouvelle instance, mais chaque fois que j'essaie d'exécuter un jeu, je ne peux pas contourner ce message d'erreur:
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/ans_test.retry
localhost : ok=0 changed=0 unreachable=0
failed=1
Je pense qu'il peut y avoir un problème avec les autorisations de mon utilisateur et de mon groupe IAM. J'ai donné à mon utilisateur et groupe IAM ReadOnlyAccess, AdministratorAccess et PowerUserAccess. J'ai un identifiant d'accès et une clé d'accès secrète que je définis comme variable d'environnement avec les commandes:
export AWS_ACCESS_KEY_ID='AK123'
export AWS_SECRET_ACCESS_KEY='abc123'
Avec "AK123" et "abc123" remplacés par mes valeurs d'identification et de clé réelles. Que dois-je faire d'autre pour que la tâche ansible ec2 fonctionne?
METTRE À JOUR:
J'ai résolu le problème, je suppose que je n'avais pas vraiment une bonne compréhension des variables environnementales. Je l'ai corrigé en définissant simplement mes aws_access_key et aws_secret_key à l'intérieur de ma tâche ec2, ci-dessous mon playbook de travail
- hosts: localhost
connection: local
gather_facts: False
tasks:
#this task creates 5 ec2 instances that are all named demo and are copies of the image specified
- name: Provision a set of instances
ec2:
aws_access_key: .....
aws_secret_key: ....
key_name: .....
group: .....
instance_type: t2.micro
image: ......
region: us-east-1
ec2_url: .......
wait: true
exact_count: 5
count_tag:
Name: Demo
instance_tags:
Name: Demo
register: ec2
Je suppose que maintenant je dois commencer à utiliser le coffre-fort ansible pour simplement garder ma clé et mon identifiant.
J'ai résolu le problème, je suppose que je n'avais pas vraiment une bonne compréhension de ce que sont les variables environnementales. Je l'ai corrigé en définissant simplement mes aws_access_key et aws_secret_key à l'intérieur de ma tâche ec2, ci-dessous mon playbook de travail
- hosts: localhost
connection: local
gather_facts: False
tasks:
#this task creates 5 ec2 instances that are all named demo and are copies of the image specified
- name: Provision a set of instances
ec2:
aws_access_key: .....
aws_secret_key: ....
key_name: .....
group: .....
instance_type: t2.micro
image: ......
region: us-east-1
ec2_url: .......
wait: true
exact_count: 5
count_tag:
Name: Demo
instance_tags:
Name: Demo
register: ec2
Je suppose que maintenant je dois commencer à utiliser le coffre-fort ansible pour simplement garder ma clé et mon identifiant.
Pour ceux qui rencontrent ce problème, vous pouvez le résoudre en définissant le paramètre become/Sudo: False
et connection: local
dans le playbook.
---
- hosts: localhost
connection: local
become: False
tasks:
...
...
J'espère que cela aidera les autres.
Dans mon cas, les variables doivent avoir été entre guillemets (simples ou doubles, peu importe).
MAUVAIS:
export AWS_ACCESS_KEY_ID=AK123
export AWS_SECRET_ACCESS_KEY=abc123
BIEN:
export AWS_ACCESS_KEY_ID='AK123'
export AWS_SECRET_ACCESS_KEY='abc123'
BIEN:
export AWS_ACCESS_KEY_ID="AK123"
export AWS_SECRET_ACCESS_KEY="abc123"