{% extends "base.html" %} {% from "_macros.html" import crumbs %} {% block title %}Ansible Schedules — Steward{% endblock %} {% block breadcrumb %}{{ crumbs([("Ansible", "/ansible/"), ("Schedules", "")]) }}{% endblock %} {% macro fmt_interval(secs) %} {%- set m = {300: "every 5 min", 3600: "hourly", 21600: "every 6h", 43200: "every 12h", 86400: "daily", 604800: "weekly"} -%} {{ m.get(secs, secs ~ "s") }} {% endmacro %} {% block content %}

Ansible Schedules

Inventory Browse ← Runs
{# ── Existing schedules ───────────────────────────────────────────────────── #} {% if not rows %}
No schedules yet. Create one below to run a playbook on a recurring interval.
{% else %}
{% for row in rows %} {% set s = row.s %} {% endfor %}
NamePlaybookTargetInterval Last runNext run
{{ s.name }} {{ s.source_name }} / {{ s.playbook_path }} {{ s.inventory_scope }} {{ fmt_interval(s.interval_seconds) }} {% if s.last_error %} launch error {% elif row.last_run %} {% set sc = {"queued":"var(--text-dim)","running":"var(--yellow)","success":"var(--green)","failed":"var(--red)","interrupted":"var(--orange)","cancelled":"var(--orange)"}.get(row.last_run.status.value, "var(--text-muted)") %} {{ row.last_run.status.value }} · {{ s.last_run_at.strftime("%m-%d %H:%M") }} {% else %} never {% endif %} {% if not s.enabled %}paused {% elif row.next_run %}{{ row.next_run.strftime("%m-%d %H:%M") }} {% else %}due now{% endif %}
Edit
{% endif %} {# ── Create / edit form ───────────────────────────────────────────────────── #} {% set p = (editing.params or {}) if editing else {} %}

{{ "Edit schedule" if editing else "New schedule" }}

{% for pb in all_playbooks %}{% endfor %}
{% if editing %}Cancel{% endif %}
{% endblock %}