2016-04-28 36 views
7

Ho un sacco di ruoli di gala ansible e un sacco di ruoli personalizzati.Cambiare il ruolo role_sable con la disposizione vagabonda

Il problema è che non è possibile caricare ruoli personalizzati e ruoli galassia allo stesso tempo utilizzando un provisioner Vagrantfile :ansible.

Senza vagabondo, questo comando funziona bene come ho aggiunto la variabile ANSIBLE_ROLES_PATH ambiente:

ANSIBLE_ROLES_PATH=./custom_roles ansible-playbook project.yml --inventory dev.ini -vvvv --ask-sudo-pass 

La mia configurazione Vagrant è la seguente:

config.vm.provision :ansible do |ansible| 
    ansible.raw_arguments = ['--timeout=300'] 
    ansible.playbook = "project.yml" 
    ansible.verbose = "vvv" 
    ansible.groups = { 
    "env-dev:children" => ["app-web", "app-db"], 
    "app-web" => ["my-app"], 
    "app-db" => ["my-app"], 
    } 
end 

posso vedere che i ruoli di auto-carico ansible all'interno ./roles ma non posso aggiungere i miei ruoli personalizzati a questa directory a causa del controllo della versione (./roles è nel mio .gitignore)

Qui è la struttura di directory per avere una visione migliore di quello che sta succedendo:

- roles/ 
    - postgresql/... 
    - php/... 
- custom_roles/ 
    - my-role-1/... 
    - my-role-1/... 
- .gitignore   <- ignore ./roles 
- project.yml 
- roles.yml 
- dev.ini 
- Vagrantfile 
+0

Hai provato a mettere tutti i ruoli nella directory singolo 'ANSIBLE_ROLES_PATH'? – Wtower

+1

Sì, funziona ma non è pratico. Ho bisogno di ".gitignore" i ruoli della galassia ansible e ho bisogno di impegnare i miei ruoli personalizzati. Non dovrei elencare tutti i ruoli in modo indipendente nel file ignorato –

+0

Capisco, sfortunatamente è così che mi sto occupando di questo, mi piacerebbe vedere alcune altre opzioni. – Wtower

risposta

9

così ho avuto lo stesso problema, e hanno trovato una soluzione impostando la variabile ANSIBLE_ROLES_PATH ambiente.

Nella Vagrantfile:

Vagrant.configure('2') do |config| 
    vagrant_root = File.dirname(__FILE__) 
    ENV['ANSIBLE_ROLES_PATH'] = "#{vagrant_root}/infrastructure/provisioning/ansible/roles:#{vagrant_root}/infrastructure/provisioning/ansible/galaxy-roles" 

    # ansible provisioning 
    config.vm.provision :ansible do |ansible| 
    ansible.playbook = 'infrastructure/provisioning/ansible/playbook.yml' 
    ansible.galaxy_role_file = 'infrastructure/provisioning/ansible/dependencies.yml' 
    ansible.galaxy_roles_path = 'infrastructure/provisioning/ansible/galaxy-roles' 
    end 
end