2017-09-17 19 views
1

Zuerst bin ich noch ein ansible Neuling, also entschuldigen Sie bitte meine Ignoranz.Wie man ein Shellskript ausführt und das Ergebnis in ansible verwendet

Ich weiß nicht, ob das überhaupt möglich ist, aber ich versuche, die URL von diesem Befehl erzeugt zu bekommen:

curl -s https://api.github.com/repos/Radarr/Radarr/releases | grep linux.tar.gz | grep browser_download_url | head -1 | cut -d \" -f 4 

und es im Spiel verwenden, das Paket zum Download:

hier mein Spiel ist:

- name: download Radarr 
    get_url: 
     url: "{{ Radarr_exe_url }}" #should be the url from above 
     dest: "{{ Radarr_data_path }}" 
    become: true 
    become_user: "{{ Radarr_user_name }}" 
    notify: 
     - Restart Radarr service 

Antwort

2
- name:    Get Radar exe url 
    shell:    curl -s https://api.github.com/repos/Radarr/Radarr/releases | grep linux.tar.gz | grep browser_download_url | head -1 | cut -d \" -f 4 
    register:   shell_output 
- set_fact: 
    Radarr_exe_url : "{{ shell_output.stdout }}" 
+1

Meine Augen bluten, wenn ich JSON-Objekte analysiert mit 'grep' sehen und' cut' ... –

+0

@KonstantinSuvorov jeder Beratung über den richtigen Weg, um es in bash zu analysieren? – Mohamed

+0

Ich glaube, ich hätte 'jq' besser verwenden können? aber das ist nicht tragbar – Mohamed

1

Hier ist reine ansible Lösung, wie der Aufruf shell Befehle, wenn ther e-Modul zur Verfügung als schlechte Praxis:

- hosts: localhost 
    gather_facts: no 
    tasks: 
    - uri: 
     url: https://api.github.com/repos/Radarr/Radarr/releases 
     return_content: yes 
     body_format: json 
     changed_when: no 
     register: radarr_releases 

    - set_fact: 
     Radarr_exe_url: "{{ radarr_releases.json | json_query('[0].assets[].browser_download_url') | select('search','linux.tar.gz') | first }}" 
Verwandte Themen