Ich bin interessiert zu erfahren, ob Ansible ein enthaltenes Playbook asynchron ausführen kann?Ansible: Können wir ein Include-Playbook asynchron ausführen?
Im Grunde versuche ich eine Aufgabe auszuführen "Feuer und vergiss es, überprüfe es später." Wenn ich später nachschaue, möchte ich auch eine lockere Benachrichtigung mit dem Ergebnis senden.
Allerdings habe ich bemerkt, dass das mitgelieferte Playbook für die Slack-Benachrichtigung ein wenig länger dauert als erwartet und daher hält es den Rest des Playbooks.
Was ich will, ist die Async der mitgelieferten Playbook für Slack Benachrichtigung, so dass das aktuelle Playbook fortgesetzt wird.
Zum Beispiel habe ich eine playbook.yml-Datei, die wie folgt aussieht:
- hosts: localhost
tasks:
- name: Fire and forget task
shell: some_task.sh
chdir=/tmp/
register: fire_and_forget_task
async: 3600
poll: 0
- name: Check on fire and forget task
async_status: jid={{ fire_and_forget_task.ansible_job_id }}
register: task_status
until: task_status.finished
retries: 100
ignore_errors: yes
- name: Send slack success msg
include: slack.yml msg="Fire and forget task SUCCESS"
when: task_status.stdout is defined and
'SUCCESS' in fire_and_forget_task.stdout
async: 3600
poll: 0
- name: Send slack failed msg
include: slack.yml msg="Fire and forget task FAILED"
when: task_status.stdout is defined and
'FAILED' in fire_and_forget_task.stdout
async: 3600
poll: 0
Datei wie folgt aussieht Meine slack.yml:
- name: Send notification message via Slack
local_action:
module: slack
token: <REDACTED>
attachments:
- text: "{{ msg }}"
color: "#83F52C"
title: "Ansible Status {{ lookup('pipe','date') }}"
Mit dem obigen Textbuch, das „msg slack Erfolg senden "Für eine einfache Aufgabe dauert die Ausführung der Aufgabe sehr lange. Es scheint, dass es nicht asynchron läuft, obwohl ich es ausdrücklich gesagt habe.
Was ist der beste Weg, um das gewünschte Ergebnis zu erzielen? Danke.