{"id":37882863,"url":"https://github.com/cisco-en-programmability/ansible-collection-catalystwan","last_synced_at":"2026-01-16T16:49:47.267Z","repository":{"id":230093988,"uuid":"777712382","full_name":"cisco-en-programmability/ansible-collection-catalystwan","owner":"cisco-en-programmability","description":"This repository contains the necessary ansible modules which uses catalystwan SDK","archived":false,"fork":false,"pushed_at":"2026-01-02T16:20:59.000Z","size":509,"stargazers_count":7,"open_issues_count":12,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-08T23:50:59.719Z","etag":null,"topics":["ansible","ansible-playbook","modules","sdwan"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cisco-en-programmability.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"docs/SECURITY.md","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":"2024-03-26T11:26:47.000Z","updated_at":"2025-11-21T15:36:06.000Z","dependencies_parsed_at":"2024-04-29T08:46:12.893Z","dependency_job_id":"3d59db00-8b34-47de-a278-e1f7d5200ca7","html_url":"https://github.com/cisco-en-programmability/ansible-collection-catalystwan","commit_stats":null,"previous_names":["cisco-open/ansible-collection-catalystwan"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/cisco-en-programmability/ansible-collection-catalystwan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-en-programmability%2Fansible-collection-catalystwan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-en-programmability%2Fansible-collection-catalystwan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-en-programmability%2Fansible-collection-catalystwan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-en-programmability%2Fansible-collection-catalystwan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cisco-en-programmability","download_url":"https://codeload.github.com/cisco-en-programmability/ansible-collection-catalystwan/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-en-programmability%2Fansible-collection-catalystwan/sbom","scorecard":{"id":363878,"data":{"date":"2025-08-18T09:23:59Z","repo":{"name":"github.com/cisco-en-programmability/ansible-collection-catalystwan","commit":"6942918f09fbdb401aa375cffbf13ee521256d19"},"scorecard":{"version":"v5.0.0","commit":"ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4"},"score":7.3,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#binary-artifacts"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#branch-protection"}},{"name":"CI-Tests","score":10,"reason":"23 out of 23 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#ci-tests"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#cii-best-practices"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#code-review"}},{"name":"Contributors","score":3,"reason":"project has 1 contributing companies or organizations -- score normalized to 3","details":["Info: cisco-open contributor org/company found, "],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#contributors"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#dangerous-workflow"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: :0"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#dependency-update-tool"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#license"}},{"name":"Maintained","score":4,"reason":"5 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/linters.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/cisco-en-programmability/ansible-collection-catalystwan/linters.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/ansible-doc-validation.yml:44","Warn: pipCommand not pinned by hash: .github/workflows/galaxy-importer.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/galaxy-importer.yml:51","Warn: pipCommand not pinned by hash: .github/workflows/galaxy-importer.yml:52","Warn: pipCommand not pinned by hash: .github/workflows/linters.yml:38","Warn: pipCommand not pinned by hash: .github/workflows/linters.yml:50","Warn: pipCommand not pinned by hash: .github/workflows/release-from-tag.yml:60","Info:   8 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   2 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   7 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#sast"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: docs/SECURITY.md:1","Info: Found linked content: docs/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: docs/SECURITY.md:1","Info: Found text in security policy: docs/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#signed-releases"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Warn: jobLevel 'security-events' permission set to 'write': .github/workflows/scorecard.yml:25","Info: topLevel permissions set to 'read-all': .github/workflows/ansible-doc-validation.yml:14","Info: topLevel permissions set to 'read-all': .github/workflows/galaxy-importer.yml:15","Info: topLevel permissions set to 'read-all': .github/workflows/linters.yml:10","Info: topLevel permissions set to 'read-all': .github/workflows/release-from-tag.yml:8","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:17"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#token-permissions"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T11:25:52.510Z","repository_id":230093988,"created_at":"2025-08-18T11:25:52.510Z","updated_at":"2025-08-18T11:25:52.510Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28480081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","modules","sdwan"],"created_at":"2026-01-16T16:49:47.174Z","updated_at":"2026-01-16T16:49:47.246Z","avatar_url":"https://github.com/cisco-en-programmability.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ansible Collection - cisco.catalystwan\n\n## Overview\n\nReusable Ansible modules and roles that will help to automate Cisco\nSD-WAN management (post bringup operations, day0, day1).\n\nAll modules are based on [catalystwan](https://github.com/cisco-en-programmability/catalystwan-sdk).\n\nCollection available on Ansible Galaxy: [cisco.catalystwan](https://galaxy.ansible.com/ui/repo/published/cisco/catalystwan/)\n\n## Table of Contents\n\n- [Roadmap](#roadmap)\n- [Requirements](#requirements)\n- [Installing this collection](#installing-this-collection)\n- [Using this collection](#using-this-collection)\n- [Contributing](#contributing)\n- [Useful links and Getting Started](#useful-links-and-getting-started)\n- [License](#license)\n\n---\n\n## Roadmap\n\nSupport for the following workflows in vManage client and as Ansible modules:\n\n- Detect API server readiness:\n  - [x] in vManage-client?\n  - [x] in cisco.catalystwan module\n\n- Device onboarding (virtual and physical devices):\n  - [x] in vManage-client?\n  - [x] in cisco.catalystwan module\n\n- Device health checks:\n  - control/orchestrator connections check, and devices system health check\n    - [x] in vManage-client?\n    - [x] in cisco.catalystwan module\n  - BFD and OMP checks (BFD needs at least 2 edge devices to talk to each other)\n    - [x] in vManage-client?\n    - [x] in cisco.catalystwan module\n\n- Day 0 template attachment\n  - [x] in vManage-client?\n  - [x] in cisco.catalystwan module\n\n- Onboarding via PNP (Smart account sync \u0026 certificates sync)\n  - [x] in vManage-client?\n  - [x] in cisco.catalystwan module\n\n- Software upgrades\n  - [x] in vManage-client?\n  - [x] in cisco.catalystwan module\n\n- Day 1 configuration(Edit)\n  - [x] in vManage-client?\n  - [ ] in cisco.catalystwan module\n\n---\n\n## Requirements\n\nCurrently development of the tool was set with:\n\n- Python = 3.10.0\n- Ansible = 2.16.6\n- catalystwan = \"^0.33.6post0\"\n\n## Installing this collection\n\nIn order to use collection, add these lines to `requirements.yml` file in your ansible directory:\n\n```yaml\n---\ncollections:\n- name: git@github.com:cisco-en-programmability/ansible-collection-catalystwan.git\n  type: git\n  version: main\n```\n\nAnd run command:\n\n```bash\nansible-galaxy collection install -r requirements.yml\n```\n\n### Python dependencies\n\nThe python module dependencies are not installed by ansible-galaxy. They can be manually installed using pip:\n\n```bash\npip install -r requirements.txt\n```\n\n### Important ansible.cfg\n\nIt is important that your playbook execution will recognize this option from `ansible.cfg`:\n\n```cfg\n[defaults]\nstdout_callback = debug\n```\n\nas it is highly recommended when debugging your module code.\n\nIf you want to test the modules already in your playbook, use `stdout_callback = yaml`.\n\n### Credentials\n\nUse `manager_authentication` module argument, to provide authentication credentials to your Manager:\n\n```yml\n- name: Get list of Edge devices\n  cisco.catalystwan.devices_info:\n    device_category: vedges\n    manager_authentication:\n      url: \"x.x.x.x\"\n      username: \"xxx\"\n      password: \"xxx\"\n  register: edge_devices\n```\n\nSee [Providing credentials to catalystwan Ansible modules](./plugins/README.md#providing-credentials-to-catalystwan-ansible-modules) for more information.\n\n---\n\n## Using this collection\n\nTo run the modules againts specific machines, you have to include your playbook to act on localhost:\n\n```yaml\n- name: Example playbook\n  hosts: localhost\n```\n\nAnd then you can use the module:\n\n```yaml\n  tasks:\n    - name: Get all active sessions\n      cisco.catalystwan.active_sessions_info:\n        manager_authentication:\n          url: \"x.x.x.x\"\n          username: \"xxx\"\n          password: \"xxx\"\n      register: active_sessions\n\n```\n\n### Logging\n\nAll of the modules will produce 2 log files: `ansible_catalystwan_module.log` and `ansible_catalystwan.log`.\nCurrently base dir destination of these log files will be current working directory of playbooks.\n\n### Quick usage with example playbooks from .dev_dir\n\nAll of the modules are currently developed and tested with help of .dev_dir playbooks.\nThese playbooks offer initial config, onboarding and health checks.\nIf you want to run example playbook, supply your variables in `.dev_dir/dev_vars.yml`\nand execute playbooks from `.dev_dir/` directory.\n\n### Feature Templates\n\nFeature Templates operations (`add` and `delete`) are supported via `cisco.catalystwan.feature_templates` module.\n\nAvailable models are dependent on Catalystwan SDK, and they can be seen [here](https://github.com/cisco-en-programmability/catalystwan-sdk/blob/main/catalystwan/api/templates/models/supported.py).\n\nFor more information about adding new models see [Feature Templates generation](./plugins/README.md#feature-templates).\n\n---\n\n## Useful links and Getting Started\n\n### Python\n\n- [Download Python](https://www.python.org/downloads/)\n- [Getting Started with Python](https://docs.python.org/3/using/index.html)\n\n### Ansible\n\n- [Install Ansible](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html)\n- [Getting Started with Ansible](https://docs.ansible.com/ansible/latest/user_guide/intro_getting_started.html)\n\n- [Developing Modules General](https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html)\n- [Developing Modules Best Practices](https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_best_practices.html)\n- [Ansible module architecture](https://docs.ansible.com/ansible/latest/dev_guide/developing_program_flow_modules.html)\n\n### Ansible Galaxy\n\nAnsible Galaxy provides pre-packaged units of work known as roles, and it can be used to share and use content with Ansible.\n\n- [Using Ansible Galaxy](https://galaxy.ansible.com/docs/)\n\n### Cisco SD-WAN\n\n- [Cisco SD-WAN Overview](https://www.cisco.com/c/en/us/solutions/enterprise-networks/sd-wan/index.html)\n- [Cisco SD-WAN Documentation](https://www.cisco.com/c/en/us/support/routers/sd-wan/products-installation-and-configuration-guides-list.html)\n\n---\n\n## License\n\nSee [LICENSE](./LICENSE) file.\n\n## Contributing\n\nSee [Contributing](./docs/CONTRIBUTING.md) file.\n\n## Code of Conduct\n\nSee [Code of Conduct](./docs/CODE_OF_CONDUCT.md) file.\n\n## Releasing, Versioning and Deprecation\n\nThis collection follows Semantic Versioning. More details on versioning can be found in [Understanding collection versioning](https://docs.ansible.com/ansible/latest/dev_guide/developing_collections_distributing.html#understanding-collection-versioning).\n\nNew minor and major releases as well as deprecations will follow new releases and deprecations of the Cisco Catalystwan SDK, a Python SDK, which this project relies on.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisco-en-programmability%2Fansible-collection-catalystwan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcisco-en-programmability%2Fansible-collection-catalystwan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisco-en-programmability%2Fansible-collection-catalystwan/lists"}