2016-05-15 6 views
6

W ansibl dokumentacji intro_configuration jest powiedziane, że:ansibl nie szuka modułów ./library obok playbook

ansibl ... to też będzie szukał modułów w”./library” katalogu obok poradnik.

Im moim przypadku jedynym sposobem mam, że dyrektywa dostarczenie przez gaqzi.ssh-config był postrzegany przez ansibla było wyraźnie eksport ANSIBLE_LIBRARY z pełną ścieżką; (

Bez tego modułu gaqzi.ssh-config nie zostanie znaleziony przez ansibla, dotyczące dokumentacja powinna.

Oto co mam zrobić, aby to działało ::

$ cd playbook # my folder were the plabooks are 
$ ansible-galaxy install -p library gaqzi.ssh-config # I get a lib 
$ export ANSIBLE_LIBRARY=/home/me/full/path/to/the/above/playbook/library 
$ # the export above is annoying 

Jak mogę dynamicznie sprawdzić miejsca ansibl jest re sprzymierzeńca szukający "biblioteki"?

PS1: Używam ansibl 2,0- i Vagrant 1.8.1 ::

$ vagrant --version 
Vagrant 1.8.1 
$ ansible --version 
ansible 2.0.0.2 
config file = /etc/ansible/ansible.cfg 
$ 

PS2: I zadbał, aby usunąć wszystkie pliki ansible.cfg/.ansible.cfg wyłączonych z jednego dostarczenie przez Ubuntu /etc/ansible/ansible.cfg

+0

Co zrobić, jeśli moduł jest przechowywany w ścieżce ról? (tzn. 'roles_path') – chilladx

+0

Naprawdę chciałbym pomóc w ulepszeniu dokumentacji, więc muszę się upewnić, że ansible nie robi tego, co powinno dostarczyć użytecznych raportów o błędach. – user3313834

+0

Znalazłem to samo, eksperymentując z Ansible 2.0.0.2 jakiś czas temu. Jeśli szukasz rozwiązania, moim zadaniem było umieszczenie modułów w roli. Aplikacja Ansible będzie szukać modułów i wtyczek w dowolnej roli w folderach ról, np. 'roles/foo/library' – udondan

Odpowiedz

6

Odpowiednik faktycznie znajduje się w katalogu current_playbook/library.

Można to sprawdzić w poniższej konfiguracji:

  1. Place to custom_module.py do library podkat:

    #!/usr/bin/python 
    import json 
    print json.dumps({"hello" : "world"}) 
    
  2. Dokonaj następującego test.yml playbook:

    --- 
    - hosts: localhost 
        tasks: 
        - name: custom module 
         custom_module: 
    
  3. Execute ansible-playbook -vv test.yml

Z ansible-galaxy zainstalowaniu rolę, nie moduł.
Parametr -p dla ansible-galaxy definiuje ROLE_PATH.

Jeśli chcesz tylko moduł ssh_config z gaqzi.ssh-config roli
trzeba skopiować ssh_config.py z current_playbook/library/gaqzi.ssh-config/library do current_playbook/library.

Alternatywnie można zainstalować rolę gaqzi.ssh-config w katalogu roles zgodnie z oczekiwaniami.
Następnie zmodyfikować playbook zastosować tę rolę, dodając:

roles: 
    - gaqzi.ssh-config 

Po zastosowaniu tej roli, moduł ssh_config będzie dostępny w Poradniku.

+0

Jeśli chcesz, aby moduł działał z określoną rolą, powinieneś umieścić folder biblioteki wewnątrz folderu roli. Właśnie potwierdziłem. – einarc

0

Właściwie można ustawić moduł roli uzależnienia swojej roli, na przykład w pliku meta/main.yml:

--- 
dependencies: 
    - { role: gaqzi.ssh-config } 

Następnie można uruchomić za pomocą modułu w swojej roli.

Powiązane problemy