{"id":20588791,"url":"https://github.com/ciscodevnet/sd-wan-ansible-pipeline-code","last_synced_at":"2025-04-14T21:54:35.259Z","repository":{"id":36654992,"uuid":"184289498","full_name":"CiscoDevNet/sd-wan-ansible-pipeline-code","owner":"CiscoDevNet","description":"SD-WAN Ansible CI/CD pipeline Code","archived":false,"fork":false,"pushed_at":"2023-01-24T23:18:41.000Z","size":201,"stargazers_count":30,"open_issues_count":3,"forks_count":29,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-04-14T21:54:18.675Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/CiscoDevNet.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}},"created_at":"2019-04-30T15:44:17.000Z","updated_at":"2025-04-08T19:50:39.000Z","dependencies_parsed_at":"2023-02-14T02:30:34.024Z","dependency_job_id":null,"html_url":"https://github.com/CiscoDevNet/sd-wan-ansible-pipeline-code","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiscoDevNet%2Fsd-wan-ansible-pipeline-code","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiscoDevNet%2Fsd-wan-ansible-pipeline-code/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiscoDevNet%2Fsd-wan-ansible-pipeline-code/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CiscoDevNet%2Fsd-wan-ansible-pipeline-code/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CiscoDevNet","download_url":"https://codeload.github.com/CiscoDevNet/sd-wan-ansible-pipeline-code/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248968755,"owners_count":21191158,"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","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":[],"created_at":"2024-11-16T07:26:27.454Z","updated_at":"2025-04-14T21:54:35.238Z","avatar_url":"https://github.com/CiscoDevNet.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sd-wan-ansible-pipeline-code\nThis collection of Ansible inventory and playbooks is designed to be used with the DevNet Learning Module [Cisco SD-WAN Ansible Pipeline](https://developer.cisco.com/learning/modules/sd-wan-ansible-pipeline) and the DevNet [Multi-IOS Cisco Test Network](https://devnetsandbox.cisco.com/RM/Topology) sandbox.  However, it can also be applied to any VIRL server that has the appropriate Cisco SD-WAN images installed.\n\n\u003e Note: future development of the SDWAN DevOps code base has been moved to the [sdwan-devops](https://github.com/CiscoDevNet/sdwan-devops) repo.  There are many improvements there, including support for VIRL2/CML2 and VMware deployments.\n\n## Requirements\n- VIRL server with vManage, vSmart, vBond and vEdge images installed.  For instructions on how to do this, look at the [virl-howtos](https://github.com/CiscoSE/virl-howtos) repo.\n- [sshpass](https://sourceforge.net/projects/sshpass/) installed\n\n## Installation\nClone the repo.  Note the use of the recursive switch.  This is to make sure the necessary submodules get pulled down as well.\n```\ngit clone --recursive https://github.com/CiscoDevNet/sd-wan-ansible-pipeline-code.git\n```\nChange into the sd-wan-ansible-pipeline-code directory.\n```\ncd sd-wan-ansible-pipeline-code\n```\nInstall the required Python modules.\n```\npip install -r requirements.txt\n```\n## Topology\nThe Ansible inventory data included in this repo is designed to build and configure the following topology:\n\n![Topology](viptela1.png)\n\n## Playbooks\nThere are seven playbooks in this collection:\n- **build.yml** builds the dynamic VIRL topology file and starts the simulation\n- **configure.yml** pushes the Day 1 configuration to devices via NETCONF\n- **import-templates.yml** imports device/feature templates into vManage\n- **export-templates.yml** writes device/feature templates from vManage to a local YAML file\n- **attach-template.yml** attaches device templates to devices\n- **detach-template.yml** detaches device templates from devices\n- **clean.yml** cleans up file and stops the simulation\n\n## Basic usage\nBuild the topology.\n```\nansible-playbook build.yml\n```\nBring up the control plane and basic device connectivity.\n```\nansible-playbook configure.yml\n```\nImport device/feature templates into vManage\n```\nansible-playbook import-templates.yml\n```\nAttach device templates to devices.\n```\nansible-playbook attach-template.yml\n```\nWhen you're done, cleanup.\n```\nansible-playbook clean.yml\n```\n## Adding a site to the topology\nEnsure you are starting with clean directory and no simulation running.\n```\nansible-playbook clean.yml\n```\nCopy a new viptela-workshop.yml file with the additional branch site into the inventory directory.\n```\ncp inventory_files/viptela-workshop-2branch.yml inventory/viptela-workshop.yml\n```\nBuild the topology.\n```\nansible-playbook build.yml\n```\nBring up the control plane and basic device connectivity.\n```\nansible-playbook configure.yml\n```\nImport device/feature templates into vManage\n```\nansible-playbook import-templates.yml\n```\nAttach device templates to devices.\n```\nansible-playbook attach-template.yml\n```\n\u003e Note: It can take some time for vEdges to register in vManage, trying to run the attach-template.yml playbook before the vEdge is registered in vManage will result in an error.\n## Updating a device banner\nCopy a new network.yml file with an updated banner into the vedge1 directory.\n```\ncp inventory_files/vedge1_network.yml inventory/host_vars/vedge1/\n```\nReattach the device template to vedge1\n```\nansible-playbook attach-template.yml --limit=vedge1\n```\n## Useful tips\n1. Use `virl nodes` to find node management IP addresses.\n1. When running the attach-template.yml playbook, you can limit the playbook to a specific node (e.g `--limit=vedge1`).\n1. When running the configure.yml playbook, you can limit the playbook to just control plane or just edge with `--limit=control` and `--limit=edge`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fciscodevnet%2Fsd-wan-ansible-pipeline-code","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fciscodevnet%2Fsd-wan-ansible-pipeline-code","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fciscodevnet%2Fsd-wan-ansible-pipeline-code/lists"}