So erhalten Sie einen Java-Link für zusätzliche Variablen, laden ihn in Ansible herunter und extrahieren ihn

So erhalten Sie einen Java-Link für zusätzliche Variablen, laden ihn in Ansible herunter und extrahieren ihn

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

verwandte Informationen