Mặc dù bạn không thực sự cung cấp bất kỳ thông tin nào về việc mã của bạn bị lỗi như thế nào, vẫn có một số vấn đề rõ ràng. Ansible không phải là trình bao và bạn không thể truy cập các biến Ansible bằng cú pháp trình bao. Bạn cũng có các tên biến khác nhau trong mã của mình (javaurl
) và trong lệnh gọi CLI ví dụ của bạn (java_url
). Tôi đã tùy ý chọn sử dụng java_url bên dưới.
Có nhiều cách để bắt đầu sửa tác vụ hiện tại.
# Kiên trì sử dụng Jinja
- tên: Tải Java về Phiên bản Mới nhất
vỏ: |
mkdir /opt/java
cd /opt/java
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" {{ java_url }}
tar -xzvf {{ (java_url | urlsplit).path | tên cơ sở }}
# Sử dụng nhất quán các biến shell
- tên: Tải Java về Phiên bản Mới nhất
vỏ: |
mkdir /opt/java
cd /opt/java
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" $java_url
tar -xzvf ${java_url##*/}
môi trường:
java_url: "{{ java_url }}"
Tuy nhiên, thay vì sửa tập lệnh shell của bạn, bạn nên viết lại nó bằng các tính năng dựng sẵn của Ansible để thực hiện công việc này.
- tên: Tạo /opt/java
tập tin:
đích: /opt/java
trạng thái: thư mục
- tên: Tải xuống Java JDK
lấy_url:
url: "{{ java_url }}"
đích: /opt/java
tiêu đề:
Cookie: oraclelicense=accept-securebackup-cookie
đăng ký: kết quả
- tên: Giải nén Java JDK
hủy lưu trữ:
src: "{{ result.dest }}"
remote_src: đúng
đích: /opt/java