2017-01-08 3 views
14

Ich versuche laufen ansible zu verwenden, um die folgenden zwei Befehle auszuführen:Wie apt-Update und Upgrade über ansible Shell

sudo apt-get update && sudo apt-get upgrade -y

ich mit ansible kennen, können Sie verwenden:

ansible all -m shell -u user -K -a "uptime"

Würde die Ausführung des folgenden Befehls es tun? Oder muss ich

irgendeine Art von raw Befehl

ansible all -m shell -u user -K -a "sudo apt-get update && sudo apt-get upgrade -y"

+0

Haben Sie es versucht? Warum bevorzugen Sie dies gegenüber dem eingebauten 'apt' Modul? – tedder42

+0

Ich bin neu zu ansible nur versuchen zu verstehen, würde ich mit dem Apt-Modul bevorzugen, aber nicht sicher, dass das auch aktualisiert? – nadermx

Antwort

29

würde ich nicht empfehlen für diese Verwendung von Shell, wie ansible das apt-Modul hat entworfen nur für diesen Zweck. Ich habe ausführlich mit apt unten beschrieben.

In einem Textbuch, können Sie aktualisieren und Upgrade wie folgt:

- name: Update and upgrade apt packages 
    become: true 
    apt: 
    upgrade: yes 
    update_cache: yes 
    cache_valid_time: 86400 #One day 

Der cache_valid_time Wert verzichtet werden kann. Sein Zweck vom docs:

Aktualisieren des apt-Cache, wenn seine älter als die cache_valid_time. Diese Option ist in Sekunden eingestellt.

Es ist also gut einzubeziehen, wenn Sie den Cache nicht aktualisieren möchten, wenn er erst kürzlich aktualisiert wurde.

Um dies zu tun als Ad-hoc-Befehl Sie ausführen können:

$ ansible all -m apt -a "upgrade=yes update_cache=yes cache_valid_time=86400" --become

Ad-hoc-Befehle Detail here

Hinweis in beschrieben sind, die ich --become und become: true verwenden. Dies ist ein Beispiel für eine typische Privilege-Eskalation durch Ansible. Verwenden Sie -u user und -K (fragen Sie nach dem Passwort für die Rechteerweiterung). Verwenden Sie, was immer für Sie funktioniert, nur um Ihnen die gebräuchlichste Form zu zeigen.