
Ich möchte Java herunterladen vonhttp://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
dann extrahieren Sie es
tar -xzvf jdk-8u131-linux-x64.tar.gz
aber nicht in der Lage, es zu tun
Ich habe den folgenden Ansible Playbook-Code
- name: Download Java to Latest Version
shell: |
mkdir /opt/java
cd /opt/java
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" {{javaurl}}
tar -xzvf ${javaurl##*/}
- debug:
msg: "The Java sdk is {{javaurl##*/}}"
Ich habe die URL vom Ansible-Befehl wie unten angegeben übergeben
ansible-playbook -i inventory.yml -k playbook.yml --extra-vars "java_url=http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz"
Antwort1
Auch wenn Sie keine Informationen dazu geliefert haben, warum Ihr Code fehlschlug, gibt es einige offensichtliche Probleme. Ansible ist keine Shell, und Sie können nicht mit Shell-Syntax auf Ansible-Variablen zugreifen. Außerdem haben Sie in Ihrem Code ( javaurl
) und in Ihrem Beispiel-CLI-Aufruf ( java_url
) unterschiedliche Variablennamen. Ich habe mich unten willkürlich für die Verwendung von java_url entschieden.
Es gibt mehrere Möglichkeiten, mit der Behebung der bestehenden Aufgabe zu beginnen.
# Consistently use Jinja
- name: Download Java to Latest Version
shell: |
mkdir /opt/java
cd /opt/java
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" {{ java_url }}
tar -xzvf {{ (java_url | urlsplit).path | basename }}
# Consistently use shell variables
- name: Download Java to Latest Version
shell: |
mkdir /opt/java
cd /opt/java
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" $java_url
tar -xzvf ${java_url##*/}
environment:
java_url: "{{ java_url }}"
Anstatt Ihr Shell-Skript zu reparieren, sollten Sie es jedoch neu schreiben und dabei die in Ansible integrierten Funktionen für diese Arbeit verwenden.
- name: Create /opt/java
file:
dest: /opt/java
state: directory
- name: Download the Java JDK
get_url:
url: "{{ java_url }}"
dest: /opt/java
headers:
Cookie: oraclelicense=accept-securebackup-cookie
register: result
- name: Extract the Java JDK
unarchive:
src: "{{ result.dest }}"
remote_src: true
dest: /opt/java