# Ansible vs Puppet

**Leader by Vioscale score:** Ansible

| Attribute | Ansible | Puppet |
|---|---|---|
| **Vioscale score** | 57.5 (61% (medium)) | 47.2 (58% (medium)) |
| activity.commits_last_30d | 22 | 0 |
| adoption.dependent_repos | 2,140 | 12,289 |
| adoption.github_stars | 70,473 | 7,922 |
| adoption.package_downloads_weekly | 2,699,011 | - |
| deployment.options | `{"cloud":true,"self_hosted":true}` | `{"cloud":true,"hybrid":true,"on_prem":true,"air_gapped":true,"self_hosted":true}` |
| description.long | Ansible is an open source IT automation engine that automates provisioning, configuration management, application deployment, orchestration, and many other IT processes. It is free to use, and the project benefits from the experience and intelligence of its thousands of contributors. | Infrastructure automation tool that maintains consistent configurations across on-premises, hybrid, cloud, and edge environments through continuous enforcement of desired state. Automatically detects and corrects configuration drift, enforces compliance policies, and generates audit-ready documentation. |
| features.capabilities | `{"open_source_core":true}` | `{"hosting":"both","idempotent":true,"architecture":"agent","desired_state":true,"windows_support":true,"content_registry":true,"open_source_core":true,"policy_compliance":true,"cloud_provisioning":true,"enterprise_edition":true}` |
| integrations.count | 22 | 13 |
| integrations.list | `[{"name":"Terraform"},{"name":"VMware"},{"name":"ServiceNow"},{"name":"AWS"},{"name":"Microsoft Azure"},{"name":"Google Cloud Platform"},{"name":"Cisco"},{"name":"Juniper"},{"name":"F5"},{"name":"HPE"},{"name":"Dell Technologies"},{"name":"NetApp"},{"name":"SAP"},{"name":"Pure"},{"name":"Palo Alto Networks"},{"name":"CyberArk"},{"name":"HashiCorp Vault"},{"name":"Splunk"},{"name":"Dynatrace"},{"name":"Infoblox"},{"name":"Aruba"},{"name":"Windows"}]` | `[{"name":"ServiceNow"},{"name":"VMware"},{"name":"Argo CD"},{"name":"Jenkins"},{"name":"Dynatrace"},{"name":"Datadog"},{"name":"New Relic"},{"name":"Splunk"},{"name":"Grafana"},{"name":"Prometheus"},{"name":"Tenable Nessus"},{"name":"CIS Benchmarks"},{"name":"DISA STIG"}]` |
| language.primary | Python | Ruby |
| license.spdx | GPL-3.0 | Apache-2.0 |
| market.availability | - | `{"primaryMarkets":[],"availabilityScope":"global","availableCountries":[],"notAvailableCountries":[]}` |
| platform.support | `{"cli":true}` | `{"cli":true,"mac":true,"web":true,"linux":true,"windows":true}` |
| pricing | `{"type":"hybrid","plans":[{"free":true,"name":"Ansible (Open Source)","description":"Free open-source project"},{"free":false,"name":"Red Hat Ansible Automation Platform","description":"Enterprise platform with security hardening and support","contactSales":true}],"summary":"Free open-source version or paid enterprise platform","freeTier":true,"sourceUrl":"https://www.ansible.com","retrievedAt":"2026-08-05T14:05:30.789Z"}` | `{"type":"hybrid","plans":[{"free":true,"name":"Core","summary":"Free for <25 nodes","features":["Stable, secure, vendor-supported builds","Hardened binaries and packages","Vendor-backed SLAs"],"description":"Free tier for developers and small deployments","contactSales":false,"includedLimits":{"nodes":"<25"}},{"free":false,"name":"Enterprise","summary":"Custom pricing for 25+ nodes","features":["Web-based console interface","Role-based access control","Infrastructure management across cloud and on-premises","CI/CD pipeline tooling","ServiceNow integration"],"minSeats":25,"description":"Scalable automation for complex hybrid infrastructure","contactSales":true},{"free":false,"name":"Advanced","summary":"Custom enterprise pricing","features":["AI-powered infrastructure insights","Event-driven workflows","Automated vulnerability remediation","Priority support","Security baseline enforcement"],"description":"Enterprise platform with AI-driven insights and event-driven automation","contactSales":true}],"summary":"Free tier for <25 nodes; custom pricing for larger deployments","currency":"USD","freeTier":true,"sourceUrl":"https://www.puppet.com/pricing","retrievedAt":"2026-08-14T13:46:01.968Z"}` |
| pricing.free_tier | yes | yes |
| pricing.model | commercial | commercial |
| pricing.price_level | low | low |
| pricing.transparent | - | no |
| release.history | `[{"url":"https://github.com/ansible/ansible/releases/tag/v2.21.3","date":"2026-08-10T16:46:28Z","type":"stable","version":"v2.21.3"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.20.8","date":"2026-08-10T16:45:07Z","type":"stable","version":"v2.20.8"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.19.12","date":"2026-08-10T16:43:51Z","type":"stable","version":"v2.19.12"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.18.19","date":"2026-08-10T16:42:12Z","type":"stable","version":"v2.18.19"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.21.3rc1","date":"2026-08-03T22:47:24Z","type":"prerelease","version":"v2.21.3rc1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.20.8rc1","date":"2026-08-03T22:46:13Z","type":"prerelease","version":"v2.20.8rc1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.19.12rc1","date":"2026-08-03T22:35:50Z","type":"prerelease","version":"v2.19.12rc1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.18.19rc1","date":"2026-08-03T22:35:39Z","type":"prerelease","version":"v2.18.19rc1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.21.2","date":"2026-07-13T19:39:26Z","type":"stable","version":"v2.21.2"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.21.2rc1","date":"2026-07-06T18:32:45Z","type":"prerelease","version":"v2.21.2rc1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.21.1","date":"2026-06-18T19:35:26Z","type":"stable","version":"v2.21.1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.20.7","date":"2026-06-18T19:36:46Z","type":"stable","version":"v2.20.7"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.19.11","date":"2026-06-18T19:37:59Z","type":"stable","version":"v2.19.11"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.18.18","date":"2026-06-18T19:39:12Z","type":"stable","version":"v2.18.18"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.16.19","date":"2026-06-18T19:40:26Z","type":"stable","version":"v2.16.19"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.21.1rc1","date":"2026-06-11T19:29:45Z","type":"prerelease","version":"v2.21.1rc1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.20.7rc1","date":"2026-06-11T19:31:04Z","type":"prerelease","version":"v2.20.7rc1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.19.11rc1","date":"2026-06-11T19:32:36Z","type":"prerelease","version":"v2.19.11rc1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.18.18rc1","date":"2026-06-11T19:33:53Z","type":"prerelease","version":"v2.18.18rc1"},{"url":"https://github.com/ansible/ansible/releases/tag/v2.16.19rc1","date":"2026-06-11T19:40:34Z","type":"prerelease","version":"v2.16.19rc1"}]` | `[{"url":"https://github.com/puppetlabs/puppet/releases/tag/8.10.0","date":"2024-10-22T15:14:58Z","type":"stable","version":"8.10.0"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/7.34.0","date":"2024-10-22T15:15:06Z","type":"stable","version":"7.34.0"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/8.9.0","date":"2024-09-06T18:10:41Z","type":"stable","version":"8.9.0"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/7.33.0","date":"2024-09-06T16:46:58Z","type":"stable","version":"7.33.0"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/7.32.1","date":"2024-07-24T23:37:24Z","type":"stable","version":"7.32.1"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/8.8.1","date":"2024-07-24T02:51:57Z","type":"stable","version":"8.8.1"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/8.8.0","date":"2024-07-22T16:34:24Z","type":"stable","version":"8.8.0"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/7.32.0","date":"2024-07-22T16:35:24Z","type":"stable","version":"7.32.0"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/8.7.0","date":"2024-06-10T16:51:52Z","type":"stable","version":"8.7.0"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/7.31.0","date":"2024-06-10T16:52:12Z","type":"stable","version":"7.31.0"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/8.6.0","date":"2024-04-10T18:21:24Z","type":"stable","version":"8.6.0"},{"url":"https://github.com/puppetlabs/puppet/releases/tag/7.30.0","date":"2024-04-10T20:53:11Z","type":"stable","version":"7.30.0"}]` |
| security.scorecard | 7.5 | 3.5 |
| security.vulnerabilities | `{"count":7,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=pypi&package_name=ansible-core&per_page=100","last_12m":1,"max_severity":"HIGH"}` | `{"count":23,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=rubygems&package_name=puppet&per_page=100","last_12m":0,"max_severity":"CRITICAL"}` |

## Capabilities (Configuration Management Tools)

| Capability | Ansible | Puppet |
|---|:--:|:--:|
| **Core** |  |  |
| Architecture | - | Agent-based |
| Push / pull model | - | - |
| Config language | - | - |
| **Deployment** |  |  |
| Masterless mode | - | - |
| Hosting | - | Cloud + self-hosted |
| **Correctness** |  |  |
| Idempotent | - | ✓ |
| **Model** |  |  |
| Desired-state declarative | - | ✓ |
| **Ecosystem** |  |  |
| Content registry | - | ✓ |
| **Platform** |  |  |
| Windows support | - | ✓ |
| **Scope** |  |  |
| Cloud provisioning | - | ✓ |
| **Governance** |  |  |
| Policy / compliance | - | ✓ |
| **Commercial** |  |  |
| Enterprise edition | - | ✓ |
| **Licensing** |  |  |
| Open-source core | ✓ | ✓ |

*Source: Vioscale. Generated 2026-09-01T15:22:30.530Z. "-" = undocumented, not absent.*
