{"adoption": {"forks": 203, "observed_at": "2026-08-28T04:04:53.864014+00:00", "stars": 1497}, "canonical_url": "https://ross.abutalabs.com/products/ansible-interactive-tutorial", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Interactive Ansible tutorials with dead simple setup via Docker", "domain": ["tutorials"], "enriched": true, "function": ["developer-tools", "cli", "documentation"], "health_score": 20, "homepage": null, "language": "Shell", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["turkenh/ansible-interactive-tutorial"], "name": "turkenh/ansible-interactive-tutorial", "platform": ["cli"], "pushed_at": "2022-01-01T18:12:01+00:00", "repo": "turkenh/ansible-interactive-tutorial", "stars": 1497, "tags": ["ansible", "interactive-tutorial", "docker-based", "configuration-management", "self-paced-learning", "devops", "automation", "command-line", "docker", "linux"], "topics": ["ansible", "tutorial", "devops", "interactive", "docker", "ansible-playbook", "ansible-galaxy"], "urls": [], "use_cases": ["learn ansible from scratch", "practice writing ansible playbooks", "hands-on ansible tutorial without setting up VMs", "learn ansible roles and ansible galaxy", "sandbox environment for trying ansible modules", "teach configuration management basics"], "what_it_is": "An interactive Ansible tutorial that runs entirely in Docker containers, adapted from the leucos/ansible-tuto lessons. A single shell script spins up one tutorial container and three simulated target nodes so learners can practice playbooks, modules, variables, and roles hands-on.", "when_to_avoid": ["you need current Ansible versions or modern best practices, as the content and containers are dated (Ubuntu 16.04, last release 2022)", "you already know Ansible and need a reference rather than a tutorial", "you cannot run Docker locally and prefer browser-based sandboxes beyond play-with-docker"], "when_to_choose": ["you want a zero-setup Ansible learning environment with only Docker installed", "you prefer guided, sequential lessons with real target hosts to deploy against", "you want to safely experiment with playbooks, templates, and roles in disposable containers"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ansible-interactive-tutorial", "repo": "turkenh/ansible-interactive-tutorial", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:53.864014+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:33:10.664408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "582167b2388b4554d9edffdf8682a630216219127968a3360a167112e7e36e8d", "fetched_at": "2026-08-28T04:04:53.864014+00:00", "kind": "readme", "missing": false, "url": "https://github.com/turkenh/ansible-interactive-tutorial"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3273, "days_push": 1705, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}