{% extends "base.html" %} {% from "_macros.html" import crumbs, status_badge %} {% 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
{# ── 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 }} {{ row.scope_label }} {{ fmt_interval(s.interval_seconds) }} {% if row.last_run %} {{ status_badge(row.last_run.status) }} · {{ row.last_run.started_at|ago }} {% endif %} {% if s.last_error %} {# With a run beside it, the last firing was skipped because that run was still going (#5158); without one, the firing couldn't start a run. #}
{{ s.last_error }} · {{ s.last_run_at.strftime("%m-%d %H:%M") }}
{% elif not row.last_run %} never {% endif %}
{% if not s.enabled %}paused {% elif row.next_run %}{{ row.next_run.strftime("%m-%d %H:%M") }} {% else %}due now{% endif %}
{{ csrf_field() }}
{{ csrf_field() }}
Edit
{{ csrf_field() }}
{% endif %} {# ── Create / edit form ───────────────────────────────────────────────────── #} {% set p = (editing.params or {}) if editing else {} %} {% set saved_vars = p.get('extra_vars_map') or {} %} {% set declared_names = (edit_variables or []) | map(attribute='name') | list %}

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

{{ csrf_field() }}
{# Declared playbook variables (vars:/vars_prompt:) — loaded via HTMX on playbook change; pre-rendered here in edit mode so saved values show. #}
{% if editing %} {% set variables = edit_variables %} {% set description = edit_description %} {% set category = edit_category %} {% set confirm = edit_confirm %} {% set values = saved_vars %} {% set schedule = true %} {% include "ansible/_playbook_vars.html" %} {% endif %}
Extra vars
{% if editing %}Cancel{% endif %}
{% endblock %}