2016-02-03 13 views
7

Sto utilizzando ansijet per automatizzare l'intuitivo playbook da eseguire con un clic del pulsante. Il libro di esercizi è di interrompere le istanze in esecuzione su AWS. Se eseguito, manualmente dalla riga di comando, la cartella di riproduzione viene eseguita correttamente e svolge le attività. Ma quando viene eseguito attraverso l'interfaccia web di ansijet, si incontra seguente erroreAutenticazione o errore di autorizzazione, non disponeva delle autorizzazioni per la directory remota

Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the remote directory. Consider changing the remote temp path in ansible.cfg to a path rooted in "/tmp". Failed command was: mkdir -p $HOME/.ansible/tmp/ansible-tmp-1390414200.76-192986604554742 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1390414200.76-192986604554742 && echo $HOME/.ansible/tmp/ansible-tmp-1390414200.76-192986604554742, exited with result 1: 

che segue è la configurazione di ansible.cfg.

# some basic default values... 

inventory  = /etc/ansible/hosts 
#library  = /usr/share/my_modules/ 
remote_tmp  = $HOME/.ansible/tmp/ 
pattern  = * 
forks   = 5 
poll_interval = 15 
sudo_user  = root 
#ask_sudo_pass = True 
#ask_pass  = True 
transport  = smart 
#remote_port = 22 
module_lang = C 

cerco di cambiare il percorso remote_tmp a /home/ubuntu/.ansible/tmp Ma ancora ottenere lo stesso errore.

risposta

2

Per impostazione predefinita, l'utente Ansible si connette ai server remoti come sarà lo stesso nome in cui l'utente può eseguire. Nel caso di Ansijet, proverà a connettersi ai server remoti con qualsiasi utente abbia avviato il processo node.js di Ansijet. È possibile sovrascriverlo specificando remote_user in una cartella di gioco o globalmente nel file ansible.cfg.

Ansible proverà a creare la directory temporanea se non esiste già, ma non sarà in grado di farlo se quell'utente non ha una directory home o se le autorizzazioni della propria directory home non gli consentono l'accesso in scrittura.

Ho effettivamente modificato la directory temporanea nel mio file ansible.cfg in modo che faccia riferimento a una posizione in/tmp che risolva questo tipo di problemi.

remote_tmp = /tmp/.ansible-${USER}/tmp

+0

ansijet è in esecuzione come utente di Ubuntu. Ho cambiato il percorso di 'remote_user' e' remote_tmp' come da lei detto. Ma ancora affrontando lo stesso errore. –

+0

È lo stesso errore esatto o il messaggio è cambiato dopo aver modificato la configurazione di remote_tmp ansible.cfg? –

+0

C'erano due playbook, uno è quello di avviare l'istanza altro è quello di fermarlo. Ora, dopo aver modificato secondo il tuo suggerimento, il playbook per avviare le istanze funziona bene, ma ottiene lo stesso errore nel playbook per fermare l'istanza. –

-1

Ho affrontato lo stesso problema qualche tempo fa e risolto in questo modo. Il caso possibile è che la directory /tmp del server remoto non disponesse di autorizzazioni sufficienti per scrivere. Esegui il comando ls -ld /tmp per assicurarti che l'output sia simile a questo drwxrwxrwt 7 root root 20480 Feb 4 14:18 /tmp Ho l'utente root come superutente e /tmp ha l'autorizzazione 1777.

Anche per me semplicemente - remote_tmp = /tmp ha funzionato bene.

Un altro controllo dovrebbe essere assicurarsi che $ HOME sia presente dalla shell che si sta tentando di eseguire. Ansible esegue i comandi tramite la shell /bin/sh e non /bin/bash. Assicurarsi che $ HOME sia presente nella shell sh.

+0

/tmp ha permessi speciali sui sistemi linux (sticky bit), non è semplicemente 777 che potrebbe essere una vulnerabilità di sicurezza per alcune applicazioni che usano/tmp. Utilizzare/tmp da solo se nessun altro utente esegue i Playbook contro questi computer (otterranno un errore di autorizzazione) –

+0

Sì, hai ragione. Sticky bit dovrebbe essere impostato su '/ tmp'. Anche se è impostato sul mio, le autorizzazioni dovrebbero essere 1777 e non 0777. Correggibili nella risposta di cui sopra.Grazie per avermelo fatto notare –

+0

Mai eseguito il playbook con due utenti contemporaneamente. Ma sì, potrebbe essere un caso possibile e potrebbe rompersi se due utenti diversi lo usano contemporaneamente. –