|
12 months ago | |
---|---|---|
readme_images | 2 years ago | |
.gitignore | 2 years ago | |
LICENSE | 2 years ago | |
README.md | 12 months ago | |
cisco_ios_to_git.py | 2 years ago | |
requirements.txt | 2 years ago |
README.md
Track multiple Cisco IOS device config in a Git repository
Introduction
This is a python script collecting current running config from a Cisco IOS devices and storing the configs in a Git repo.
This allows you to monitor for configuration changes and track changes to over time.
Prerequisites
- Python - this has been tested with Python 3.8.6.
- Git installed on your computer.
- A remote Git repository. This has been tested against remote Github and our local Gitea installation repositories.
- A Bash (or compatible) terminal - the python script runs Git Bash commands directly in a terminal instance using
subprocess
. - Access to an IOS device
Getting started
Clone this Git Repository
git clone https://git.bit-cloud.de/carsten.schmiemann/Cisco_IOS_Config_to_Git.git
Open new Git repo folder in terminal
cd Cisco_IOS_Config_to_Git
Setup Python virtual environment
It is good practice to run Python scripts in a virtual environment.
Create virtual environment
python3 -m venv venv
Open the virtual environment
source venv/bin/activate
Install Python dependencies
pip install -r requirements.txt
Edit Python file
The IOS2git.py
Python script has some variables you need to define.
Edit host
, username
and password
to match your device(s).
# Cisco MainSwitch connection details
device = {
"device_type": "cisco_main_hub",
"host": "192.0.9.13",
"username": "sysadmin",
"password": "C1sco12345",
}
Edit git_repo_url
to match your Git repository URL.
Optional - edit commit_message
to specify what Git should use as the message for each commit.
# Git repository details
git_repo_url = "https://github.com/your_repo_url"
commit_message = "Automatic config update"
Run the Python script
To run the Python script
python3 IOS2git.py
Check the result
The script automatically deletes all created files after the Git push is complete. This means there's nothing to see locally after it has ran.
Go to your remote Git repository and you should see your config uploaded.
If you make changes to the switch config and re-run the Python script, you will see Git track the changes between the new config and the old config. Check the changes by viewing the most recent Git commit!
Troubleshooting
- If you have problems running the script, it is likely that the Git installed on your computer hasn't authenticated with the remote Git repository. The Python script relies on connection authentication credentials being cached on your computer.
To fix, manually clone the repository, and if prompted, enter authentication details.
git clone <git_repo_url>
You may need to use an access token rather than a password.
- If you have problems by setting up your virtual env with getting a message that rust compiler is not installed, install it
Example for Debian based systems
apt install rustc
- If you want to run it from systemd or cron, you need to include virtual env
/path/to/gitfolder/venv/bin/python3 /path/to/gitfolder/IOS2git.py