![GitHub](https://img.shields.io/github/license/aerleon/aerleon) [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
[![PyPI version](https://badge.fury.io/py/aerleon.svg)](https://badge.fury.io/py/aerleon) ![PyPI - Status](https://img.shields.io/pypi/status/aerleon) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/aerleon) ![PyPI - Downloads](https://img.shields.io/pypi/dm/aerleon)
![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/aerleon/aerleon/release.yml) ![Snyk Vulnerabilities for GitHub Repo](https://img.shields.io/snyk/vulnerabilities/github/aerleon/aerleon) [![aerleon](https://snyk.io/advisor/python/aerleon/badge.svg)](https://snyk.io/advisor/python/aerleon) [![codecov](https://codecov.io/gh/aerleon/aerleon/branch/main/graph/badge.svg?token=C13SR6GMTD)](https://codecov.io/gh/aerleon/aerleon)
# Aerleon
Generate firewall configs for multiple firewall platforms from a single platform-agnostic configuration language through a command line tool and Python API.
Aerleon is a fork of [Capirca](https://github.com/google/capirca) with the following major additions:
- YAML policy and network definition files and [pol2yaml, a converter from Capirca policy DSL to YAML](https://github.com/aerleon/pol2yaml).
- Network definitions with FQDN data.
- New firewall platforms can be added through plugins.
- Typed Python APIs for ACL generation and aclcheck queries.
- A [SLSA-compatible verifiable release process](https://aerleon.readthedocs.io/en/latest/install/#verifying-installation).
- A detailed regression test suite.
- Many bug fixes and performance enhancements.
## Install
Aerleon requires Python 3.8 or higher.
```bash
pip install aerleon
```
To install via [`brew`](https://brew.sh):
```bash
brew install aerleon
```
## Overview
Aerleon provides a command line tool and a Python API that will generate configs for multiple firewall platforms from a single platform-agnostic configuration language. It can generate configs for Cisco, Juniper, Palo Alto Networks and [many other firewall vendors](https://aerleon.readthedocs.io/en/latest/#core-supported-generators).
A [getting started guide](https://aerleon.readthedocs.io/en/latest/getting_started/) walking through the basics of using Aerleon is available on the docs website.
## Documentation
Documentation can be found at [https://aerleon.readthedocs.io/en/latest/](https://aerleon.readthedocs.io/en/latest/).
## Contributing
Contributions are welcome. Please review the [contributing guidelines](https://aerleon.readthedocs.io/en/latest/contributing/) and [code of conduct](https://github.com/aerleon/aerleon/blob/main/CODE_OF_CONDUCT.md) for this project.
## Contact
Official channels for communicating issues is via [Github Issues](https://github.com/aerleon/aerleon/issues).
General discussions can be had either in [Github Discussions](https://github.com/aerleon/aerleon/discussions) or in our [Slack Server](https://join.slack.com/t/aerleon/shared_invite/zt-1ngckm6oj-cK7yj63A~JgqjixEui2Vhw).
### Contact Maintainers
You can always reach out to us on [Slack](https://join.slack.com/t/aerleon/shared_invite/zt-1ngckm6oj-cK7yj63A~JgqjixEui2Vhw).
You many also reach out to us via e-mail.
Rob Ankeny ([ankenyr@gmail.com](mailto:ankenyr@gmail.com))
Jason Benterou ([jason.benterou@gmail.com](mailto:jason.benterou@gmail.com))
## Resources
- [Brief Overview (4 slides):](https://docs.google.com/present/embed?id=dhtc9k26_13cz9fphfb&autoStart=true&loop=true&size=1)
- [Nanog49; Enterprise QoS](http://www.nanog.org/meetings/nanog49/presentations/Tuesday/Chung-EnterpriseQoS-final.pdf)
- [Blog Post: Safe ACL Change through Model-based Analysis](https://tech.ebayinc.com/engineering/safe-acl-change-through-model-based-analysis/)
- [Aerleon Slack](https://join.slack.com/t/aerleon/shared_invite/zt-1ngckm6oj-cK7yj63A~JgqjixEui2Vhw)
- [#aerleon at NetworkToCode Slack](https://app.slack.com/client/T09LQ7E9E/C04L56TMMFZ)
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tbody>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/itdependsnetworks"><img src="https://avatars.githubusercontent.com/u/9260483?v=4?s=100" width="100px;" alt="Ken Celenza"/><br /><sub><b>Ken Celenza</b></sub></a><br /><a href="https://github.com/aerleon/aerleon/commits?author=itdependsnetworks" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/fischa"><img src="https://avatars.githubusercontent.com/u/11302991?v=4?s=100" width="100px;" alt="Axel F"/><br /><sub><b>Axel F</b></sub></a><br /><a href="https://github.com/aerleon/aerleon/commits?author=fischa" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://hachyderm.io/@nemith"><img src="https://avatars.githubusercontent.com/u/349360?v=4?s=100" width="100px;" alt="Brandon Bennett"/><br /><sub><b>Brandon Bennett</b></sub></a><br /><a href="https://github.com/aerleon/aerleon/commits?author=nemith" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/btriller"><img src="https://avatars.githubusercontent.com/u/851727?v=4?s=100" width="100px;" alt="Bastian Triller"/><br /><sub><b>Bastian Triller</b></sub></a><br /><a href="https://github.com/aerleon/aerleon/commits?author=btriller" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/XioNoX"><img src="https://avatars.githubusercontent.com/u/688817?v=4?s=100" width="100px;" alt="Arzhel Younsi"/><br /><sub><b>Arzhel Younsi</b></sub></a><br /><a href="https://github.com/aerleon/aerleon/commits?author=XioNoX" title="Code">💻</a></td>
</tr>
</tbody>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
## Credit
Files and code included in this project from Capirca are copyright Google and
are included under the terms of the Apache License, Version 2.0. You may obtain
a copy of the License at
<http://www.apache.org/licenses/LICENSE-2.0>
Contributors who wish to modify files bearing a copyright notice are obligated
by the terms of the Apache License, Version 2.0 to include at the top of the
file a prominent notice stating as much. Copyright notices must not be removed
from files in this repository.
This README file and other documentation files may contain phrases and sections that are copyright Google.
This file and other documentation files are modified from the original by the Aerleon Project Team.
Raw data
{
"_id": null,
"home_page": "https://github.com/aerleon/aerleon",
"name": "aerleon",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "firewall, networking, security",
"author": "Rob Ankeny",
"author_email": "ankenyr@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/ca/bd/87869c1cb33a2b4d269c6f66056c44453e643925731cb85e6861d1121be8/aerleon-1.9.0.tar.gz",
"platform": null,
"description": "![GitHub](https://img.shields.io/github/license/aerleon/aerleon) [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n[![PyPI version](https://badge.fury.io/py/aerleon.svg)](https://badge.fury.io/py/aerleon) ![PyPI - Status](https://img.shields.io/pypi/status/aerleon) ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/aerleon) ![PyPI - Downloads](https://img.shields.io/pypi/dm/aerleon)\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/aerleon/aerleon/release.yml) ![Snyk Vulnerabilities for GitHub Repo](https://img.shields.io/snyk/vulnerabilities/github/aerleon/aerleon) [![aerleon](https://snyk.io/advisor/python/aerleon/badge.svg)](https://snyk.io/advisor/python/aerleon) [![codecov](https://codecov.io/gh/aerleon/aerleon/branch/main/graph/badge.svg?token=C13SR6GMTD)](https://codecov.io/gh/aerleon/aerleon)\n\n# Aerleon\n\nGenerate firewall configs for multiple firewall platforms from a single platform-agnostic configuration language through a command line tool and Python API.\n\nAerleon is a fork of [Capirca](https://github.com/google/capirca) with the following major additions:\n\n- YAML policy and network definition files and [pol2yaml, a converter from Capirca policy DSL to YAML](https://github.com/aerleon/pol2yaml).\n- Network definitions with FQDN data.\n- New firewall platforms can be added through plugins.\n- Typed Python APIs for ACL generation and aclcheck queries.\n- A [SLSA-compatible verifiable release process](https://aerleon.readthedocs.io/en/latest/install/#verifying-installation).\n- A detailed regression test suite.\n- Many bug fixes and performance enhancements.\n\n## Install\n\nAerleon requires Python 3.8 or higher.\n\n```bash\npip install aerleon\n```\n\nTo install via [`brew`](https://brew.sh):\n\n```bash\nbrew install aerleon\n```\n\n## Overview\n\nAerleon provides a command line tool and a Python API that will generate configs for multiple firewall platforms from a single platform-agnostic configuration language. It can generate configs for Cisco, Juniper, Palo Alto Networks and [many other firewall vendors](https://aerleon.readthedocs.io/en/latest/#core-supported-generators).\n\nA [getting started guide](https://aerleon.readthedocs.io/en/latest/getting_started/) walking through the basics of using Aerleon is available on the docs website.\n\n## Documentation\n\nDocumentation can be found at [https://aerleon.readthedocs.io/en/latest/](https://aerleon.readthedocs.io/en/latest/).\n\n## Contributing\n\nContributions are welcome. Please review the [contributing guidelines](https://aerleon.readthedocs.io/en/latest/contributing/) and [code of conduct](https://github.com/aerleon/aerleon/blob/main/CODE_OF_CONDUCT.md) for this project.\n\n## Contact\n\nOfficial channels for communicating issues is via [Github Issues](https://github.com/aerleon/aerleon/issues).\n\nGeneral discussions can be had either in [Github Discussions](https://github.com/aerleon/aerleon/discussions) or in our [Slack Server](https://join.slack.com/t/aerleon/shared_invite/zt-1ngckm6oj-cK7yj63A~JgqjixEui2Vhw).\n\n### Contact Maintainers\n\nYou can always reach out to us on [Slack](https://join.slack.com/t/aerleon/shared_invite/zt-1ngckm6oj-cK7yj63A~JgqjixEui2Vhw).\nYou many also reach out to us via e-mail.\n\nRob Ankeny ([ankenyr@gmail.com](mailto:ankenyr@gmail.com))\n\nJason Benterou ([jason.benterou@gmail.com](mailto:jason.benterou@gmail.com))\n\n## Resources\n\n- [Brief Overview (4 slides):](https://docs.google.com/present/embed?id=dhtc9k26_13cz9fphfb&autoStart=true&loop=true&size=1)\n- [Nanog49; Enterprise QoS](http://www.nanog.org/meetings/nanog49/presentations/Tuesday/Chung-EnterpriseQoS-final.pdf)\n- [Blog Post: Safe ACL Change through Model-based Analysis](https://tech.ebayinc.com/engineering/safe-acl-change-through-model-based-analysis/)\n- [Aerleon Slack](https://join.slack.com/t/aerleon/shared_invite/zt-1ngckm6oj-cK7yj63A~JgqjixEui2Vhw)\n- [#aerleon at NetworkToCode Slack](https://app.slack.com/client/T09LQ7E9E/C04L56TMMFZ)\n\n## Contributors \u2728\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n <tbody>\n <tr>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/itdependsnetworks\"><img src=\"https://avatars.githubusercontent.com/u/9260483?v=4?s=100\" width=\"100px;\" alt=\"Ken Celenza\"/><br /><sub><b>Ken Celenza</b></sub></a><br /><a href=\"https://github.com/aerleon/aerleon/commits?author=itdependsnetworks\" title=\"Documentation\">\ud83d\udcd6</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/fischa\"><img src=\"https://avatars.githubusercontent.com/u/11302991?v=4?s=100\" width=\"100px;\" alt=\"Axel F\"/><br /><sub><b>Axel F</b></sub></a><br /><a href=\"https://github.com/aerleon/aerleon/commits?author=fischa\" title=\"Documentation\">\ud83d\udcd6</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://hachyderm.io/@nemith\"><img src=\"https://avatars.githubusercontent.com/u/349360?v=4?s=100\" width=\"100px;\" alt=\"Brandon Bennett\"/><br /><sub><b>Brandon Bennett</b></sub></a><br /><a href=\"https://github.com/aerleon/aerleon/commits?author=nemith\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/btriller\"><img src=\"https://avatars.githubusercontent.com/u/851727?v=4?s=100\" width=\"100px;\" alt=\"Bastian Triller\"/><br /><sub><b>Bastian Triller</b></sub></a><br /><a href=\"https://github.com/aerleon/aerleon/commits?author=btriller\" title=\"Code\">\ud83d\udcbb</a></td>\n <td align=\"center\" valign=\"top\" width=\"14.28%\"><a href=\"https://github.com/XioNoX\"><img src=\"https://avatars.githubusercontent.com/u/688817?v=4?s=100\" width=\"100px;\" alt=\"Arzhel Younsi\"/><br /><sub><b>Arzhel Younsi</b></sub></a><br /><a href=\"https://github.com/aerleon/aerleon/commits?author=XioNoX\" title=\"Code\">\ud83d\udcbb</a></td>\n </tr>\n </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n## Credit\n\nFiles and code included in this project from Capirca are copyright Google and\nare included under the terms of the Apache License, Version 2.0. You may obtain\na copy of the License at\n\n <http://www.apache.org/licenses/LICENSE-2.0>\n\nContributors who wish to modify files bearing a copyright notice are obligated\nby the terms of the Apache License, Version 2.0 to include at the top of the\nfile a prominent notice stating as much. Copyright notices must not be removed\nfrom files in this repository.\n\nThis README file and other documentation files may contain phrases and sections that are copyright Google.\nThis file and other documentation files are modified from the original by the Aerleon Project Team.\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A firewall generation tool",
"version": "1.9.0",
"project_urls": {
"Homepage": "https://github.com/aerleon/aerleon",
"Repository": "https://github.com/aerleon/aerleon"
},
"split_keywords": [
"firewall",
" networking",
" security"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "dc92a2a09c00d8de8e8738c02489d83f72a2bfe73053cb291f565e69eb6a6b11",
"md5": "8ca112f7d45f77dfe518bfe85636f991",
"sha256": "882b72dc3eaae1099cafe005d01da3dbc2f6ee6616ba12d093d0e81d3653a32c"
},
"downloads": -1,
"filename": "aerleon-1.9.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8ca112f7d45f77dfe518bfe85636f991",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 278459,
"upload_time": "2024-04-18T07:44:50",
"upload_time_iso_8601": "2024-04-18T07:44:50.501897Z",
"url": "https://files.pythonhosted.org/packages/dc/92/a2a09c00d8de8e8738c02489d83f72a2bfe73053cb291f565e69eb6a6b11/aerleon-1.9.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cabd87869c1cb33a2b4d269c6f66056c44453e643925731cb85e6861d1121be8",
"md5": "1852e3b88f0cd581fd238b654b7c215d",
"sha256": "850cd621dda750263db313d4473302b48b82adaaa9220e6fd0677cb7900f95f6"
},
"downloads": -1,
"filename": "aerleon-1.9.0.tar.gz",
"has_sig": false,
"md5_digest": "1852e3b88f0cd581fd238b654b7c215d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 225231,
"upload_time": "2024-04-18T07:44:52",
"upload_time_iso_8601": "2024-04-18T07:44:52.873148Z",
"url": "https://files.pythonhosted.org/packages/ca/bd/87869c1cb33a2b4d269c6f66056c44453e643925731cb85e6861d1121be8/aerleon-1.9.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-18 07:44:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "aerleon",
"github_project": "aerleon",
"travis_ci": true,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "sigstore",
"specs": [
[
"==",
"1.0.0"
]
]
}
],
"lcname": "aerleon"
}