แม้ว่าคุณจะไม่ได้ให้ข้อมูลว่ารหัสของคุณล้มเหลวอย่างไร แต่ก็ยังมีปัญหาบางอย่างที่ชัดเจน Ansible ไม่ใช่เชลล์ และคุณไม่สามารถเข้าถึงตัวแปร Ansible โดยใช้ไวยากรณ์ของเชลล์ คุณยังมีชื่อตัวแปรที่แตกต่างกันในรหัสของคุณ (ชวาล
) และในการเรียกใช้ CLI ตัวอย่างของคุณ (java_url
). ฉันเลือกใช้ java_url ด้านล่างโดยพลการ
มีหลายวิธีในการเริ่มแก้ไขงานที่มีอยู่
#ใช้จินจาอย่างต่อเนื่อง
- ชื่อ: ดาวน์โหลด Java เป็นเวอร์ชันล่าสุด
เปลือก: |
mkdir /opt/java
ซีดี /opt/java
wget -c --header "คุกกี้: oraclelicense=accept-securebackup-cookie" {{ java_url }}
tar -xzvf {{ (java_url | urlsplit).path | ชื่อฐาน }}
# ใช้ตัวแปรเชลล์อย่างสม่ำเสมอ
- ชื่อ: ดาวน์โหลด Java เป็นเวอร์ชันล่าสุด
เปลือก: |
mkdir /opt/java
ซีดี /opt/java
wget -c --header "คุกกี้: oraclelicense=accept-securebackup-cookie" $java_url
tar -xzvf ${java_url##*/}
สิ่งแวดล้อม:
java_url: "{{ java_url }}"
อย่างไรก็ตาม แทนที่จะแก้ไขเชลล์สคริปต์ของคุณ คุณควรเขียนใหม่โดยใช้ฟีเจอร์ในตัวของ Ansible สำหรับการทำงานนี้
- ชื่อ: สร้าง /opt/java
ไฟล์:
ปลายทาง: /opt/java
สถานะ: ไดเร็กทอรี
- ชื่อ: ดาวน์โหลด Java JDK
get_url:
url: "{{ java_url }}"
ปลายทาง: /opt/java
ส่วนหัว:
คุกกี้: oraclelicense=accept-securebackup-cookie
ลงทะเบียน: ผลลัพธ์
- ชื่อ: แยก Java JDK
ยกเลิกการเก็บถาวร:
src: "{{ ผลลัพธ์ปลายทาง }}"
remote_src: จริง
ปลายทาง: /opt/java