2016-05-15 17 views
6

Trong tài liệu ansible intro_configuration người ta nói rằng:Ansible không tìm kiếm các module trong ./library cùng playbook

Ansible ... nó cũng sẽ tìm kiếm các module trong”./library” thư mục bên cạnh một cuốn sách.

Im trường hợp của tôi cách duy nhất tôi nhận được rằng chỉ thị cung cấp bởi gaqzi.ssh-config được nhìn thấy bởi ansible là để xuất khẩu một cách rõ ràng ANSIBLE_LIBRARY với một đường dẫn đầy đủ; (

Without rằng gaqzi.ssh-config Module không được tìm thấy bởi ansible, liên quan đến tài liệu là cần.

Dưới đây là những gì tôi phải làm gì để làm cho nó hoạt ::

$ 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 

làm thế nào tôi có thể dynamicaly kiểm tra những nơi Ansible là tái đồng minh tìm kiếm 'thư viện'?

PS1: Tôi đang sử dụng ansible 2.0 và lang thang 1.8.1 ::

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

PS2: Tôi đã chăm sóc để loại bỏ tất cả các file ansible.cfg/.ansible.cfg trừ một trong những cung cấp bởi ubuntu trong /etc/ansible/ansible.cfg

+0

Điều gì sẽ xảy ra nếu bạn lưu trữ mô-đun trong đường dẫn vai trò của mình? (ví dụ 'roles_path') – chilladx

+0

Tôi thực sự muốn giúp cải thiện tài liệu, vì vậy tôi cần phải chắc chắn rằng ansible không làm những gì được dự kiến ​​sẽ cung cấp một báo cáo lỗi hữu ích. – user3313834

+0

Tôi thấy giống nhau khi thử nghiệm với Ansible 2.0.0.2 một lúc trước. Nếu bạn chỉ tìm kiếm một giải pháp, tôi sẽ đặt các mô-đun vào trong một vai trò. Ansible sẽ tìm kiếm các mô-đun và plugin bên trong bất kỳ vai trò nào trong các thư mục vai trò của bạn, ví dụ: 'vai trò/foo/thư viện' – udondan

Trả lời

6

Ansible thực sự tìm kiếm trong thư mục current_playbook/library.

Bạn có thể kiểm tra điều này với các thiết lập sau:

  1. Nơi này custom_module.py vào library subdir:

    #!/usr/bin/python 
    import json 
    print json.dumps({"hello" : "world"}) 
    
  2. Tận dụng tối test.yml playbook sau:

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

Với ansible-galaxy bạn cài đặt vai trò, không mô-đun.
Tham số -p cho ansible-galaxy xác định ROLE_PATH.

Nếu bạn muốn chỉ là một mô-đun ssh_config từ vai trò gaqzi.ssh-config,
bạn cần phải sao chép ssh_config.py từ current_playbook/library/gaqzi.ssh-config/library vào current_playbook/library.

Hoặc bạn có thể cài đặt vai trò gaqzi.ssh-config vào thư mục roles, như mong đợi.
Sau đó sửa đổi playbook bạn để áp dụng vai trò này bằng cách thêm:

roles: 
    - gaqzi.ssh-config 

Sau khi áp dụng vai trò này, mô-đun ssh_config sẽ trở nên có sẵn trong playbook của bạn.

+0

Nếu bạn muốn mô-đun hoạt động với vai trò, bạn nên đặt thư mục thư viện bên trong thư mục vai trò. Tôi vừa xác nhận. – einarc

0

Trên thực tế, bạn có thể đặt một module vai trò như một sự phụ thuộc về vai trò của mình, ví dụ như trong meta/file main.yml của bạn:

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

Sau đó, bạn có thể bắt đầu sử dụng các mô-đun trong vai trò của mình.

Các vấn đề liên quan