{"id":13446727,"url":"https://github.com/ansible-community/ansible-bender","last_synced_at":"2025-05-14T09:09:58.560Z","repository":{"id":32923949,"uuid":"144737452","full_name":"ansible-community/ansible-bender","owner":"ansible-community","description":"ansible-playbook + buildah = a sweet container image","archived":false,"fork":false,"pushed_at":"2025-03-24T10:24:11.000Z","size":6315,"stargazers_count":688,"open_issues_count":45,"forks_count":75,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-05-14T09:09:51.661Z","etag":null,"topics":["ansible","buildah"],"latest_commit_sha":null,"homepage":"https://ansible-community.github.io/ansible-bender/build/html/","language":"Python","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/ansible-community.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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}},"created_at":"2018-08-14T15:16:14.000Z","updated_at":"2025-05-01T12:25:33.000Z","dependencies_parsed_at":"2025-01-16T07:08:46.210Z","dependency_job_id":"abd44e01-5139-43ee-a6cc-1f6862f9ed07","html_url":"https://github.com/ansible-community/ansible-bender","commit_stats":{"total_commits":465,"total_committers":27,"mean_commits":17.22222222222222,"dds":0.2752688172043011,"last_synced_commit":"4344853c1cd5810a531a3eb940c36a3094a328c1"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fansible-bender","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fansible-bender/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fansible-bender/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible-community%2Fansible-bender/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ansible-community","download_url":"https://codeload.github.com/ansible-community/ansible-bender/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254110374,"owners_count":22016391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","buildah"],"created_at":"2024-07-31T05:00:58.221Z","updated_at":"2025-05-14T09:09:58.479Z","avatar_url":"https://github.com/ansible-community.png","language":"Python","funding_links":[],"categories":["Docker Images","Python","Building Images","ansible"],"sub_categories":["Builder"],"readme":"# ansible-bender\n[![PyPI version](https://badge.fury.io/py/ansible-bender.svg)](https://badge.fury.io/py/ansible-bender)\n![GitHub Release Date](https://img.shields.io/github/release-date/ansible-community/ansible-bender?label=Latest%20release)\n![PyPI - Status](https://img.shields.io/pypi/status/ansible-bender)\n![GitHub](https://img.shields.io/github/license/ansible-community/ansible-bender)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/ansible-bender)\n[![Documentation](https://img.shields.io/badge/Documentation-yes-green.svg)](https://ansible-community.github.io/ansible-bender/build/html/)\n\nThis tool bends containers using\n[Ansible](https://github.com/ansible/ansible)\n[playbooks](https://docs.ansible.com/ansible/latest/user_guide/playbooks.html)\nand turns them into container images. It has a pluggable builder selection —\nit is up to you to pick the tool which will be used to construct your container\nimage. Right now the only supported builder is\n[buildah](https://github.com/containers/buildah).\n[More](http://github.com/ansible-community/ansible-bender/issues/25) [to\ncome](http://github.com/ansible-community/ansible-bender/issues/26) in the future.\nAnsible-bender (ab) relies on [Ansible connection\nplugins](https://docs.ansible.com/ansible/latest/plugins/connection.html) for\nperforming builds.\n\ntl;dr Ansible is the frontend, buildah is the backend.\n\nThe concept is described in following blog posts:\n* [Building containers with buildah and ansible](https://blog.tomecek.net/post/building-containers-with-buildah-and-ansible/).\n* [Ansible and Podman Can Play Together Now](https://blog.tomecek.net/post/ansible-and-podman-can-play-together-now/).\n\n\n## Looking for maintainers ❤\n\n[This project doesn't have an active maintainer right now that](https://github.com/ansible-community/ansible-bender/issues/282) would watch issues daily.\n\nIf you are a user of ansible-bender and are familiar with Python, please consider becoming a maintainer.\n\n\n## Features\n\n* You can build your container images with buildah as a backend.\n* Ansible playbook is your build recipe.\n* You are able to set various image metadata via CLI or as specific Ansible vars:\n  * working directory\n  * environment variables\n  * labels\n  * user\n  * default command\n  * exposed ports\n* You can do volume mounts during build.\n* Caching mechanism:\n  * Every task result is cached as a container image layer.\n  * You can turn this off with `--no-cache`.\n  * You can disable caching from a certain point by adding a tag `no-cache` to a task.\n* You can stop creating new image layers by adding tag `stop-layering` to a task.\n* If an image build fails, it's committed and named with a suffix `-[TIMESTAMP]-failed` (so\n  you can take a look inside and resolve the issue).\n* The tool tries to find python interpreter inside the base image.\n* You can push images you built to remote locations such as:\n  * a registry, a tarball, docker daemon, ...\n  * [podman push](https://github.com/containers/podman/blob/main/docs/source/markdown/podman-push.1.md) is used to perform the push.\n\n\n## Documentation\n\nYou can read more about this project in the documentation:\n* [Documentation home](https://ansible-community.github.io/ansible-bender/build/html/index.html)\n* [Interface](https://ansible-community.github.io/ansible-bender/build/html/interface.html)\n* [Installation](https://ansible-community.github.io/ansible-bender/build/html/installation.html)\n* [Configuration](https://ansible-community.github.io/ansible-bender/build/html/configuration.html)\n* [Usage](https://ansible-community.github.io/ansible-bender/build/html/usage.html)\n* [Caching and Layering mechanism](https://ansible-community.github.io/ansible-bender/build/html/cacheandlayer.html)\n* [Contribution guide](https://ansible-community.github.io/ansible-bender/build/html/contributing.html)\n* [Ansible-bender in OKD](https://ansible-community.github.io/ansible-bender/build/html/okd.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansible-community%2Fansible-bender","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fansible-community%2Fansible-bender","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansible-community%2Fansible-bender/lists"}