{"id":19204409,"url":"https://github.com/mmul-it/kpa_generator","last_synced_at":"2026-06-16T12:00:24.596Z","repository":{"id":65436352,"uuid":"591235230","full_name":"mmul-it/kpa_generator","owner":"mmul-it","description":"KPA slides generator Ansible role","archived":false,"fork":false,"pushed_at":"2026-06-16T10:47:37.000Z","size":293,"stargazers_count":5,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-16T11:26:40.162Z","etag":null,"topics":["ansible","ansible-playbook","ansible-role","knowledge-as-a-service","kpa","marp","pandoc"],"latest_commit_sha":null,"homepage":"","language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mmul-it.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-20T08:54:44.000Z","updated_at":"2026-06-16T10:44:34.000Z","dependencies_parsed_at":"2025-04-20T14:49:00.579Z","dependency_job_id":null,"html_url":"https://github.com/mmul-it/kpa_generator","commit_stats":null,"previous_names":["mmul-it/kpa_generator"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mmul-it/kpa_generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmul-it%2Fkpa_generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmul-it%2Fkpa_generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmul-it%2Fkpa_generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmul-it%2Fkpa_generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmul-it","download_url":"https://codeload.github.com/mmul-it/kpa_generator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmul-it%2Fkpa_generator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34404748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","ansible-playbook","ansible-role","knowledge-as-a-service","kpa","marp","pandoc"],"created_at":"2024-11-09T13:07:50.317Z","updated_at":"2026-06-16T12:00:24.588Z","avatar_url":"https://github.com/mmul-it.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"kpa_generator\n=============\n\nThis role uses a [KPA Project](https://github.com/mmul-it/kpa) to generate\n[Marp](https://marp.app/#get-started) and [Pandoc](https://pandoc.org/MANUAL.html)\ncompatible Markdown files usable to create beautiful presentations in `html`,\n`pdf` and `ppt` format with their agenda.\nBy default it automates the creation of a pdf slides set and their pdf agenda.\n\n[![Lint and test project](https://github.com/mmul-it/kpa_generator/actions/workflows/main.yml/badge.svg)](https://github.com/mmul-it/kpa_generator/actions/workflows/main.yml)\n[![Ansible Galaxy](https://img.shields.io/badge/ansible--galaxy-kpa_generator-blue.svg)](https://galaxy.ansible.com/mmul/kpa_generator)\n\n\nRole Variables\n--------------\n\nTo get a minimal slides set you can rely on the defaults, and then change\neverything you need to customize your result:\n\n```yaml\n---\n\n################\n# KPA settings #\n################\n\n# Location of your KPA project\nkpa_project_dir: \"{{ playbook_dir }}\"\n\n# Slide set title\nkpa_title: \"My slides set\"\n\n# Author, copyright and version info\nkpa_author: 'My author'\nkpa_copyright: '© 2026 My copyright'\nkpa_version: 'v20260616'\n\n###################\n# Pandoc settings #\n###################\n\n# Pandoc Agenda Markdown output files destination\npandoc_agenda_output_markdown: \"{{ kpa_project_dir }}/slides.agenda.md\"\npandoc_agenda_output_pdf: \"{{ kpa_project_dir }}/slides.agenda.pdf\"\n\n# Pandoc Book Markdown output file destination\npandoc_book_output_markdown: \"{{ kpa_project_dir }}/slides.agenda.md\"\npandoc_book_output_pdf: \"{{ kpa_project_dir }}/slides.agenda.pdf\"\n\n###################\n# Marp settings   #\n###################\n\n# Marp Markdown output files destination\nmarp_output_markdown: \"{{ kpa_project_dir }}/slides.md\"\nmarp_output_pdf: \"{{ kpa_project_dir }}/slides.pdf\"\n# Set marp_output_pptx to generate a PowerPoint compatible file\n# marp_output_pptx: \"{{ kpa_project_dir }}/slides.pptx\"\n\n# Marp theme (default, gaia, uncover or a custom theme)\nmarp_theme: default\n\n# Add slide number\nmarp_paginate: false\n\n# Cover slide details (set cover: true on kpa_slides entry)\n# marp_cover_background_image to pass an image path/url\nmarp_cover_background_color: '#FFCCE1'\nmarp_cover_template: \"templates/cover.md.j2\"\nmarp_cover_header: null\nmarp_cover_footer: \"**{{ kpa_author }}** | _{{ kpa_copyright }}_\"\n\n# Chapter slide details\nmarp_chapter_background_color: '#FAFFC7'\nmarp_chapter_template: \"templates/chapter.md.j2\"\n\n# Common slides background color\n# marp_background_image to use an image path/url\nmarp_background_color: '#D7EEFF'\nmarp_header: true  # Will show {{ kpa_title }} | {{ kpa_author }}\nmarp_footer: true  # Will show {{ slide.chapter }} | {{ slide.title }}\n\n##############\n# KPA slides #\n##############\n\n# Slide list, this is what KPA (https://github.com/mmul-it/kpa) is meant for\nkpa_slides:\n  # Cover slide (doesn't need content:)\n  - cover: true\n    title: \"{{ kpa_title }}\"\n    subtitle: \"DAY ONE\"\n  # First Knowledge Pod\n  - chapter: 'DAY ONE - First Knowledge Pod'\n    title: 'Topic 1'\n    chapter_header: \"A custom header for this specific chapter ONE\"\n    content: \"{{ kpa_project_dir }}/contents/knowledge-pod-1.md\"\n  # Second Knowledge Pod\n  - chapter: 'DAY ONE - Second Knowledge Pod'\n    title: 'Topic 2'\n    chapter_footer: \"A custom footer for this specific chapter TWO\"\n    content: \"{{ kpa_project_dir }}/contents/knowledge-pod-2.md\"\n```\n\nFor example, to generate a `pptx` output file just set the `marp_output_pptx`\nvariable, and the playbook will also run marp with the option to generate a\nMicrosoft PowerPoint compatible file.\n\nExample Playbook\n----------------\n\nTo test this role and generate a simple Markdown usable with Marp, just use the\n[tests/kpa_generator.yml](tests/kpa_generator.yml)\nplaybook as it is:\n\n```yaml\n---\n\n- hosts: localhost\n  gather_facts: false\n  connection: local\n  name: Use a KPA Project to create a Marp Markdown compatible file\n  roles:\n    - role: ../..\n```\n\nAnd execute it using `ansible-playbook`:\n\n```console\n\u003e ansible-playbook tests/kpa_generator.yml\nPLAY [Use a KPA Project to create Marp \u0026 Pandoc markdown and slide decks] ******\n\nTASK [../.. : Create Marp slides markdown] *************************************\nchanged: [localhost]\n\nTASK [../.. : Create Pandoc agenda markdown] ***********************************\nchanged: [localhost]\n\nTASK [../.. : Generate pdf slides with Marp] ***********************************\nchanged: [localhost]\n\nTASK [../.. : Generate pptx slides with Marp] **********************************\nskipping: [localhost]\n\nTASK [../.. : Generate pdf agenda with Pandoc] *********************************\nchanged: [localhost]\n\nPLAY RECAP *********************************************************************\nlocalhost                  : ok=4    changed=4    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0\n```\n\nThis will generate two couples of files:\n\n1. A file named [tests/slides.md](tests/slides.md) that is process by `marp`, to\n   get [tests/slides.pdf](tests/slides.pdf).\n\n   When the `marp` executable is available on the system the process is\n   automatic, and is the equivalent of this manual operation:\n\n   ```console\n   \u003e docker run \\\n     --rm \\\n     -e MARP_USER=1000:1000 \\\n     -e LANG=en_US.UTF-8 \\\n     -v $PWD:/home/marp/app/ \\\n     marpteam/marp-cli --html --pdf --allow-local-files tests/slides.md\n   [  INFO ] Converting 1 markdown...\n   [  WARN ] Insecure local file accessing is enabled for conversion from\n             tests/slides.md.\n   [  INFO ] tests/slides.md =\u003e tests/slides.pdf\n   ```\n\n2. A file named [tests/slides.agenda.md](tests/slides.agenda.md) that is\n   processed by `pandoc` to get [tests/slides.agenda.pdf](tests/slides.agenda.pdf).\n\n   When the `pandoc` executable is available on the system the process is\n   automatic, and is the equivalent of this manual operation:\n\n   ```console\n   \u003e pandoc tests/slides.agenda.md -o tests/slides.agenda.pdf\n   ```\n\n   **Note**: `pandoc` supports templates that can be used to customize the pdf.\n\nThe full environment is available inside the [KPA container at quay.io](https://quay.io/repository/mmul/kpa).\n\nFor details about using this role in the training and documentation context,\nhave a look at the [KPA GitHub project page](https://github.com/mmul-it/kpa).\n\nLicense\n-------\n\nMIT\n\nAuthor Information\n------------------\n\nRaoul Scarazzini ([rascasoft](https://github.com/rascasoft))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmul-it%2Fkpa_generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmul-it%2Fkpa_generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmul-it%2Fkpa_generator/lists"}