{"id":15113847,"url":"https://github.com/aponiatowski/gossh","last_synced_at":"2025-10-23T05:31:09.637Z","repository":{"id":40292799,"uuid":"196848011","full_name":"APoniatowski/GoSSH","owner":"APoniatowski","description":"A lightweight, fast server configuration management \u0026 automation tool. With the goal to keep the terminal/console simple and the commands even simpler","archived":false,"fork":false,"pushed_at":"2023-02-25T01:13:29.000Z","size":506,"stargazers_count":6,"open_issues_count":6,"forks_count":1,"subscribers_count":1,"default_branch":"v1","last_synced_at":"2025-01-30T17:29:24.967Z","etag":null,"topics":["ansible","ansible-like","automation","bash","bash-script","golang","gossh","ssh","ssh-client","yaml"],"latest_commit_sha":null,"homepage":"","language":"Go","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/APoniatowski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":"APoniatowski"}},"created_at":"2019-07-14T14:43:49.000Z","updated_at":"2023-08-06T08:33:37.000Z","dependencies_parsed_at":"2022-08-09T16:37:11.840Z","dependency_job_id":"a5c21600-8e18-48a6-a6d9-bcbd4d2f4e91","html_url":"https://github.com/APoniatowski/GoSSH","commit_stats":{"total_commits":110,"total_committers":6,"mean_commits":"18.333333333333332","dds":"0.40909090909090906","last_synced_commit":"202a287ef11df19c35378c628bf229f6811a64cd"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/APoniatowski%2FGoSSH","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/APoniatowski%2FGoSSH/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/APoniatowski%2FGoSSH/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/APoniatowski%2FGoSSH/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/APoniatowski","download_url":"https://codeload.github.com/APoniatowski/GoSSH/tar.gz/refs/heads/v1","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237784795,"owners_count":19365931,"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":["ansible","ansible-like","automation","bash","bash-script","golang","gossh","ssh","ssh-client","yaml"],"created_at":"2024-09-26T01:23:31.815Z","updated_at":"2025-10-23T05:31:09.281Z","avatar_url":"https://github.com/APoniatowski.png","language":"Go","funding_links":["https://github.com/sponsors/APoniatowski"],"categories":[],"sub_categories":[],"readme":"# GoSSH  -  Open Source Go Infrastucture Automation Tool\n\n![](https://github.com/Aponiatowski/GoSSH/workflows/GoSSH/badge.svg)     [![Go Report Card](https://goreportcard.com/badge/github.com/APoniatowski/GoSSH)](https://goreportcard.com/report/github.com/APoniatowski/GoSSH)   [![codebeat badge](https://codebeat.co/badges/e53dab58-a0df-4699-a4d6-cfe67fbd9b81)](https://codebeat.co/projects/github-com-aponiatowski-gossh-master)\n\n\n### Current version -\u003e **v1.4.0**\n\n### Goal with this project:\nI've seen so many times that other tools like ansible, saltstack, etc, perform really well and give in-depth information. To any engineer (devops, IT, software)\nwould be extremely useful. But the common complaints I have heard (and seen it for myself), was the speed at which it does its job. I took it upon myself to learn Go\nand create an useful tool to (*hopefully*) replace those others, as there are only 4 commonly used tools out there (Ansible, Saltstack, Chef and Puppet) and got tired\nof the vendor lock-in, with a slow performing tool. Or one that is rediculously complex to configure.\n\nSo I went with the K.I.S.S. method, and keep the complexity in the code, not the tool. And boost the performance with a modern language.\n\n\n* Windows (laptop):\n##### Tesed on 22 production servers (across 8 different countries):\n\n```\n (████████████████████) 100.0% 6.2 ops/s\n22/22 Succeeded\n\nreal    0m3.775s\nuser    0m0.061s\nsys     0m0.031s\n```\n\n\n* Linux (production/staging server):\n##### Tested on 24 production servers (across 8 different countries):\n\n```\n (████████████████████) 100.0% 6.7 ops/s\n24/24 Succeeded\n\nreal    0m3.468s\nuser    0m0.430s\nsys     0m0.066s\n```\n\n\n* Linux (production/staging server):\n##### Tested on 75 pre-production servers (in the same site):\n```\n (████████████████████) 100.0% 172.5 ops/s\n75/75 Succeeded\n\nreal    0m0.455s\nuser    0m0.479s\nsys     0m0.219s\n```\n\nCommand run:\n\n```\u003e GoSSH.exe all hostname```\n\nand\n\n```\u003e GoSSH all hostname```\n\n\nAnd to my surprise, this tool outperformed saltstack (probably Ansible too). I would love to get benchmarks for the other tools. Saltstack took around 3.4 seconds \nto execute the same command (`hostname`) on the same set of servers.  I wish I could test this in a bigger environment, as the one I tested it on, was the \npre-production servers I was allowed to test it on.\n\n\n##### Note:\nLogs will be written to ```./logs/*``` in their individual directories (```/errors``` and ```/output```) in the same directory as where the application is used.  \nMake sure the pool.yml file is in ```./config``` and saved as ```pool.yml``` \n(please use the config file in this repo as a template)\n\n\n# Current usage for GoSSH:\nGoSSH [ option ] [ subcommand ] [ command ]\n\nOptions:\n* sequential, s  --Run the command sequentially on all servers in your pool\n* groups, g      --Run the command on all servers per group concurrently in your pool\n* all, a         --Run the command on all servers concurrently in your pool\n\nSubcommand:\n* run           --Run a bash script on your selected option (sequential/groups/all)\n* update        --Update all packages on servers in your pool (optional os or OS flag will do a system upgrade)\n* install       --Install packages on servers in your pool\n* uninstall     --Uninstall packages on servers in your pool\n\n### Outstanding issues\n*The known_hosts file is causing some issues (issue open for it). Ignoring known_hosts for now.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faponiatowski%2Fgossh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faponiatowski%2Fgossh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faponiatowski%2Fgossh/lists"}