{"id":31914743,"url":"https://github.com/graphiant-inc/graphiant-playbooks","last_synced_at":"2026-04-02T19:57:17.193Z","repository":{"id":296476476,"uuid":"993511633","full_name":"Graphiant-Inc/graphiant-playbooks","owner":"Graphiant-Inc","description":"Playbooks for Graphiant NaaS","archived":false,"fork":false,"pushed_at":"2025-09-24T05:08:57.000Z","size":5459,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-24T07:11:02.859Z","etag":null,"topics":["backbone","cloud","naas","network","networking","python","restapi","sdk","sdwan"],"latest_commit_sha":null,"homepage":"https://www.graphiant.com","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/Graphiant-Inc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-30T23:28:01.000Z","updated_at":"2025-09-24T05:09:02.000Z","dependencies_parsed_at":"2025-05-31T11:06:43.923Z","dependency_job_id":"87339b24-6849-4799-a40f-41234574df82","html_url":"https://github.com/Graphiant-Inc/graphiant-playbooks","commit_stats":null,"previous_names":["graphiant-inc/graphiant-playbooks"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Graphiant-Inc/graphiant-playbooks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphiant-Inc%2Fgraphiant-playbooks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphiant-Inc%2Fgraphiant-playbooks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphiant-Inc%2Fgraphiant-playbooks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphiant-Inc%2Fgraphiant-playbooks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Graphiant-Inc","download_url":"https://codeload.github.com/Graphiant-Inc/graphiant-playbooks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Graphiant-Inc%2Fgraphiant-playbooks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016911,"owners_count":26085887,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["backbone","cloud","naas","network","networking","python","restapi","sdk","sdwan"],"created_at":"2025-10-13T19:27:57.829Z","updated_at":"2026-04-02T19:57:17.186Z","avatar_url":"https://github.com/Graphiant-Inc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Graphiant Playbooks\n\n[![Python 3.7+](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)\n[![Ansible](https://img.shields.io/badge/ansible--core-2.17+-green.svg)](https://docs.ansible.com/)\n[![Terraform](https://img.shields.io/badge/terraform-1.14+-red.svg)](https://developer.hashicorp.com/terraform/install)\n[![License: GPL v3+](https://img.shields.io/badge/License-GPLv3+-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://docs.graphiant.com/docs/graphiant-playbooks)\n\nAutomated network infrastructure management for [Graphiant Network-as-a-Service (NaaS)](https://www.graphiant.com) offerings.\n\nRefer [Graphiant Docs](https://docs.graphiant.com) to get started with [Graphiant Network-as-a-Service (NaaS)](https://www.graphiant.com) offerings.\n\n## Graphiant API Authentication\n\nAutomation in this repository talks to the Graphiant API using a **access token** or **username/password**.\n\n```bash\n# Set Graphiant API Endpoint URL\nexport GRAPHIANT_HOST=\"https://api.graphiant.com\"\n```\n\n### Option 1: Set Graphiant API ACCESS TOKEN\n\n```bash\n# Fetch a Graphiant API access token using the graphiant CLI\ngraphiant login\nsource ~/.graphiant/env.sh\n\n# Optional: reload shell configuration so the token is available in new terminals\nsource ~/.zshrc\n\n# Verify the environment variable\nenv | grep GRAPHIANT_ACCESS_TOKEN\n```\n\nThe Ansible collection accepts `access_token` on modules and honors **`GRAPHIANT_ACCESS_TOKEN`** when set (bearer auth is used before username/password when the token is valid). See [Credential Management Guide](ansible_collections/graphiant/naas/docs/guides/CREDENTIAL_MANAGEMENT_GUIDE.md).\n\n### Option 2: Set Graphiant Portal User Login Credentials\n\n```bash\n# Add to your shell profile (~/.zshrc, ~/.bashrc, etc.) or export for the session\nexport GRAPHIANT_USERNAME=\"your_username\"\nexport GRAPHIANT_PASSWORD=\"your_password\"\n\n# Verify the environment variables\nenv | grep GRAPHIANT_USERNAME\nenv | grep GRAPHIANT_PASSWORD\n```\n\nPass `username` / `password` (or your vault equivalents) into playbooks and roles as required by each module.\n\n## 📚 Documentation\n\n- **Official Documentation**: [Graphiant Playbooks Guide](https://docs.graphiant.com/docs/graphiant-playbooks) \u003c-\u003e [Graphiant Automation Docs](https://docs.graphiant.com/docs/automation)\n- **Ansible Collection**: [Ansible Galaxy Collection - graphiant.naas](https://galaxy.ansible.com/ui/repo/published/graphiant/naas)\n- **Changelog**: [changelogs/changelog.yaml](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/ansible_collections/graphiant/naas/changelogs/changelog.yaml) - Version history and release notes\n- **Security Policy**: [SECURITY.md](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/SECURITY.md) - Security best practices and vulnerability reporting\n\n## Components\n\n| Component | Description | Documentation |\n|-----------|-------------|---------------|\n| **Ansible Collection** | Ansible modules for Graphiant NaaS automation (v26.3.0) | [📖 Documentation](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/ansible_collections/graphiant/naas/README.md) |\n| **Terraform Modules** | Infrastructure as Code for cloud connectivity | [📖 Documentation](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/terraform/README.md) |\n| **CI/CD Pipelines** | Automated testing, linting, building, and releasing | [📖 GitHub](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/.github/workflows/README.md) |\n| **Docker Support** | Containerized execution environment | [📖 Documentation](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/Docker.md) |\n\n## Quick Start\n\n### Prerequisites\n\n- Python 3.7+ (compatible with ansible-core 2.17, 2.18, 2.19, and 2.20)\n- Ansible Core 2.17+\n- Terraform v1.14+\n\n### Ansible Collection (Recommended)\n\n```bash\n# Clone the repository\ngit clone https://github.com/Graphiant-Inc/graphiant-playbooks.git\ncd graphiant-playbooks\n\n# Create virtual environment\npython3.7 -m venv venv\nsource venv/bin/activate\n\n# Install dependencies\npip install -r ansible_collections/graphiant/naas/requirements-ee.txt\n\n# Install collection from source\nansible-galaxy collection install ansible_collections/graphiant/naas/ --force\n\n# Or install from Ansible Galaxy\nansible-galaxy collection install graphiant.naas\n```\n\n**Example Playbook:**\n\n```yaml\n---\n- name: Configure Graphiant network\n  hosts: localhost\n  gather_facts: false\n  vars:\n    graphiant_client_params: \u0026graphiant_client_params\n      host: \"{{ graphiant_host }}\"\n      username: \"{{ graphiant_username }}\"\n      password: \"{{ graphiant_password }}\"\n\n  tasks:\n    - name: Configure LAN interfaces\n      graphiant.naas.graphiant_interfaces:\n        \u003c\u003c: *graphiant_client_params\n        interface_config_file: \"interface_config.yaml\"\n        operation: \"configure_lan_interfaces\"\n```\n\n**See the [Ansible Collection README](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/ansible_collections/graphiant/naas/README.md) for complete documentation and [Examples Guide](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/ansible_collections/graphiant/naas/docs/guides/EXAMPLES.md) for detailed usage examples.**\n\n### Key Features\n\n- **Idempotent Operations**: All modules correctly report `changed: false` when no modifications occur\n- **Structured Results**: Manager methods return detailed results with `changed`, `created`, `skipped`, and `deleted` fields\n- **Graceful Error Handling**: Handles \"object not found\" errors gracefully in deconfigure operations\n- **Jinja2 Template Support**: Configuration files support Jinja2 templating for dynamic generation\n- **Comprehensive Logging**: Optional detailed logging for debugging and troubleshooting\n- **Automated Releases**: GitHub Actions workflow for building, publishing, and creating releases\n\n### Python Library\n\nThe collection can also be used as a Python library:\n\n```bash\n# Set PYTHONPATH for direct Python usage\nexport PYTHONPATH=$(pwd)/ansible_collections/graphiant/naas/plugins/module_utils:$PYTHONPATH\n```\n\n```python\nfrom libs.graphiant_config import GraphiantConfig\n\nconfig = GraphiantConfig(\n    base_url=\"https://api.graphiant.com\",\n    username=\"user\",\n    password=\"pass\"\n)\nconfig.interfaces.configure_lan_interfaces(\"interface_config.yaml\")\n```\n\nSee [ansible_collections/graphiant/naas/tests/test.py](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/ansible_collections/graphiant/naas/tests/test.py) for comprehensive Python library usage examples.\n\n### Terraform Modules\n\nDeploy cloud connectivity infrastructure with Terraform:\n\n```bash\n# Azure ExpressRoute\ncd terraform/gateway_services/azure\nterraform init\nterraform plan -var-file=\"../../configs/gateway_services/azure_config.tfvars\"\nterraform apply -var-file=\"../../configs/gateway_services/azure_config.tfvars\"\n\n# AWS Direct Connect\ncd terraform/gateway_services/aws\nterraform init\nterraform plan -var-file=\"../../configs/gateway_services/aws_config.tfvars\"\nterraform apply -var-file=\"../../configs/gateway_services/aws_config.tfvars\"\n\n# GCP InterConnect\ncd terraform/gateway_services/gcp\nterraform init\nterraform plan -var-file=\"../../configs/gateway_services/gcp_config.tfvars\"\nterraform apply -var-file=\"../../configs/gateway_services/gcp_config.tfvars\"\n```\n\n**See the [Terraform README](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/terraform/README.md) for detailed setup instructions.**\n\n## Project Structure\n\n```\ngraphiant-playbooks/\n├── ansible_collections/graphiant/naas/               # Ansible collection \n│   ├── plugins/modules/                              # Ansible modules (9 modules)\n│   ├── plugins/module_utils/                         # Python library code\n│   ├── playbooks/                                    # Example playbooks\n│   ├── configs/                                      # Configuration templates\n│   ├── templates/                                    # Jinja2 templates\n│   ├── docs/                                         # Documentation\n│   ├── changelogs/changelog.yaml                     # Version history\n│   ├── README.md                                     # Collection documentation\n│   └── _version.py                                   # Centralized version management\n├── terraform/                                        # Terraform modules\n│   ├── gateway_services/                             # Cloud gateway services (AWS/Azure/GCP)\n│   └── edge_services/                                # Edge services\n├── scripts/                                          # Utility scripts\n│   ├── build_collection.py                          # Collection build script\n│   ├── bump_version.py                              # Version bumping script\n│   ├── validate_collection.py                       # Collection validation script\n│   └── build_docsite.sh                             # Documentation build script\n├── .github/workflows/                                # GitHub Actions workflows\n│   ├── lint.yml                                     # Linting workflow\n│   ├── test.yml                                     # Test workflow (multi-version testing)\n│   ├── build.yml                                    # Build workflow\n│   ├── release.yml                                  # Release workflow (auto-tag/release)\n│   └── README.md                                    # GitHub documentation\n├── SECURITY.md                                       # Security policy\n├── CONTRIBUTING.md                                   # Contribution guidelines\n├── CODE_OF_CONDUCT.md                               # Code of conduct\n└── README.md                                         # This file\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! See [CONTRIBUTING.md](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/CONTRIBUTING.md) for:\n- Development setup\n- Code standards\n- Testing requirements\n- Pull request process\n- Branch protection requirements\n- GPG signing requirements\n\nSee [CODE_OF_CONDUCT.md](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/CODE_OF_CONDUCT.md) for our community guidelines.\n\n## 📄 License\n\nThis project is licensed under the GNU General Public License v3.0 or later (GPLv3+) - see the [LICENSE](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/LICENSE) file for details.\n\n## 🆘 Support\n\n- **Official Documentation**: [Graphiant Playbooks Guide](https://docs.graphiant.com/docs/graphiant-playbooks) \u003c-\u003e [Graphiant Automation Docs](https://docs.graphiant.com/docs/automation)\n- **Changelog**: [changelogs/changelog.yaml](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/ansible_collections/graphiant/naas/changelogs/changelog.yaml) - Version history and release notes\n- **Security**: [SECURITY.md](https://github.com/Graphiant-Inc/graphiant-playbooks/blob/main/SECURITY.md) - Security policy and vulnerability reporting\n- **Issues**: [GitHub Issues](https://github.com/Graphiant-Inc/graphiant-playbooks/issues)\n- **Email**: support@graphiant.com\n\n## 🔗 Related Projects\n\n- [Graphiant SDK Python](https://github.com/Graphiant-Inc/graphiant-sdk-python)\n- [Graphiant SDK Go](https://github.com/Graphiant-Inc/graphiant-sdk-go)\n\n---\n\n**Made with ❤️ by the Graphiant Team**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphiant-inc%2Fgraphiant-playbooks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgraphiant-inc%2Fgraphiant-playbooks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgraphiant-inc%2Fgraphiant-playbooks/lists"}