Metadata-Version: 2.4
Name: zbuilder
Version: 0.2.0
Summary: Create VMs
Author: Nikos Chasiotis
Author-email: Nikos Chasiotis <hasiotis@gmail.com>
License-Expression: GPL-3.0-or-later
License-File: LICENSE
Classifier: Development Status :: 1 - Planning
Classifier: Environment :: Console
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Dist: click>=8,<9
Requires-Dist: jinja2>=3.0,<4
Requires-Dist: delegator-py>=0.1.1,<0.2
Requires-Dist: colorama>=0.4,<0.5
Requires-Dist: retrying>=1.3,<2
Requires-Dist: requests>=2,<3
Requires-Dist: arrow>=1.1,<2
Requires-Dist: pyjwt>=2.5.0,<3
Requires-Dist: dpath>=2.0,<3
Requires-Dist: dnspython>=2,<3
Requires-Dist: ansible>=14.3.1,<15
Requires-Dist: setuptools>=84.0.0,<85
Requires-Dist: massedit>=0.71.0
Requires-Dist: ruamel-yaml>=0.19.1
Requires-Dist: boto3>=1.43.73
Requires-Dist: tabulate>=0.10.0
Requires-Dist: libvirt-python>=11,<12
Requires-Dist: pycdlib>=1.14,<2
Requires-Dist: google-auth-oauthlib>=0.4,<1.5 ; extra == 'gcp'
Requires-Dist: oauthlib>=3.2.1,<4 ; extra == 'gcp'
Requires-Dist: google-api-python-client>=2.198.0,<3 ; extra == 'gcp'
Requires-Dist: google-cloud-dns>=0.37.0,<0.38 ; extra == 'gcp'
Requires-Dist: proxmoxer>=1.1,<3 ; extra == 'proxmox'
Requires-Python: >=3.12, <4
Project-URL: Repository, https://github.com/hasiotis/zbuilder
Provides-Extra: gcp
Provides-Extra: proxmox
Description-Content-Type: text/markdown

# Zbuilder: Building VMs and applying ansible playbooks

[![PyPi version](https://badge.fury.io/py/zbuilder.svg)](https://pypi.org/project/zbuilder/)
[![PyPi downloads](https://img.shields.io/pypi/dm/zbuilder.svg)](https://pypistats.org/packages/zbuilder)
[![Build status](https://github.com/hasiotis/zbuilder/workflows/master/badge.svg)](https://github.com/hasiotis/zbuilder/actions?query=workflow%3A%22master%22)
[![Documentation Status](https://readthedocs.org/projects/zbuilder/badge/?version=stable)](https://zbuilder.readthedocs.io/en/stable/?badge=stable)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://github.com/hasiotis/zbuilder/blob/master/LICENSE)

ZBuilder is a tool to help you build VMs ready to be transferred to ansible.
By using ansible as a library, it has access to all ansible variables. This
way it achieves high integration with ansible.

## Installation

zbuilder depends on the libvirt python bindings, which compile against the
libvirt headers, so install those first:
```
apt install libvirt-dev pkg-config gcc     # or: dnf install libvirt-devel
```

Then install with:
```
pipx install --force zbuilder
```

or

```
pip3 install --user --upgrade zbuilder
```

The `gcp` provider needs the google client libraries, which ship as an extra:
```
pipx install --force 'zbuilder[gcp]'
```

The `proxmox` provider needs `proxmoxer`, which ships as an extra:
```
pipx install --force 'zbuilder[proxmox]'
```

## Providers

| Family | Providers |
|---|---|
| VM   | `aws`, `gcp`, `kvm`, `proxmox` |
| DNS  | `ansible`, `aws`, `bind`, `gcp`, `powerdns` |
| IPAM | `phpipam` |

See the [documentation](https://zbuilder.readthedocs.io/en/stable/) for the
settings each one accepts, or run `zbuilder providers`.

## Development
During development you can:
```
uv sync
. .venv/bin/activate

uv run pytest                # run the tests
prek run --all-files         # lint and format
```

## Links

[Documentation](https://zbuilder.readthedocs.io/en/stable/?badge=stable)
| [Releases](https://pypi.org/project/zbuilder/)
| [Code](https://github.com/hasiotis/zbuilder)
