{"id":13397146,"url":"https://github.com/udhos/jazigo","last_synced_at":"2025-04-13T10:44:52.097Z","repository":{"id":40505109,"uuid":"60642086","full_name":"udhos/jazigo","owner":"udhos","description":"Jazigo is a tool written in Go for retrieving configuration for multiple devices, similar to rancid, fetchconfig, oxidized, Sweet.","archived":false,"fork":false,"pushed_at":"2023-11-02T21:43:49.000Z","size":352,"stargazers_count":219,"open_issues_count":1,"forks_count":27,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-03T01:36:25.483Z","etag":null,"topics":["aws-s3","backup","cisco","config-management","go","network-admin"],"latest_commit_sha":null,"homepage":"","language":"Go","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/udhos.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}},"created_at":"2016-06-07T19:53:53.000Z","updated_at":"2025-02-08T17:00:12.000Z","dependencies_parsed_at":"2022-09-03T02:10:24.295Z","dependency_job_id":"9f646bbe-cadf-4967-8682-a807fb8fa74d","html_url":"https://github.com/udhos/jazigo","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Fjazigo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Fjazigo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Fjazigo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Fjazigo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/udhos","download_url":"https://codeload.github.com/udhos/jazigo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248702228,"owners_count":21148114,"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":["aws-s3","backup","cisco","config-management","go","network-admin"],"created_at":"2024-07-30T18:01:11.753Z","updated_at":"2025-04-13T10:44:52.067Z","avatar_url":"https://github.com/udhos.png","language":"Go","funding_links":[],"categories":["Go","Networking","网络","网络相关库","Network Change Management","Tools","Online Parser","\u003cspan id=\"网络-networking\"\u003e网络 Networking\u003c/span\u003e","Relational Databases"],"sub_categories":["Strings","Uncategorized","Transliteration","音译","暂未分类这些库被放在这里是因为其他类别似乎都不适合。","SD-WAN","Advanced Console UIs","NETCONF","TTP","交流","\u003cspan id=\"高级控制台用户界面-advanced-console-uis\"\u003e高级控制台用户界面 Advanced Console UIs\u003c/span\u003e","暂未分类"],"readme":"[![license](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/udhos/jazigo/blob/master/LICENSE)\n[![Go Report Card](https://goreportcard.com/badge/github.com/udhos/jazigo)](https://goreportcard.com/report/github.com/udhos/jazigo)\n[![Go Reference](https://pkg.go.dev/badge/github.com/udhos/jazigo.svg)](https://pkg.go.dev/github.com/udhos/jazigo)\n\nTable of Contents\n=================\n\n* [About Jazigo](#about-jazigo)\n* [Supported Platforms](#supported-platforms)\n* [Features](#features)\n* [Requirements](#requirements)\n* [Quick Start \\- Short version](#quick-start---short-version)\n* [Quick Start \\- Detailed version](#quick-start---detailed-version)\n* [Global Settings](#global-settings)\n* [Importing Many Devices](#importing-many-devices)\n* [SSH Ciphers](#ssh-ciphers)\n* [Using AWS S3](#using-aws-s3)\n* [Calling an external program](#calling-an-external-program)\n\nCreated by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc.go)\n\nAbout Jazigo\n=============\n\nJazigo is a tool written in Go for retrieving configuration for multiple devices, similar to [rancid](http://www.shrubbery.net/rancid/), [fetchconfig](https://github.com/udhos/fetchconfig), [oxidized](https://github.com/ytti/oxidized), [Sweet](https://github.com/AppliedTrust/sweet).\n\nInstallation and usage are supposed to be dead simple. If you hit any surprising difficulty, please [report](https://github.com/udhos/jazigo/issues/new).\n\nSupported Platforms\n===================\n\nPlease send pull requests for new plataforms.\n\n- [Cisco ACI APIC](https://github.com/udhos/jazigo/blob/master/dev/model_cisco_apic.go)\n- [Cisco IOS](https://github.com/udhos/jazigo/blob/master/dev/model_cisco.go)\n- [Cisco IOS XR](https://github.com/udhos/jazigo/blob/master/dev/model_cisco_iosxr.go)\n- [Cisco NGA](https://github.com/udhos/jazigo/blob/master/dev/model_cisco_nga.go)\n- [Datacom DmSwitch](https://github.com/udhos/jazigo/blob/master/dev/model_datacom_dmswitch.go)\n- [Fortigate FortiOS](https://github.com/udhos/jazigo/blob/master/dev/model_fortios.go)\n- [HTTP](https://github.com/udhos/jazigo/blob/master/dev/model_http.go) (collect output of http GET method)\n- [Huawei VRP](https://github.com/udhos/jazigo/blob/master/dev/model_huawei_vrp.go)\n- [Juniper JunOS](https://github.com/udhos/jazigo/blob/master/dev/model_junos.go)\n- [Linux](https://github.com/udhos/jazigo/blob/master/dev/model_lin.go) (collect output of SSH commands)\n- [Mikrotik](https://github.com/udhos/jazigo/blob/master/dev/model_mikrotik.go)\n- [Run](https://github.com/udhos/jazigo/blob/master/dev/model_run.go) (run external program and collect its output)\n\nFeatures\n========\n\n- Written in [Go](https://golang.org/). Single executable file. No runtime dependency.\n- Straightforward usage: run the binary then point browser to web UI. Default settings should work out-of-the-box.\n- Tool configuration is automatically saved as [YAML](http://yaml.org). However one is NOT supposed to edit configuration file directly.\n- Spawns multiple concurrent lightweight goroutines to quickly handle large number of devices.\n- Very easy to add support for new platforms. See the [Cisco IOS model](https://github.com/udhos/jazigo/blob/master/dev/model_cisco.go) as example.\n- Backup files can be accessed from web UI.\n- See file differences directly from the web UI.\n- Support for SSH and TELNET.\n- Can directly store backup files into AWS S3 bucket.\n- Can call an external program and collect its output.\n\nRequirements\n============\n\n- You need a [system with the Go language](https://golang.org/dl/) in order to build the application. There is no special requirement for running it.\n\nQuick Start - Short version\n===========================\n\nThis is how to boot up Jazigo very quickly:\n\n    git clone https://github.com/udhos/jazigo ;# clone outside of GOPATH\n    cd jazigo\n    go install ./jazigo\n    mkdir etc repo log\n    JAZIGO_HOME=$PWD ~/go/bin/jazigo\n\nOpen jazigo interface - http://localhost:8080/jazigo/\n\nQuick Start - Detailed version\n==============================\n\nInstallation and usage are supposed to be dead simple. If you hit any surprising difficulty, please [report](https://github.com/udhos/jazigo/issues/new).\n\nIf you want to build from source code, start from step 1.\n\nIf you downloaded the executable binary file, start from step 2.\n\n1\\. Build from source\n\n    git clone https://github.com/udhos/jazigo\n    cd jazigo\n    go install ./...\n\n2\\. Decide where to store config, backup, log and static www files\n\nExample:\n\n    export JAZIGO_HOME=$HOME/jazigo\n    mkdir $JAZIGO_HOME\n    cd $JAZIGO_HOME\n    mkdir etc repo log www\n\nHint:\nBy default, Jazigo looks for directories 'etc', 'repo', 'log', and 'www' under $JAZIGO_HOME.\nIf left undefined, JAZIGO_HOME defaults to /var/jazigo.\nSee command line options to fine tune filesystem locations.\n\n3\\. Copy static files (CSS and images) to $JAZIGO_HOME/www\n\nExample:\n\n    # If you have downloaded jazigo using 'go get':\n    cp ~/go/src/github.com/udhos/jazigo/www/* $JAZIGO_HOME/www\n\n    # Otherwise get static files from https://github.com/udhos/jazigo/tree/master/www\n    cd $JAZIGO_HOME/www\n    wget https://raw.githubusercontent.com/udhos/jazigo/master/www/fail-small.png\n    wget https://raw.githubusercontent.com/udhos/jazigo/master/www/ok-small.png\n    wget https://raw.githubusercontent.com/udhos/jazigo/master/www/jazigo.css\n    wget https://raw.githubusercontent.com/udhos/jazigo/master/www/GitHub-Mark-32px.png\n\n4\\. Run jazigo once (see -runOnce option)\n\n`~/go/bin/jazigo -runOnce`\n\nWatch messages logged to standard output for errors.\n\nHint: Since root privileges are usually not needed, run Jazigo as a regular user.\n\n5\\. Run jazigo forever\n\n`~/go/bin/jazigo -disableStdoutLog`\n\n6\\. Open the web interface\n\nPoint web browser at: [http://localhost:8080/jazigo](http://localhost:8080/jazigo)\n      \nGlobal Settings\n===============\n\nYou might want to adjust global settings. See the Jazigo *admin* window under [http://localhost:8080/jazigo/admin](http://localhost:8080/jazigo/admin).\n\n    maxconfigfiles: 120\n    holdtime: 12h0m0s\n    scaninterval: 10m0s\n    maxconcurrency: 20\n    maxconfigloadsize: 10000000\n\n**maxconfigfiles**: This option limits the amount of files stored per device. When this limit is reached, older files are discarded.\n\n**holdtime**: When a successful backup is saved for a device, the software will only contact that specific device again *after* expiration of the 'holdtime' timer.\n\n**scaninterval**: The interval between two device table scans. If the device table is fully processed before the 'scaninterval' timer, the software will wait idly for the next scan cycle. If the full table scan takes longer than 'scaninterval', the next cycle will start immediately.\n\n**maxconcurrency**: This option limits the number of concurrent backup jobs. You should raise this value if you need faster scanning of all devices. Keep in mind that if your devices use a centralized authentication system (for example, Cisco Secure ACS), the authentication server might become a bottleneck for high concurrency.\n\n**maxconfigloadsize**: This limit puts restriction into the amount of data the tool loads from a file to memory. Intent is to protect the servers' memory from exhaustion while trying to handle multiple very large configuration files.\n\nImporting Many Devices\n======================\n\nYou can use the Web UI to add devices, but it is not designed for importing a large number of devices.\n\nThe easiest way to include many devices is by using the command line option **-deviceImport**.\n\n1\\. Build a device table using this format:\n\n    $ cat table.txt\n    #\n    # model   id   hostport      transports username password enable-password\n    #\n    cisco-ios lab1 router1905lab telnet     san      fran     sanjose\n    cisco-ios lab2 router3925lab telnet     san      fran     sanjose\n    junos     auto ex4200lab     ssh,telnet backup   juniper1 not-used\n    junos     auto 1.1.1.1:2222  ssh        backup   juniper1 not-used\n    $\n\nHint: The device id must be unique. You can generate a meaningful device id manually as you like. You can also let Jazigo create id's automatically by specifying the special id **auto**.\n\n2\\. Then load the table with the option -deviceImport:\n\n    $ ~/go/bin/jazigo -deviceImport \u003c table.txt\n\nSSH Ciphers\n===========\n\nYou can control ciphers for the SSH transport by editing these device properties:\n\n* sshclearciphers: if enabled remove all default ciphers.\n* sshaddciphers: list of ciphers to add.\n\nExample:\n\n    sshclearciphers: true # remove all default ciphers\n    sshaddciphers:\n        - aes128-ctr      # add cipher aes128-ctr\n\nUsing AWS S3\n============\n\nQuick recipe for using S3 bucket:\n\n1\\. Create a bucket 'bucketname' on AWS region 'regionname'.\n\n2\\. Authorize the client to access the bucket\n\nAn usual way is to create an IAM user, add key/secret, and put those credentials into ~/.aws/credentials:\n\n    $ cat ~/.aws/credentials\n    [default]\n    aws_access_key_id = key\n    aws_secret_access_key = secret\n\n3\\. Run jazigo pointing its config and repository paths to S3 bucket ARN:\n\n**S3 bucket ARN**: arn:aws:s3:regionname::bucketname/foldername\n\n    # Example\n    ARN=arn:aws:s3:regionname::bucketname/foldername\n    ~/go/bin/jazigo -configPathPrefix=$ARN/etc/jazigo.conf. -repositoryPath=$ARN/repo\n\nHint: You could point config and repository to distinct buckets.\n\nCalling an external program\n===========================\n\nYou can use the pseudo model **run** to call an external program to collect custom configuration.\n\nCreate a device using the model **run**, then specify the program arguments in the attribute **runprog**:\n\nExample:\n\n    # This example calls: /bin/bash -c \"env | egrep ^JAZIGO_\"\n    runprog:\n    - /bin/bash\n    - -c\n    - env | egrep ^JAZIGO_\n\nThe external program invoked by the model **run** will receive its device authentication credentials as environment variables:\n\n    JAZIGO_DEV_ID=deviceid\n    JAZIGO_DEV_HOSTPORT=host[:port] -- port is optional\n    JAZIGO_DEV_USER=username\n    JAZIGO_DEV_PASS=password\n\nThe external program is expected to issue captured configuration to stdout and then to exit with zero exit status.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudhos%2Fjazigo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fudhos%2Fjazigo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudhos%2Fjazigo/lists"}