2014-07-03 13 views
10

Tôi đang sử dụng Ansible và tôi có một số vấn đề với đường dẫn mẫu. Đây là kết quả báo lỗi khi tôi thực hiện:Tại sao Ansible không đọc các mẫu trong đường dẫn tương đối?

$ ansible-playbook -i hosts site.yml 

PLAY [users] ****************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [10.0.3.240] 

TASK: [templates] ************************************************************* 
fatal: [10.0.3.240] => {'msg': 'unable to read /home/robe/Desktop/ansible_demo/fig.conf.j2', 'failed': True} 
fatal: [10.0.3.240] => {'msg': 'unable to read /home/robe/Desktop/ansible_demo/fig.conf.j2', 'failed': True} 

FATAL: all hosts have already failed -- aborting 

PLAY RECAP ******************************************************************** 
      to retry, use: --limit @/home/robe/site.retry 

10.0.3.240     : ok=1 changed=0 unreachable=1 failed=0 

Đó là cấu trúc dự án của tôi:

$ tree 
. 
├── ansible.cfg 
├── hosts 
├── roles 
│   └── users 
│    ├── files 
│    ├── handlers 
│    │   └── main.yml 
│    ├── tasks 
│    │   └── main.yml 
│    ├── templates 
│    │   └── fig.conf.j2 
│    └── vars 
│     └── main.yml 
├── site.yml 
└── Vagrantfile 

Nó là mã site.yml tôi:

--- 
- hosts: users 
    remote_user: root 
    sudo: True 
    tasks: 
    - name: templates 
    template: src="fig.conf.j2" dest="/home/vagrant/fig.conf" 

Sau đó, tại sao Ansible doesn' t nhìn vào thư mục mẫu và nó chỉ trông trong thư mục gốc.

+0

tại sao bạn không gọi 'mẫu' từ người dùng/tác vụ/main.yml? 'Fig.conf' rõ ràng là một phần của vai trò' người dùng'. – tedder42

Trả lời

16

Ansible sẽ chỉ xem trong thư mục vai trò/người dùng/mẫu khi bạn sử dụng rõ ràng vai trò "người dùng" mà bạn không sử dụng trong ví dụ của mình. Để làm những gì bạn muốn, bạn cần phải thay đổi site.yml của bạn để tìm một cái gì đó như thế này:

- hosts: users 
    remote_user: root 
    sudo: True 
    roles: 
    - { role: users } 

Sau đó, trong vai trò/người dùng/nhiệm vụ/bạn main.yml sẽ có:

- name: templates 
    template: src="fig.conf.j2" dest="/home/vagrant/fig.conf" 

Vai trò trong site.yml yêu cầu Ansible gọi các vai trò tập tin yaml/users/main.yml. Các tác vụ tham chiếu đến các tệp hoặc mẫu trong vai trò đó sẽ theo mặc định sẽ tìm trong vai trò/người dùng/tệp và vai trò/người dùng/mẫu cho các tệp/mẫu đó. Bạn có thể muốn đọc thêm về vai trò trong số Ansible documentation để đảm bảo bạn hiểu rõ hơn về cách chúng khớp với nhau.

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