2015-01-21 16 views
6

Tôi đang sử dụng mô-đun không lưu trữ của Ansible và điều đó dường như không hoạt động để trích xuất tệp chiến tranh. Nó hoạt động tốt cho .tar.Làm thế nào để trích xuất tập tin chiến tranh trên mục tiêu sử dụng ansible

Ngoài ra còn có một nút chuyển đổi setype: "nhập một phần của bối cảnh tệp SELinux" mà tôi không chắc chắn có thể được sử dụng để đặt loại tệp là chiến tranh hay không.

Tôi cố gắng này:

-name: Unpack war 
unarchive: src=~/wars/mywar.war 
      dest=/tmp/deploy 
      setype=war 
      copy=no 

nó mang lại cho lỗi: msg: Failed to find handler to unarchive. Make sure the required command to extract the file is installed.

Khi tôi không sử dụng 'setype' tôi nhận được chính xác cùng một lỗi một lần nữa.

Làm cách nào để trích xuất tệp chiến tranh bằng Ansible?

+0

setype có gì để làm với nó đó là vì "Security Enhanced Linux" không cho một loại tập tin. – serverhorror

Trả lời

0

Theo tài liệu Ansible cho số unarchive module, nó chỉ hỗ trợ các tệp nén tar, gzip, bzip2 và xz. Tôi nhanh chóng duyệt qua nguồn và không thấy bất kỳ dấu hiệu nào cho thấy nó hỗ trợ các tập tin chiến tranh không nén. Bạn có thể sẽ cần phải giải nén tập tin chiến tranh bằng tay bằng cách gọi/path/to/java/bin/jar bằng tay thông qua lệnh hoặc mô-đun trình bao.

Chỉnh sửa: Ngoài ra, thông số setype không có nghĩa là chỉ định loại tệp lưu trữ. Tham số đó phải làm với SELinux (Linux nâng cao bảo mật). Nếu bạn không quen với SELinux thì bạn có thể không cần phải sử dụng tham số đó chút nào.

+1

cũng thường xuyên nén/giải nén. Nhưng từ những gì tôi đọc, các tệp war/jar về cơ bản là zips ... – Mxx

+0

Về cơ bản chúng là các tệp zip nhưng chúng sử dụng lệnh jar để đóng gói/giải nén chúng thay vì lệnh unzip/untar/gunzip. Mô-đun ansible sẽ cần phải được sửa đổi để hỗ trợ sử dụng lệnh jar khi tệp chiến tranh được chỉ định để hỗ trợ giải nén chúng. –

+0

Tôi đề xuất một giải pháp trước đó nói chính xác điều này. Nó là sai :) 'ansible -i ../inventory/hosts local -m unarchive -a" src = zip-content.war dest =./Trích xuất "-v' (tập tin chiến tranh được tạo bằng' zip -r ... 'từ dòng lệnh) - Tôi không thể nhận xét về lỗi thực tế mà OP có. – serverhorror

0

Tôi đã tự mình gặp phải lỗi này với lưu trữ ZIP - không thành công vì ZIP chưa hoàn tất. Kiểm tra xem bạn có thể chạy trực tiếp unzip ~/wars/mywar.war trên máy chủ không và bạn có thể nhận được thông báo lỗi hữu ích hơn.

1

Bạn có thể hủy lưu trữ tệp .war bằng Ansible. Bạn có chắc chắn rằng 'giải nén' được cài đặt & lệnh 'giải nén' có sẵn trên hệ thống đích của bạn không?

Theo Ansible Documentation: "đòi hỏi gtar/lệnh unzip trên host mục tiêu"

+0

Bạn cũng có thể chạy ansible với tham số '-vvv' để có được kết xuất tiết hơn - thường cho bạn biết vấn đề là gì. – trainmaster

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