Ich habe zwei Ansible-Tasks, die ein Archiv herunterladen (z. B. die neueste WordPress-Version) und dieses Archiv extrahieren.
- name: Download WordPress
tags:
- wordpress
- wordpress:install
get_url: "url=http://wordpress.org/wordpress-{{ wordpress_version }}.tar.gz dest={{ www_docroot }}/wordpress-{{ wordpress_version }}.tar.gz"
- name: Extract archive
tags:
- wordpress
- wordpress:install
unarchive:
src: "{{ www_docroot }}/wordpress-{{ wordpress_version }}.tar.gz"
dest: "{{ www_docroot }}"
remote_src: True
Ich bin neu im Ansible-Lernen und versuche herauszufinden: Wie kann ich das idempotent machen, damit es –
- Lädt eine Datei nicht herunter, wenn eine Datei mit demselben Namen bereits vorhanden ist oder
- Extrahiert / expandiert das gzip-Archiv nicht, wenn der angegebene Zielordner bereits existiert
Vielen Dank!
bedenke die Macht Option für die erste Abfrage ( get_url
) . bedenke die schafft Option für die zweite Abfrage ( unarchive
) .
Beispielcode, Sie brauchen so etwas?
- name: Download WordPress
tags:
- wordpress
- wordpress:install
get_url:
url : "http://wordpress.org/wordpress-{{ wordpress_version }}.tar.gz dest={{ www_docroot }}/wordpress-{{ wordpress_version }}.tar.gz"
dest: "{{ wordpress_version }}/wordpress-{{ wordpress_version }}.tar.gz"
force : no
- name: Extract archive
tags:
- wordpress
- wordpress:install
unarchive:
src: "{{ www_docroot }}/wordpress-{{ wordpress_version }}.tar.gz"
dest: "{{ www_docroot }}"
creates : "{{ www_docroot }}/wordpress"
remote_src: True
get_url
Modul verhält sich bereits wie gewünscht.
Sie können den zweiten Schritt komplett überspringen, wenn im ersten Schritt nichts heruntergeladen wird. Um das zu erreichen register
Rückgabewert der ersten Aufgabe und prüfe, ob er sich in der zweiten mit ändert when
. In Ihrem Beispiel wird es sein:
- name: Download WordPress
tags:
- wordpress
- wordpress:install
get_url: "url=http://wordpress.org/wordpress-{{ wordpress_version }}.tar.gz dest={{ www_docroot }}/wordpress-{{ wordpress_version }}.tar.gz"
register: download_wordpress
- name: Extract archive
tags:
- wordpress
- wordpress:install
unarchive:
src: "{{ www_docroot }}/wordpress-{{ wordpress_version }}.tar.gz"
dest: "{{ www_docroot }}"
remote_src: True
when: download_wordpress.changed
11004300cookie-checkAnsible-Befehle `get_url` und `unarchive` idempotent machenyes