2014-12-29 16 views
13

tl;dr = In che modo gli utenti di OS X consigliano di aggirare questo errore di autorizzazione?Il ruolo ansible-galaxy fallisce con "non avere il permesso di modificare/etc/ansible/ruoli /"

Sono su OS X 10.10.1 e di recente ho installato Ansible eseguendo il seguente:

sudo pip install ansible --quiet 
sudo pip install ansible --upgrade 

Voglio iniziare con un ruolo galassia per installare homebrew e andò a eseguire questo uno con il seguente errore:

$ ansible-galaxy install geerlingguy.homebrew 
- downloading role 'homebrew', owned by geerlingguy 
- downloading role from https://github.com/geerlingguy/ansible-role-homebrew/archive/1.0.1.tar.gz 
- extracting geerlingguy.homebrew to /etc/ansible/roles/geerlingguy.homebrew 
- error: you do not have permission to modify files in /etc/ansible/roles/geerlingguy.homebrew 
- geerlingguy.homebrew was NOT installed successfully. 
- you can use --ignore-errors to skip failed roles. 

Mentre vedo /etc è di proprietà di root, non vedo eventuali note nella documentazione dicendo che dovrei chmod nulla.

Per riferimento:

$ ansible --version 
ansible 1.8.2 
    configured module search path = None 

È questo previsto o è la mia installazione in qualche modo sbagliato?

risposta

16

Il percorso predefinito per i ruoli è /etc/ansible/roles. È necessario specificare --roles-path quando si utilizza ansible-galaxy. Ecco cosa dice ansible-galaxy install --help:

-p ROLES_PATH, --roles-path=ROLES_PATH 
    The path to the directory containing your roles. The 
    default is the roles_path configured in your 
    ansible.cfg file (/etc/ansible/roles if not 
    configured) 

È inoltre possibile impostare roles_path in ansible.cfg; see the documentation for details.

+0

Grazie per una risposta! Conosco il percorso predefinito e capisco che posso reindirizzare. La mia domanda potrebbe essere espressa più chiaramente come * come viene normalmente risolto questo errore da quelli su OS X? * Immagino che la definizione di '--roles-path' su ogni chiamata di galassia o playbook sarebbe fastidiosa. Ci deve essere un modo più intelligente. Qualche consiglio? – mbb

+1

Ho un 'roles_path' personalizzato nel mio file'/etc/ansible/ansible.cfg', attualmente impostato su una posizione all'interno della mia cartella home (ad esempio 'roles_path = ~/dev/ansible/roles'. (Vedere l'ultima riga nella risposta sopra) Se specifichi globalmente il 'roles_path', non dovrai mai specificarlo sulla riga di comando. – geerlingguy

+0

La tua seconda domanda ha una risposta con' ansible.cfg', segui il link per impostare il percorso corretto – tedder42

2

Come ho visto utilizzare "sudo" per installare Ansible, suppongo che sarà OK continuare a utilizzare "sudo" per l'installazione di ansible-galaxy. Ed è quello che ho appena fatto.

+0

Avrebbe bisogno di avere ansible a disposizione anche per root, che di default non lo è, infatti la tua risposta dovrebbe essere un commento del tutto. – Wtower

4

Oppure è possibile utilizzare brew per installare ansible. Per farlo si avrebbe bisogno di correre:

brew install ansible 

Se aveste eventuali installazioni precedenti, è possibile che si vedrà un messaggio come questo:

Error: The brew link step did not complete successfully The formula built, but is not symlinked into /usr/local Could not symlink bin/ansible Target /usr/local/bin/ansible already exists. You may want to remove it: rm '/usr/local/bin/ansible'

To force the link and overwrite all conflicting files: brew link --overwrite ansible

To list all files that would be deleted: brew link --overwrite --dry-run ansible

Possible conflicting files are: /usr/local/bin/ansible /usr/local/bin/ansible-console /usr/local/bin/ansible-doc /usr/local/bin/ansible-galaxy /usr/local/bin/ansible-playbook /usr/local/bin/ansible-pull /usr/local/bin/ansible-vault

Quindi, eseguire brew link --overwrite ansible a sistemare le cose. E ora sarai in grado di installare qualsiasi ruolo senza sudo.

Esempio:

» ansible-galaxy install bennojoy.redis
- downloading role 'redis', owned by bennojoy
- downloading role from https://github.com/bennojoy/redis/archive/master.tar.gz
- extracting bennojoy.redis to /usr/local/etc/ansible/roles/bennojoy.redis
- bennojoy.redis was installed successfully

Problemi correlati