2016-03-02 22 views
8

Quindi sto provando a eseguire ansible sulle mie istanze ec2 su aws, per la prima volta su una nuova istanza, ma ogni volta che provo a eseguire una riproduzione non riesco a aggirare questo errore messaggio:msg: nessun gestore era pronto per l'autenticazione. Sono stati controllati 1 gestori. ['HmacAuthV4Handler'] Controlla le tue credenziali

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 

Penso che ci possa essere qualcosa di sbagliato con le autorizzazioni nel mio utente e gruppo IAM. Ho dato il mio utente IAM e gruppo ReadOnlyAccess, AdministratorAccess e PowerUserAccess. Ho un ID di accesso e la chiave di accesso segreto che io pongo come variabile d'ambiente con i comandi:

export AWS_ACCESS_KEY_ID='AK123' 
    export AWS_SECRET_ACCESS_KEY='abc123' 

Con 'AK123'and 'abc123' sostituito con il mio id reale e valori chiave. Cos'altro devo fare per far funzionare l'attività ec2 di ansible?

UPDATE:
Ho risolto il problema, credo di non avere una solida conoscenza di quali siano le variabili ambientali. Ho riparato semplicemente impostando il mio aws_access_key e aws_secret_key all'interno del mio compito EC2, di seguito è il mio playbook di lavoro

- 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 

Credo che ora ho bisogno di iniziare a utilizzare caveau ansible di tenere solo la mia chiave e ID.

+0

Puoi includere il playbook nella tua domanda? – jonatan

+0

Penso che Ansible non manterrà le variabili ambientali durante l'intera riproduzione. Hai provato a impostare le variabili nel comando, come 'command:" export AWS_ACCESS_KEY_ID = 'AK123' && export AWS_SECRET_ACCESS_KEY = 'abc123' && actual command "'? –

risposta

3

Ho risolto il problema, credo di non avere una solida conoscenza di quali siano le variabili ambientali. Ho riparato semplicemente impostando il mio aws_access_key e aws_secret_key all'interno del mio compito EC2, di seguito è il mio playbook di lavoro

- 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 

Credo che ora ho bisogno di iniziare a utilizzare caveau ansible di tenere solo la mia chiave e ID.

8

Per coloro che hanno riscontrato questo problema, è possibile risolverlo impostando become/sudo: False e connection: local nel playbook.

--- 
- hosts: localhost 
    connection: local 
    become: False 
    tasks: 
    ... 
    ... 

Spero che questo aiuti gli altri.

1

Nel mio caso le variabili devono essere stati tra virgolette (singole o doppie non importa).

BAD:

export AWS_ACCESS_KEY_ID=AK123 
export AWS_SECRET_ACCESS_KEY=abc123 

BUONO:

export AWS_ACCESS_KEY_ID='AK123' 
export AWS_SECRET_ACCESS_KEY='abc123' 

BUONO:

export AWS_ACCESS_KEY_ID="AK123" 
export AWS_SECRET_ACCESS_KEY="abc123" 
+0

È importante che molti di voi abbiano caratteri speciali nel var. Le virgolette singole, ad esempio, non espandono $ o!, Dove lo saranno i doppi. Ciò causerà errori di autenticazione se usi il doppio con questi caratteri – krad